description |
---|
Capture HTTP/HTTPS traffic from NodeJS with Proxyman |
Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from NodeJS with 1-click.
- 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate.
- Support many NodeJS libraries: axios, got, superagent, fetch, and node-fetch
- Open Proxyman -> Setup Menu -> Automatic Setup
- Click on "Open New Terminal"
- Accept the Apple Script permission prompt if needed
- The New Terminal app is launched -> You can start your NodeJS Backend Server, or Run scripts => Proxyman automatically captures all traffic.
- 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: Use ExpressJS to serve an API Server at http://localhost:3000
Please check out this solution.
By default, all HTTP/HTTPS requests which are called from your NodeJS library don't go through HTTP Proxy Server. Thus, Proxyman could not capture the traffic.
- Install global-agent package
npm install global-agent
2. 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 bash. Make sure Proxyman is listening at port 9090
export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090
4. Done ✅
Run your NodeJS Script again and the HTTP/HTTPS request would appear on 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 Axios Documentation, we can simply provide the HTTP_PROXY and HTTPS_PROXY environment.
- Click on the Proxyman Status Menu
- Copy Shell Command
- Open the Terminal and run the paste content: For example export https_proxy=http://192.168.1.103:9090 http_proxy=http://192.168.1.103:9090
- On the same Terminal -> Start your NodeJS Server with axios.
- Axios will proxy the traffic to Proxyman.
- Done ✅
If you're not using fetch or axios, the configuration might be different. Please check out your lib Document to see how to set the proxy and trust the Proxyman certificate.
- Discussion at ProxymanApp/Proxyman#236