Appearance
抓包
应用抓包
在前端场景一般我们会涉及如下宿主环境
- 浏览器或 webview 内核
- 移动端设备开发
- ios
- android
- 鸿蒙
- 小程序
- 端侧开发
- electron
- react-native
- flutter
- 服务端
- nodejs
- deno
- bun
node 抓包
参考 google 论坛说明 Node http/https 未采用系统代理,所以无法转包,需要使用 第三方工具抓取请求,具体详见 Use Dev Proxy with Node.js applications, v24 版本开始后 内置代理支持, 使用详见 built in proxy
注意 v22.21.0 也支持 built in proxy, 详见 Proxy Configuration
典型抓包方案如下
低于 v24 且非 v22.21.0 版本
安装 global-agent
开启代理工具
charles默认代理端口http://127.0.0.1:8888, 具体端口可以去help -> SSL Proxying -> Install Charles Root Certificate on a mobile device or remote browser获取查fiddler默认代理端口http://127.0.0.1:8866
调试场景,不需要修改代码直接通过
-r注入模块即可json"scripts": { "charles": "GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8888 node -r global-agent/bootstrap ./xx.js", "fiddler": "GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8866 node -r global-agent/bootstrap ./xx.js" }打开代理工具,即可看到 node 请求
TIP
在类似 electron 等应用中,用户不是直接通过 node 启动,此时可以通过 NODE_OPTIONS 环境变量设置代理,
json
// cross-env 来兼容不同系统的环境变量配置
"scripts": {
"dev": "xxx",
"dev:proxy": "cross-env NODE_OPTIONS=\"--require global-agent/bootstrap\" npm run dev"
}内嵌支持版本
- 开启代理添加环境配置,
--use-env-proxy开启代理,HTTPS_PROXY置顶 https 代理,注意 http 采用HTTP_PROXY设置json"scripts": { "charles": "HTTPS_PROXY=http://127.0.0.1:8888 node --use-env-proxy ./xx.js", "fiddler": "HTTPS_PROXY=http://127.0.0.1:8866 node --use-env-proxy ./xx.js" } - 打开代理工具,即可看到 node 请求