跳到主要内容

NodeJS

使用 Proxyman Automatic Setup 抓取 NodeJS 应用和脚本的 HTTP/HTTPS 流量,兼容 axios、got、superagent、fetch 和 node-fetch。

1. 全新自动方案(v4.7.0 或更高版本)✅​

Proxyman v4.7.0 或更高版本可以一键抓取 NodeJS 的 HTTP/HTTPS 流量。

  • 一键方案:无需手动设置 HTTP Proxy,也无需手动信任自签名证书。
  • 支持多种 NodeJS 库:axios、got、superagent、fetch 和 node-fetch

使用方法:​

  1. 打开 Proxyman -> Setup Menu -> Automatic Setup
  2. 点击 “Open New Terminal”
  3. 如有需要,请允许 AppleScript 的权限请求
  4. 会打开一个新的 Terminal 窗口,在其中启动 NodeJS 后端服务或运行脚本,Proxyman 会自动抓取所有流量
  5. 例如:
$ npm start

完成 ✅

Proxyman Automatic Setup 窗口,其中的 Open New Terminal 按钮可以抓取 axios、fetch 等 NodeJS 库的流量

抓取 NodeJS 流量

请查看 Automatic Setup 页面:

在 NodeJS 中使用 Proxyman 时,常见问题有以下几种:

1. Proxyman 无法抓取发往我的 NodeJS 服务器(http://localhost:3000 )的请求​

如果你使用 NodeJS 在本地提供网站(例如 http://localhost:3000 ),Proxyman 可能无法正常工作。例如:你使用 ExpressJS 在 http://localhost:3000 上提供 API 服务器。

解决方案:​

请参阅 无法看到本地服务器的任何请求。

2. Proxyman 无法抓取由我的 NodeJS 本地服务器发出的 HTTP 请求。​

  • 来自 fetch 或 axios 的请求没有显示在 Proxyman 应用中
  • HTTPS 请求出现 SSL 错误

解决方案​

默认情况下,NodeJS 库发出的 HTTP/HTTPS 请求不会经过 HTTP 代理服务器,因此 Proxyman 无法抓取这些流量。

2.1 node-fetch​

  1. 安装 global-agent 包
npm install global-agent

2. 在 NodeJS 代码的顶部添加以下代码:

import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

3. 在当前 shell 中添加此环境变量。确保 Proxyman 正在监听 9090 端口。

export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090

4. 完成 ✅

再次运行 NodeJS 脚本,HTTP/HTTPS 请求就会出现在 Proxyman 应用中。

示例代码​

import fetch from 'node-fetch';

// Setup global-agent
import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

// fetch the data
const response = await fetch('https://httpbin.org/get?id=123');
const data = await response.json();

// Done
console.log(data);

2.2 Axios​

根据 Axios 文档,可以设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量。

  1. 点击菜单栏中的 Proxyman 图标 -> Listen on <IP>:<Port>
  2. 点击 “Copy Shell Command”
Proxyman 菜单栏菜单,包含 Listen on IP and port 和 Copy Shell Command 选项
  1. 打开 Terminal 并粘贴该命令。例如:export https_proxy=http://192.168.1.103:9090 http_proxy=http://192.168.1.103:9090
  2. 在同一个 Terminal 中,使用 axios 启动 NodeJS 服务器。
  3. Axios 会将流量经由 Proxyman 发送。
  4. 完成 ✅

2.3 使用其他 NodeJS 库​

如果你没有使用 fetch 或 axios,配置方法可能有所不同。请查阅所用库的文档,了解如何设置代理并信任 Proxyman 证书。

了解更多​