| description | Capture HTTP/HTTPS traffic from NodeJS apps and scripts with Proxyman Automatic Setup. Works with axios, got, superagent, fetch and node-fetch. |
|---|
Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from NodeJS with 1 click.
- 1-click solution: No need to set the HTTP Proxy config or trust the self-signed certificate manually.
- Supports many NodeJS libraries: axios, got, superagent, fetch, and node-fetch
- Open Proxyman -> Setup Menu -> Automatic Setup
- Click "Open New Terminal"
- Accept the AppleScript permission prompt if needed
- A new Terminal window opens -> Start your NodeJS backend server or run your scripts there => Proxyman captures all traffic automatically.
- For example:
$ npm start
Done ✅
Capture NodeJS Traffic
Please check out the Automatic Setup page:
{% content-ref url="../automatic-setup/automatic-setup.md" %} automatic-setup.md {% endcontent-ref %}
There are common problems when using NodeJS + Proxyman:
1. Proxyman could not capture http://localhost:3000 requests to my NodeJS Server
If you're using NodeJS to serve a localhost website (e.g. http://localhost:3000), Proxyman might not work. For example: you use ExpressJS to serve an API server at http://localhost:3000
Please check out I could not see any requests from my localhost server.
By default, HTTP/HTTPS requests from your NodeJS libraries don't go through the HTTP proxy server, so Proxyman cannot capture the traffic.
- Install the global-agent package
npm install global-agent2. At the top of your NodeJS code, add the following code:
import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';3. Add this env to your current shell. Make sure Proxyman is listening on port 9090
export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090
4. Done ✅
Run your NodeJS script again and the HTTP/HTTPS requests will appear in the Proxyman app.
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);According to the Axios documentation, you can set the HTTP_PROXY and HTTPS_PROXY environment variables.
- Click the Proxyman icon in the menu bar -> Listen on <IP>:<Port>
- Click Copy Shell Command
- Open the Terminal and paste the command. For example: export https_proxy=http://192.168.1.103:9090 http_proxy=http://192.168.1.103:9090
- In the same Terminal -> Start your NodeJS server with axios.
- Axios will send the traffic through Proxyman.
- Done ✅
If you're not using fetch or axios, the configuration might be different. Please check your library's documentation to see how to set the proxy and trust the Proxyman certificate.
- Discussion at ProxymanApp/Proxyman#236

