如何用Fiddler拦截Axios的HTTPS请求?Electron调试遇SSL问题
Electron + Axios 调试疑难:Network面板无请求 & Fiddler SSL解析失败
问题背景
用Electron开发爬虫时遇到两个核心问题:
- Axios发送的请求完全不显示在Electron DevTools的Network面板中
- 改用Fiddler捕获HTTPS请求时触发SSL解析异常,已开启Fiddler的「信任根证书」「捕获HTTPS流量」「允许远程连接」选项,但仍收到SSL握手提示
Axios测试代码
const axios = require("axios"); // 请求Google axios .get("https://www.google.com", { proxy: { host: "127.0.0.1", port: 8866, }, }) .then((res) => { console.log(res.data); }) .catch((err) => { console.log(err); });
Fiddler提示信息
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.
补充测试情况
用Python requests测试相同代理配置可正常被Fiddler捕获,代码如下:
import requests proxies = { 'http': '127.0.0.1:8866', 'https': '127.0.0.1:8866' } requests.get('https://www.google.com',proxies=proxies,verify=False)
解决方案
1. 让Axios请求显示在Electron DevTools
Axios如果是在主进程中发送的请求,DevTools默认只监控渲染进程的网络请求,所以看不到。可选解决方法:
- 将请求移至渲染进程发送,此时Network面板会正常展示请求详情
- 若必须在主进程发送,可通过Electron的
sessionAPI监听网络请求:const { session } = require('electron') session.defaultSession.webRequest.onBeforeRequest((details, callback) => { console.log('主进程请求地址:', details.url) callback({}) }) - 启动Electron时添加
--inspect=5858参数,打开chrome://inspect页面调试主进程,查看网络请求日志
2. 解决Fiddler捕获Axios HTTPS请求的SSL问题
Electron有独立的证书信任机制,不会默认使用系统信任的Fiddler证书,可通过以下方式处理:
- 给Axios配置自定义
httpsAgent,临时跳过证书验证(仅调试环境使用):const axios = require("axios"); const https = require('https'); const agent = new https.Agent({ rejectUnauthorized: false }); axios.get("https://www.google.com", { proxy: { host: "127.0.0.1", port: 8866 }, httpsAgent: agent }) - 导入Fiddler证书至Electron信任存储:
- 从Fiddler导出根证书(菜单路径:Tools > Options > HTTPS > Actions > Export Root Certificate to Desktop)
- 在Electron中通过
session自定义证书验证逻辑:const { session } = require('electron') session.defaultSession.setCertificateVerifyProc((request, callback) => { callback(0) // 0表示信任当前证书 })
- 启动Electron时添加
--ignore-certificate-errors参数,强制忽略证书错误(仅调试用)
内容的提问来源于stack exchange,提问作者Relaxing
相关产品推荐
相关产品推荐

