如何在使用PySocks和Socks5代理时禁用SSL证书的验证?

时间:2016-01-22 13:26:32

标签: python ssl urllib2

这似乎让我接近: 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

这可能吗?

1 个答案:

答案 0 :(得分:0)

对于上下文变量,我会这样做(未经测试的代码):

context = ssl.create_default_context()
context.verify_mode = CERT_NONE
context.check_hostname = False

最后一行不是必需的,因为我们没有检查证书,但它是以防万一。现在我不推荐这个,因为这不能确保你与你认为你是谁通信,我不建议使用3以下的任何python版本,因为他们知道有很大的安全问题See Here