python - 请求 : [Errno 8] _ssl. c:504 的 HTTPS 代理:EOF 发生在违反协议(protocol)的情况下

标签 python ssl https proxy python-requests

我在 Windows 7 x64 上使用 Requests 1.2.3,并尝试通过将 proxies 参数传递给请求来使用 HTTPS 代理通过 HTTPS 连接到(任何)站点。

我在使用 urllib2ProxyHandler 时没有遇到这个错误,所以我认为它不是在我的代理端。

>>> opener = urllib2.build_opener(urllib2.ProxyHandler({'https': 'IP:PORT'}))
>>> resp = opener.open('https://www.google.com')
>>> resp.url
'https://www.google.co.uk/'
>>> resp = requests.get('https://www.google.com', proxies={'https': 'IP:PORT'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests\adapters.py", line 331, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

我可能应该注意到,如果我将 verify=False 传递给请求,同样的错误仍然会发生。

有什么建议吗?我查看了相关问题,但没有对我有用的问题。

最佳答案

我怀疑您的代理是一个可以使用 https 的 http 代理(常见情况) 问题是,如果请求本身是 https,则请求使用 https 与代理通信。 为您的代理使用显式协议(protocol) (http) 应该可以解决问题:proxies={'https': 'http://IP:PORT'}

另请查看 https://github.com/kennethreitz/requests/issues/1182

关于python - 请求 : [Errno 8] _ssl. c:504 的 HTTPS 代理:EOF 发生在违反协议(protocol)的情况下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883595/

相关文章:

python - 在字典中按其键值重复每个成员而不使用 np.repeat?

python - 如何使用 python 将列添加到现有的 excel 文件?

python - 使用带有 TLS 的请求不会提供 SNI 支持

C#:强制使用 TLS1.2 但 Https 服务器仍然给出常见算法错误

python - 使用 Google Python API 客户端获取所有电子邮件

python - 我不断得到列表超出范围尝试将 mysql 数据库转换为 html

c# - 使用 HttpClient 的多个证书

ssl - 使用安全的后端即服务 (BaaS)(例如 Parse.com)是否是避免使用 SSL 网站的借口?

php - 在 PHP 中使用 $_GET 和 https

php - 无法在 WAMPSERVER 2.5 上设置 HTTPS