# NodeJS

> Captura el tráfico HTTP/HTTPS de apps y scripts de NodeJS con Proxyman Automatic Setup. Funciona con axios, got, superagent, fetch y node-fetch.

## 1. Nueva solución automática (v4.7.0 o posterior) ✅ {#1-new-automatic-solution-v470-or-later-}

Proxyman v4.7.0 o posterior puede capturar el tráfico HTTP/HTTPS de NodeJS con un solo clic.

* Solución de un solo clic: no necesitas configurar el proxy HTTP ni confiar manualmente en el certificado autofirmado.
* Compatible con muchas librerías de NodeJS: axios, got, superagent, fetch y node-fetch

### Cómo usarlo: {#how-to-use}

1. Abre Proxyman -> Setup Menu -> Automatic Setup
2. Haz clic en "Open New Terminal"
3. Acepta la solicitud de permiso de AppleScript si aparece
4. Se abre una nueva ventana de Terminal -> inicia tu servidor backend de NodeJS o ejecuta tus scripts ahí => Proxyman captura todo el tráfico automáticamente.
5. Por ejemplo: 

```
$ npm start
```

Listo ✅

![Ventana de Proxyman Automatic Setup con el botón Open New Terminal que captura librerías de NodeJS como axios y fetch](https://proxyman.com/docs/assets/proxyman-automatic-setup-window.jpg)

_Captura el tráfico de NodeJS_

Consulta la página de Automatic Setup:

- [Automatic Setup](https://proxyman.com/docs/es/automatic-setup/automatic-setup)

## 2. Solución antigua (no recomendada) ❌ {#2-old-solution-not-recommended-}

Estos son problemas habituales al usar NodeJS + Proxyman:

### 1. Proxyman no puede capturar las solicitudes a http://localhost:3000 de mi servidor NodeJS {#1-proxyman-could-not-capture-httplocalhost3000-requests-to-my-nodejs-server}

Si usas NodeJS para servir un sitio web en localhost (por ejemplo, http://localhost:3000), es posible que Proxyman no funcione. Por ejemplo, usas ExpressJS para servir un servidor de API en http://localhost:3000

#### Solución: {#solution}

Consulta [No veo ninguna solicitud de mi servidor localhost](https://proxyman.com/docs/es/troubleshooting/couldnt-see-any-request-from-localhost-server).

### 2. Proxyman no puede capturar las solicitudes HTTP que hace mi servidor local de NodeJS. {#2-proxyman-could-not-capture-http-requests-which-are-called-from-my-nodejs-local-server}

* Las solicitudes de [fetch](https://www.npmjs.com/package/node-fetch) o [axios](https://github.com/axios/axios) no aparecen en la app de Proxyman
* Recibo un error de SSL en las solicitudes HTTPS

#### Solución {#solution-1}

De forma predeterminada, las solicitudes HTTP/HTTPS de tus librerías de NodeJS no pasan por el servidor proxy HTTP, así que Proxyman no puede capturar el tráfico.

#### 2.1 node-fetch {#21-node-fetch}

1. Instala el paquete [global-agent](https://github.com/gajus/global-agent)

```bash
npm install global-agent
```

2\. Al principio de tu código de NodeJS, añade el siguiente código:

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

3\. Añade esta variable de entorno a tu shell actual. Asegúrate de que Proxyman esté escuchando en el puerto 9090

```
export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090
```

4\. Listo ✅ 

Vuelve a ejecutar tu script de NodeJS y las solicitudes HTTP/HTTPS aparecerán en la app de Proxyman.

#### Código de ejemplo {#sample-code}

```javascript
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 {#22-axios}

Según la documentación de Axios, puedes definir las variables de entorno HTTP\_PROXY y HTTPS\_PROXY.

1. Haz clic en el icono de Proxyman en la barra de menús -> Listen on \<IP>:\<Port>
2. Haz clic en Copy Shell Command

![Menú de Proxyman en la barra de menús con Listen on IP and port y el elemento Copy Shell Command](https://proxyman.com/docs/assets/Screenshot%202023-04-15%20at%2010.39.02.jpg)

3. Abre Terminal y pega el comando. Por ejemplo: export https\_proxy=http://192.168.1.103:9090 http\_proxy=http://192.168.1.103:9090
4. En la misma Terminal -> inicia tu servidor de NodeJS con axios.
5. Axios enviará el tráfico a través de Proxyman.
6. Listo ✅

#### 2.3 Uso otra librería de NodeJS {#23-i-use-a-different-nodejs-library}

Si no usas fetch ni axios, la configuración puede ser diferente. Consulta la documentación de tu librería para ver cómo configurar el proxy y confiar en el certificado de Proxyman.

* Debate en [https://github.com/ProxymanApp/Proxyman/issues/236](https://github.com/ProxymanApp/Proxyman/issues/236)

## Más información {#learn-more}

* [Captura solicitudes HTTP/HTTPS de axios (NodeJS)](https://proxyman.com/posts/2023-05-14-Capture-HTTP-HTTPS-Request-From-Axios-NodeJS)
* [Depura las APIs de OpenAI en NodeJS con Proxyman](https://proxyman.com/posts/2025-03-30-Debug-OpenAPI-NodeJS)
* [Captura el tráfico HTTP/HTTPS de NodeJS con Proxyman](https://proxyman.com/nodejs) (sitio web de Proxyman)
