当前位置: 首页 > 面试题库 >

Python-request.exceptions.SSLError-dh键太小

甄德寿
2023-03-14
问题内容

我正在使用Python和请求抓取一些内部页面。我已关闭SSL验证和警告。

requests.packages.urllib3.disable_warnings()
page = requests.get(url, verify=False)

在某些服务器上,我收到无法逾越的SSL错误。

Traceback (most recent call last):
  File "scraper.py", line 6, in <module>
    page = requests.get(url, verify=False)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 71, in get
    return request('get', url, params=params, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 57, in request
    return session.request(method=method, url=url, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/adapters.py", line 477, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: SSL_NEGATIVE_LENGTH] dh key too small (_ssl.c:600)

在Windows和OSX中,在Cygwin内外均会发生这种情况。我的研究表明服务器上的OpenSSL已过时。我正在寻找理想的修复客户端。

编辑:我能够通过使用密码集来解决此问题

import requests

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
try:
    requests.packages.urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST += 'HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass

page = requests.get(url, verify=False)

问题答案:

禁用警告或证书验证将无济于事。根本的问题是服务器使用的DH密钥较弱,可能会在Logjam
Attack中
被滥用。

要解决此问题,您需要选择一种不使用Diffie
Hellman密钥交换且因此不受弱DH密钥影响的密码。并且该密码必须由服务器支持。服务器支持什么是未知的,但您可以尝试使用以下密码AES128-SHA或一组密码HIGH:!DH:!aNULL



 类似资料:
  • 问题内容: 我正在通过SSL连接到数据库Google Cloud SQL。我使用codeigniter 3.0进行了此操作,尽管mysqli驱动程序进行了一些修改以允许此功能。 几个月来一直运作良好。但是,它 刚刚 开始返回此警告: 我认为这是主要问题,但我不知道那是什么意思。我已经搜索了Diffie- Hellman密钥交换以及“密钥太小”消息,但是运气不高。 这是否表明服务器上的密钥已被篡改?

  • 我得到了几次配额的增加,虽然这让作业比以前继续,但它仍然以相同的错误结束(尽管shuffle键的大小更大了)它现在似乎没有因为配额相关问题而碰壁。 除了放弃Dataprep和回到map Reduce之外,还有什么想法吗?

  • 为了添加另一个信息,我有一个tasks表,它当然需要引用来跟踪分配给谁,我还有一个列跟踪创建任务的用户。这将分别是和。 虽然有更多的表引用回该键。我可能已经有8个推荐人了。我相信到目前为止我已经把它设计得很好了,但是根据我所提到的,这听起来好吗?

  • 问题内容: 用户项目的亲和力和建议: 我正在创建一个表,建议“购买此商品的客户也购买了算法” 输入数据集 需要输出 该代码在示例数据集上运行良好,但是 该代码花费的时间太长,无法在包含100,000行的数据集中运行。请帮助我优化代码。 问题答案: 此处的关键是创建productId的笛卡尔积。参见下面的代码, 方法2

  • 问题内容: 我从这段代码中得到该异常: 这行是引发异常的行。该s为对象。有人有什么想法吗? 问题答案: 是一个,默认情况下,您仅迭代键(字符串)。 由于具有两个以上的键*,因此无法将它们解压到“ ”中,因此引发了异常。 在Python 2. x中 ,要遍历键和值(“ ”),我们使用。 但是,由于无论如何都将键扔掉了,因此还可以简单地遍历字典的值: 在Python 3. x中 ,preferred

  • 问题内容: 我遇到一个奇怪的情况: 我正在卷曲这样的网址: 如果我尝试使用以下方法进行测试: 这是说: 我在这里引起什么问题? 编辑 :这是idna的追溯。我猜想,它会尝试按分割输入,在这种情况下,第一个标签为空,这是第一个标签之前的速度。 问题答案: 问题是您的URL无法按照rules正确编码,该规则控制如何转换国际化域名: 域名的ASCII和非ASCII形式之间的转换是通过称为ToASCII和