You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装urllib3≥2后requests无法自动解压gzip响应的问题

urllib3 v2+下requests自动解压gzip响应的问题解析及解决方法

urllib3 v2.x确实调整了自动解压的行为,这是导致你遇到问题的核心原因:

  • urllib3 2.0起,默认不再自动处理带有Content-Encoding: gzip的响应,必须显式启用解压功能。而旧版本requests依赖urllib3的默认解压逻辑,因此升级urllib3后自动解压失效。

解决方法

  1. 显式为requests启用自动解压
    你可以通过自定义HTTP适配器全局开启解压,或者在单个请求中指定参数:

    • 全局启用(推荐,适配所有请求):
      from requests import Session
      from requests.adapters import HTTPAdapter
      
      class AutoDecodeAdapter(HTTPAdapter):
          def init_poolmanager(self, *args, **kwargs):
              kwargs["decode_content"] = True
              super().init_poolmanager(*args, **kwargs)
      
      session = Session()
      session.mount("http://", AutoDecodeAdapter())
      session.mount("https://", AutoDecodeAdapter())
      
      # 后续使用session发起请求即可自动解压gzip响应
      response = session.get("your-api-url")
      data = response.json()
      
    • 单个请求启用:
      import requests
      response = requests.get("your-api-url", decode_content=True)
      data = response.json()
      
  2. 回退urllib3版本(临时方案)
    如果你暂时不想适配新版本,可在依赖配置中固定urllib3<2,恢复原有自动解压行为,但这并非长期解决方案。

补充说明

你手动使用zlib.decompress的方式确实能解决问题,但显式启用requests/urllib3的自动解压更贴合原有代码逻辑,无需重复实现解压逻辑。

内容的提问来源于stack exchange,提问作者Jon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:47:17