2012-11-01 16 views
13

मैं पिछले कुछ दिनों में अपने बालों को खींच रहा हूं, एक मोजे 4/5 प्रॉक्सी पर DNS लीक को रोकने के लिए एक अच्छे समाधान के लिए चारों तरफ देख रहा हूं।प्रॉक्सी पर DNS?

मैंने सॉक्सिपी (-ब्रैंच) मॉड्यूल में देखा है, और कई चीजों को लपेटने की कोशिश की है (urllib, urllib2, dnstools), लेकिन वे सभी अभी भी DNS अनुरोधों को रिसाव करने लगते हैं। तो pyCurl करता है।

मुझे पता है कि प्रॉक्सीचेन्स/प्रॉक्सीरेसोलव एक मोजे 4/5 प्रॉक्सी पर DNS अनुरोधों को फेंक सकता है, और यह कुछ एलडी_PRELOAD पुस्तकालयों के साथ बंदर-पैच सॉकेट के कार्यों के लिए जादू करता है, जैसे सॉक्सिपी करता है, लेकिन मुझे लगता है कि ऐसा नहीं लगता यह पता लगाएं कि यह किसी मोजे 4 या मोजे 5 प्रॉक्सी पर DNS क्यों नहीं भेजता है।

मुझे लगता है कि लिनक्स के लिए मैं libproxychains.so के साथ CTypes का उपयोग करने में सक्षम हो सकता हूं, लेकिन मेरा संकल्प करने के लिए, लेकिन मुझे कुछ मल्टी-प्लेटफॉर्म की तलाश है, इसलिए मुझे लगता है कि सॉकेट मॉड्यूल बंदर-पैचिंग जाने का तरीका है।

क्या किसी ने इसे पाने के लिए एक अच्छा तरीका निकाला है? मैं पोर्टेबिलिटी के लिए इसे सभी कोड में करना चाहता हूं, और मैं एक और प्रॉक्सी सर्वर चलाने का सहारा नहीं लेना चाहता!

धन्यवाद!

उत्तर

17

वैसे मैंने इसे समझ लिया। सॉकेट का उपयोग शुरू करने से पहले आपको अपनी डिफ़ॉल्ट प्रॉक्सी सेट करने की आवश्यकता है (उदा। इससे पहले कि आप इसका उपयोग करने वाले किसी भी आयात को आयात करें।)। आपको सॉकेट के getaddrinfo भाग को बंदरगाह करने की भी आवश्यकता है, फिर सबकुछ ठीक काम करता है।

import socks 
import socket 

# Can be socks4/5 
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,'127.0.0.1', 9050) 
socket.socket = socks.socksocket 

# Magic! 
def getaddrinfo(*args): 
    return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))] 
socket.getaddrinfo = getaddrinfo 

import urllib 

यह यूआरएलआईबी के बदले आपके द्वारा आयात किए जाने वाले मॉड्यूल के माध्यम से सभी DNS अनुरोधों को काम करता है और प्रॉक्सी करता है। उम्मीद है कि यह किसी को वहां मदद करता है!

संपादित करें: आप पर मेरे लिए इस कोड के लिए blog

+1

धन्यवाद अद्यतन कोड और सामान मिल सकता है। आपके ब्लॉग डाउन होने के बाद से, जादुई भाग को समझाना अच्छा होगा जो DNS को ठीक से काम करता है। – gparent

+2

आह, अच्छा कॉल! उसके लिए माफ़ करना। इसे अनदेखा कर दिया गया और आपने मुझे मेरी शनिवार की रात के साथ वास्तव में कुछ करने के लिए प्रेरित किया है। http://fitblip.pub/2012/11/13/proxying-dns-with-python/ (कृपया किसी भी पागल सीएसएस चीजों को क्षमा करें जो हो रहा है) – Fitblip

+1

आपको बहुत बहुत धन्यवाद! – gparent

संबंधित मुद्दे