带有请求的HTTPS代理:[Errno 8] _ssl.c:504:EOF违反协议

时间:2013-06-02 14:17:22

标签: python ssl https proxy python-requests

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

使用urllib2的{​​{1}}时,我没有遇到此错误,所以我认为这不在我的代理方面。

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 传递给请求,仍然会发生同样的错误。

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

1 个答案:

答案 0 :(得分:3)

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

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