我在 Windows 7 x64 上使用 Requests 1.2.3,并尝试通过将 proxies
参数传递给请求来使用 HTTPS 代理通过 HTTPS 连接到(任何)站点。
我在使用 urllib2
的 ProxyHandler
时没有遇到这个错误,所以我认为它不是在我的代理端。
>>> 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'}
关于python - 请求 : [Errno 8] _ssl. c:504 的 HTTPS 代理:EOF 发生在违反协议(protocol)的情况下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883595/