wrap_module 函数实现:
def wrap_module(module):
"""Attempts to replace a module's socket library with a SOCKS socket.
Must set a default proxy using set_default_proxy(...) first. This will
only work on modules that import socket directly into the namespace;
most of the Python Standard Library falls into this category."""
if socksocket.default_proxy:
module.socket.socket = socksocket
else:
raise GeneralProxyError("No default proxy specified")
必须先使用set_default_proxy(…)设置默认代理。这只在直接将socket导入命名空间的模块上有效;大多数Python标准库都属于这一类
实例如下
def urllib2_SOCKS5_test():
socks.set_default_proxy(socks.soCKS5,"127.0.0.1",1081)
socks.wrap_module(urllib2)
status = urllib2.urlopen("http://api.externalip.net/ip/").getcode()
assert status == 200