xeo*_*eor 4 python ssl python-requests
使用像这样的Python 请求
import requests;
requests.get('https://internal.site.no')
Run Code Online (Sandbox Code Playgroud)
SSLError: ("bad handshake: Error([('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')],)",)
Run Code Online (Sandbox Code Playgroud)
但是,他们建议没有丢失的包装.即使设置也会verify=False给我带来同样的错误.Curl在尝试访问同一站点时没有错误.
版本:
最可能的错误是requests服务器无法协商使用的密码.
检查curl使用的是什么;
curl --verbose https://internal.site.no/
Run Code Online (Sandbox Code Playgroud)
它会给你很多输出,但你正在寻找的是类似的SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256.
查看从2.11.1到2.12.0请求的差异,显示了urllib3的新版本(到版本1.19).也许这是在你这里咬你的3des的删除?
如果你检查你的curl --verbose ...输出使用密码对这个有用的密码名称映射列表.您可以尝试将openssl名称的名称添加到requests接受的示例中(您可以在app /脚本的开头执行此操作):
import requests
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':ADH-AES128-SHA256'
Run Code Online (Sandbox Code Playgroud)
如果curl显示它正在使用TLS_DH_anon_WITH_AES_128_CBC_SHA256(作为示例).
另一个方便的提示是使用nmap脚本ssl-enum-ciphers,如下所示:
nmap --script ssl-enum-ciphers -p 443 internal.site.no
Run Code Online (Sandbox Code Playgroud)
获取它所发现的支持密码列表(注意,脚本可能有噪音)...
我也有同样的问题。检查您使用的请求版本。
import requests
print requests.__version__
Run Code Online (Sandbox Code Playgroud)
您应该尝试降级到2.11.1版本。我做到了,它解决了我的问题。为此,请在终端中发出以下命令
pip uninstall requests
pip install requests==2.11.1
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
13297 次 |
| 最近记录: |