【问题标题】:Python: SSLError, bad handshake, Unexpected EOFPython:SSLError、错误的握手、意外的 EOF
【发布时间】:2018-04-18 23:08:53
【问题描述】:

我在使用 Python 请求连接到特定站点时遇到问题并收到此错误:

HTTPSConnectionPool(host='XXXXXXXXX', port=443): 最大重试次数超出 url: / (由 SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')",),))

我该如何解决这个问题? (设置 verify=False 没有任何区别)我怀疑这里有问题的服务器,因为当我运行他们的测试时,它的总体评级为 F @ ssllabs

我对 Python 和请求还很陌生

我的代码:

import requests
try:
    site = requests.get('https://XXXXXXXXXX', verify=True)
    print(site)
except requests.exceptions.RequestException as e:
    print(e)
    pass

【问题讨论】:

标签: python python-requests


【解决方案1】:

面对同样的错误,我在执行pip install ndg-httpsclient 后问题就迎刃而解了。 yum install python-ndg_httpsclientapt-get install python-ndg-httpsclient(或 apt-get install python3-ndg-httpsclient)也可能有效。

【讨论】:

  • 它似乎不再可用了。我收到一条错误消息“找不到满足 python-ndg_httpsclient 要求的版本(来自版本:)没有为 python-ndg_httpsclient 找到匹配的发行版”
  • @DakshShah ...通过点子?
【解决方案2】:

正如其他问题https://stackoverflow.com/a/36499718/1657819 中提到的,如果您在代理下可能会发生此错误,因此禁用代理可能会有所帮助

unset https_proxy

【讨论】:

  • 我也遇到过这种情况,但我需要一个代理来访问我的目标网址。对这种情况有什么建议吗?
  • @Tranfer我会遇到和你一样的问题吗?有什么建议吗?
【解决方案3】:

根本原因可能是 requests 库中的 this open bug:“设置 REQUESTS_CA_BUNDLE 环境变量时忽略 Session.verify=False”。

我们已经看到类似问题突然出现在特定主机上。事实证明,env 变量最近被设置在那里,这开始导致请求产生 session.verify not False,尽管被初始化为 False。一旦我们删除 REQUESTS_CA_BUNDLE 环境变量,错误就会停止。

【讨论】:

  • OP 问题不会产生相同的错误消息:/
  • @MathieuK。公平点,在我们的例子中,错误 作为 OP 的(而不是在链接的 requests 错误中)。删除环境变量为我们解决了这个问题。
【解决方案4】:

设置verify = False,会有帮助:

import requests
try:
    site = requests.get('https://XXXXXXXXXX', verify=False)
    print(site)
except requests.exceptions.RequestException as e:
    print(e)
    pass

或尝试urllib:

import requests
import urllib.request
import ssl

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

try:
    site =urllib.request.urlopen(url, context=ctx)
    print(site.read().decode())
except requests.exceptions.RequestException as e:
    print(e)
    pass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2018-08-16
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多