这似乎让我很接近:SOCKS5 proxy using urllib2 and PySocks,但似乎如果我试图添加上下文来禁用SSL验证,它就会忽略它。我不是最擅长python的人,但是看起来继承PySocks中的类和HTTPShandler的事情是一样的。如果是这样的话,我想我可以直接传入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这个是可能的吗?
发布于 2016-03-04 23:47:46
对于上下文变量,我会这样做(未测试的代码):
context = ssl.create_default_context()
context.verify_mode = CERT_NONE
context.check_hostname = False最后一行不是必需的,因为我们不是在检查证书,但它只是以防万一。现在我不建议这样做,因为这不能确保你正在与你认为你是谁进行交流,我也不建议使用低于3的任何python版本,因为它们有很大的安全问题,See Here。
https://stackoverflow.com/questions/34947808
复制相似问题