如何捕获Visual Studio Code中Python代码的HTTP(S)请求
捕获Visual Studio Code中Python代码的HTTP(S)流量(Fiddler无效的解决办法)
核心原因:Python默认不自动走系统代理
Python的HTTP请求库(如requests、urllib)默认不会继承系统代理配置,而Fiddler依赖代理拦截流量,这是抓不到包的主要原因。以下是针对性解决步骤:
1. 手动为Python请求配置Fiddler代理
根据你使用的HTTP库,直接指定Fiddler的代理地址(默认是127.0.0.1:8888):
requests库:
单个请求设置代理:import requests proxies = { 'http': 'http://127.0.0.1:8888', 'https': 'http://127.0.0.1:8888' } resp = requests.get('https://target-url.com', proxies=proxies)全局设置代理(所有请求自动生效):
import os os.environ['HTTP_PROXY'] = 'http://127.0.0.1:8888' os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:8888' # 后续的requests请求都会走Fiddler代理 import requests resp = requests.get('https://target-url.com')urllib库:
from urllib.request import ProxyHandler, build_opener, install_opener # 配置代理处理器 proxy_handler = ProxyHandler({ 'http': 'http://127.0.0.1:8888', 'https': 'http://127.0.0.1:8888' }) opener = build_opener(proxy_handler) install_opener(opener) # 发送请求 from urllib.request import urlopen resp = urlopen('https://target-url.com')
2. 解决HTTPS证书验证问题
Fiddler解密HTTPS流量需要根证书被Python信任,否则请求会直接失败或绕过代理:
- 导出Fiddler根证书:打开Fiddler →
Tools > Options > HTTPS→Actions > Export Root Certificate to Desktop - 信任证书的两种方式:
- 测试环境临时方案:禁用证书验证(仅限调试用,不要在生产环境使用)
- requests库:添加
verify=False参数resp = requests.get('https://target-url.com', proxies=proxies, verify=False) - urllib库:取消SSL验证
import ssl ssl._create_default_https_context = ssl._create_unverified_context
- requests库:添加
- 长期方案:将导出的证书安装到Python的信任证书目录,或者通过
REQUESTS_CA_BUNDLE环境变量指定证书路径。
- 测试环境临时方案:禁用证书验证(仅限调试用,不要在生产环境使用)
3. 检查VS Code终端的代理配置
VS Code的集成终端可能没有继承系统代理,手动在终端设置环境变量后再运行脚本:
# Windows CMD set HTTP_PROXY=http://127.0.0.1:8888 set HTTPS_PROXY=http://127.0.0.1:8888 # PowerShell $env:HTTP_PROXY = "http://127.0.0.1:8888" $env:HTTPS_PROXY = "http://127.0.0.1:8888"
4. 确认Fiddler的捕获规则
- 确保Fiddler开启了HTTPS捕获:
Tools > Options > HTTPS,勾选Capture HTTPS CONNECTs和Decrypt HTTPS traffic - 检查过滤规则:打开Fiddler的
Filters标签,确认没有设置排除Python进程(PID)或特定域名的规则,避免流量被过滤掉。
内容的提问来源于stack exchange,提问作者Efe
相关产品推荐
相关产品推荐

