我在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
传递给请求,仍然会发生同样的错误。
有什么建议吗?我看过相关的问题,但没有什么对我有用。
答案 0 :(得分:3)
我怀疑您的代理是一个http代理,您可以使用https(常见情况)
问题是,如果请求本身https,请求使用https与代理进行通信。
对代理使用显式协议(http
)应该可以解决问题:proxies={'https': 'http://IP:PORT'}