这似乎让我接近: SOCKS5 proxy using urllib2 and PySocks 但似乎如果我尝试添加上下文来禁用SSL验证,它就会忽略它。 我不是python中最好的,但看起来PySocks中类的继承采用与HTTPShandler相同的东西。 https://github.com/Anorov/PySocks/blob/master/sockshandler.py 如果是这样,我想我可以在没有问题的情况下传递context = context。 但它不起作用。 这是我的方法......
def make_http_call(url, socks_hostname=None, socks_port=None, socks_username=None, socks_password=None, params=None):
"""
Make a HTTP GET request to given url.
"""
import ssl
url = add_url_params(url, params)
opener = urllib2.build_opener()
context = ssl._create_unverified_context
if socks_hostname and socks_port and socks_username and socks_password:
# Use proxy instead if params are provided
print "Socks Proxy is being used..."
opener = urllib2.build_opener(
SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, socks_hostname, socks_port, True, socks_username, socks_password, context=context))
else:
print "Socks Proxy not in use..."
request = urllib2.Request(url)
response = opener.open(request).read()
return response
这可能吗?
答案 0 :(得分:0)
对于上下文变量,我会这样做(未经测试的代码):
context = ssl.create_default_context()
context.verify_mode = CERT_NONE
context.check_hostname = False
最后一行不是必需的,因为我们没有检查证书,但它是以防万一。现在我不推荐这个,因为这不能确保你与你认为你是谁通信,我不建议使用3以下的任何python版本,因为他们知道有很大的安全问题See Here。