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

开启Fiddler后Python requests请求失败 pip报check_hostname错误解决方法

报错原因

启动Fiddler后工具会自动修改系统全局代理规则,Python生态的requests、pip底层依赖urllib3库发起HTTPS请求时,在代理转发场景下未正确传递目标服务的server_hostname参数做SSL域名校验,就会触发ValueError: check_hostname requires server_hostname报错,该问题常见于Python 3.7+版本搭配旧版urllib3、或Fiddler开启HTTPS流量解密但未做兼容配置的场景。

解决方法

按实际使用场景选对应方案即可:

  • 不需要抓Python相关流量时,临时关闭Fiddler HTTPS解密
    打开Fiddler顶部菜单栏Tools -> Options -> HTTPS,取消勾选Decrypt HTTPS traffic,保存配置后重启Fiddler,该操作不影响HTTP流量抓包,也不会触发Python侧的SSL校验错误。
  • 修复urllib3兼容bug
    旧版本urllib3存在代理场景下的hostname参数传递缺陷,先临时关闭Fiddler,或执行命令绕过代理升级urllib3:
    pip install --upgrade urllib3 --no-proxy
    
    升级完成后重新开启Fiddler,绝大多数场景下requests、pip可正常走代理访问网络,不会再抛出该错误。
  • 需要抓取Python HTTPS流量时的完整配置
    如果需要用Fiddler解密Python发起的HTTPS请求,除升级urllib3外,还要把Fiddler根证书加入Python信任链:
    1. 进入Fiddler的Tools -> Options -> HTTPS页,点击Actions -> Export Root Certificate to Desktop,将根证书FiddlerRoot.cer导出到桌面
    2. 安装certifi库拿到Python默认的证书存储路径:
      import certifi
      print(certifi.where())
      
    3. 用文本编辑器打开上一步输出的cacert.pem文件,把FiddlerRoot.cer的证书内容追加到文件末尾保存即可。
  • 临时绕过方法(仅本地调试使用,禁止生产环境使用)
    不需要走Fiddler代理时,可以直接在执行命令或写代码时跳过系统代理:
    • pip执行时加--no-proxy参数绕过代理:
      pip install 目标包名 --no-proxy
      
    • requests请求时显式指定不走代理、临时关闭校验:
      import requests
      requests.get("目标URL", proxies={"http": None, "https": None}, verify=False)
      
  • 不需要Fiddler抓全局流量时,关闭自动代理配置
    进入Fiddler的Tools -> Options -> Connections页,取消勾选Act as system proxy on startup,保存后重启Fiddler,工具就不会自动修改系统全局代理,Python请求会直连网络,不会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:17