1

我使用SocksiPy模块通过 SOCKS 代理代理我的 urllib2 请求:

import socks

# Set the proxy information
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, 'x.x.x.x', 9050)

# Route an HTTP request through the SOCKS proxy 
socks.wrapmodule(urllib2)

print urllib2.urlopen('http://www.google.com').read()

# other urllib2 requests to follow here..

也许我的问题很简单:如何从一个模块中解开urllib2 模块socks,以便从 localhost(没有代理支持)发出以下 urllib2 请求,并且可能没有设置调用setdefaultproxy没有参数?

我尝试再次导入 urllib2 库,但没有发生任何事情..

在我调用这个之后,我发现它工作正常:

setdefaultproxy()

但这是正确的方法吗?

4

1 回答 1

3

在此处将我的 Socksipy 分支与 urllib2 帮助程序库一起使用:https ://github.com/Anorov/PySocks

示例代码,适用于您的情况:

import socks, urllib2
from sockshandler import SocksiPyHandler
proxy_opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, "IP", 9050))
print proxy_opener.open("http://whatismyip.org/").read()

您可以设置不同的开启程序以使用不同的代理,或者在您的情况下,您可以简单地使用默认的 urllib2 处理程序或 urllib2.urlopen,它不会通过代理连接。

于 2013-03-07T08:12:51.657 回答