mg_*_*mg_ 8 python ssl connect python-requests
自从我开始为此寻找解决方案以来,已经过了几天.
我一直在尝试使用请求通过代理发出https请求而没有运气.
尽管这已包含在我的一个更大的项目中,但它完成了这一切:
import requests
prox = 'xxx.xxx.xxx.xxx:xxx' # fill in valid proxy
r = requests.get('https://ipdb.at', proxies={'http': prox,
'https': prox})
Run Code Online (Sandbox Code Playgroud)
我尝试了kward verify = False,但我不断得到相同的错误或其变体:
Traceback (most recent call last):
File "/Users/mg/Desktop/proxy_service.py", line 21, in <module>
verify=False)
File "/Library/Python/2.7/site-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 279, in request
resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 374, in send
r = adapter.send(request, **kwargs)
File "/Library/Python/2.7/site-packages/requests/adapters.py", line 213, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
[Finished in 20.4s with exit code 1]
Run Code Online (Sandbox Code Playgroud)
我正在使用最新版本的请求和openssl以及2.7.3 for python.我在mac mountain lion 10.8.2以及Windows 7上进行了测试.
我搜索了这个,看到其他人有类似的问题.我在库请求和urllib3上找到了相关的pull请求,同时也看到了有关这是http连接动词的错误实现的信息.我找到了一个修复程序,使用自定义适配器(我不记得确切,但我认为这是正确的术语)使用自定义ssl协议.试了一下,没人帮忙.
所以,我正在寻找更多信息.你知道发生了什么,我可以修理它等等......
欢迎大家帮忙,谢谢大家!
PS:我尝试了几个代理,我确信它们不是问题.
Tim*_*ark 15
我有同样的问题但是在尝试使用oauth2client时(谷歌库使用oauth2来反对他们的API).经过一天的讨论("实验")后,我发现我的env变量设置如下:
https_proxy=https://your-proxy:port
Run Code Online (Sandbox Code Playgroud)
将此更改为
https_proxy=http://your-proxy:port
Run Code Online (Sandbox Code Playgroud)
完全解决了我的问题.据推测,这意味着从客户端到代理的初始握手现在未加密,但在此之后,https必须直接流动.我不相信我的公司代理配置为无论如何都要谈论https.
但请注意,我的浏览器在之前的设置中表现都很好.也许他们在无法使用https后无声地尝试通过http建立代理连接.
谷歌搜索显示了将https_proxy设置为http或https地址的示例.我想这取决于代理的配置方式.
浏览器/操作系统配置弹出窗口中的"使用所有协议"按钮可以轻松地使用我的设置.
但是我不确定这是不是你的问题.您的代码表明您已经为http和https使用完全相同的代理设置.
顺便说一下,这一切都在Ubuntu 12.04.1上.
| 归档时间: |
|
| 查看次数: |
18298 次 |
| 最近记录: |