【解决】Httpx UNSAFE_LEGACY_RENEGOTIATION_DISABLED
本文最后更新于 2025-09-11,文章内容可能已经过时。
【解决】Httpx UNSAFE_LEGACY_RENEGOTIATION_DISABLED
0x01 前言
之前是用Python中的requests库出现了这个问题,当时几乎翻遍了网上的所有资料,都没有很好的解决这个问题,包括但不限于以下尝试
- 添加openssl.cnf:这玩意儿好像有用,是需要手动加到环境里的,但是我写的程序需要分发,不太好搞,就pass了
- 添加TLSAdapter:这个应该还是有点用,但是我后面换框架了,采用了另外一种方式,忘了当时这个是否有用了
- 安装cryptography==36.0.2
- 设置ssl._create_default_https_context = ssl._create_unverified_context
后面改用httpx了,刚开始用的时候也没问题,后面访问部分网站的时候又报UNSAFE_LEGACY_RENEGOTIATION_DISABLED这个错了,当时解决了没多想,然后最近写程序这玩意儿又蹦出来了,网上找了半天有没有很好的解决方案,于是翻了一下之前解决的代码,发现有用,贴出来做个记录。
0x02 HTTPX 解决代码
import httpx
import ssl
# 解决SSL报错
#
ctx = ssl.create_default_context() # 这两种ctx和下面3个协议排列组合,理论上来说,总有一种情况可通
# ctx = ssl._create_unverified_context()
ctx.options |= ssl.PROTOCOL_TLSv1_2 # TLSv1.2 (如果这个不生效,把这一行注释,依次试一下下面几个)
# ctx.options |= ssl.PROTOCOL_TLSv1 # TLSv1
# ctx.options |= ssl.PROTOCOL_TLSv1_1 # TLSv1.1
client = httpx.Client(headers=header_xueba, verify=ctx, timeout=30.0)
client.get("https://www.baidu.com")
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 苇逸
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果