如何让Python requests库使用MD5进行HTTP摘要认证?
强制Python requests使用MD5进行HTTP摘要认证
requests库的HTTPDigestAuth默认会优先选择服务器声明支持的最强哈希算法(比如SHA256),要强制改用MD5,你可以通过自定义认证类覆盖默认的算法选择逻辑:
实现步骤
- 继承
requests.auth.HTTPDigestAuth类 - 重写
_choose_digest方法,固定返回MD5算法 - 使用自定义认证类发起请求
示例代码
import requests from requests.auth import HTTPDigestAuth class MD5DigestAuth(HTTPDigestAuth): def _choose_digest(self, auth_header): # 忽略服务器提供的其他算法,强制选择MD5 return 'MD5' # 替换为你的目标服务器地址、用户名和密码 url = "你的服务器URL" response = requests.get(url, auth=MD5DigestAuth('你的用户名', '你的密码')) # 查看请求结果 print(response.status_code) print(response.text)
原理说明
HTTPDigestAuth的_choose_digest方法原本会从服务器返回的WWW-Authenticate头中挑选优先级最高的哈希算法,自定义子类重写该方法后,直接指定使用MD5,绕过默认的算法选择逻辑,适配存在SHA256兼容bug的服务器。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

