在过去的几天里,我一直在寻找一个好的解决方案来防止通过 socks4/5 代理的 DNS 泄漏。
我查看了 SocksiPy(-branch) 模块,并试图包装一些东西(urllib、urllib2、dnstools),但它们似乎仍然泄露了 DNS 请求。pyCurl 也是如此。
我知道 proxychains/proxyresolv 可以通过 socks4/5 代理抛出 DNS 请求,并且它使用一些 LD_PRELOAD 库来猴子补丁套接字的功能,就像 SocksiPy 一样,但我似乎无法弄清楚为什么它不通过 socks4 或 socks5 代理发送 DNS。
我想对于 linux,我可能可以将 CTypes 与 libproxychains.so 一起使用来解决问题,但我正在寻找多平台的东西,所以我认为猴子修补套接字模块是要走的路。
有没有人想出一个解决这个问题的好方法?为了可移植性,我想在代码中完成这一切,我不想求助于运行另一个代理服务器!
谢谢!