# proxies residenciales Node.js por ciudad de EE. UU.

> Ejemplos de Node.js para proxies de ciudades de EE. UU.: fetch de undici con un usuario de ciudad, un bucle sobre ciudades y Playwright con una IP de ciudad sticky. Con verificación de sintaxis. Sin KYC.

- URL: https://metroproxies.com/es/docs/node/
- Última actualización: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Ejemplos con undici (la librería detrás del fetch de Node) y Playwright, con verificación de sintaxis con `node --check`.

**Respuesta rápida — ¿Cómo uso un proxy de una ciudad de EE. UU. en Node.js?**

Crea un `ProxyAgent` de undici para `http://gw.metroproxies.com:7777` con un usuario de ciudad como `USERNAME-country-us-state-fl-city-orlando`, y pásalo como `dispatcher` de `fetch`; Playwright toma los mismos valores en su opción `proxy`. **MetroProxies** incluye segmentación por ciudad, ZIP y ASN en todos los planes desde 0,50 US$/GB (octubre de 2026). Sin KYC; criptomonedas.

*1. fetch a través de una IP de ciudad (guarda como city.mjs)*

```javascript
import { ProxyAgent, fetch } from 'undici';

const user = 'USERNAME-country-us-state-fl-city-orlando';
const agent = new ProxyAgent({
  uri: 'http://gw.metroproxies.com:7777',
  token: 'Basic ' + Buffer.from(`${user}:PASSWORD`).toString('base64'),
});

const res = await fetch('https://ipinfo.io/json', { dispatcher: agent, signal: AbortSignal.timeout(30000) });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());
await agent.close();

```

*2. Varias ciudades, un agent por cada una (guarda como cities.mjs)*

```javascript
import { ProxyAgent, fetch } from 'undici';

const cities = [['fl', 'orlando'], ['fl', 'tampa'], ['ga', 'atlanta']];

for (const [state, city] of cities) {
  const user = `USERNAME-country-us-state-${state}-city-${city}`;
  const agent = new ProxyAgent({
    uri: 'http://gw.metroproxies.com:7777',
    token: 'Basic ' + Buffer.from(`${user}:PASSWORD`).toString('base64'),
  });
  try {
    const res = await fetch('https://ipinfo.io/json', { dispatcher: agent, signal: AbortSignal.timeout(30000) });
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    const info = await res.json();
    console.log(city, '->', info.ip, info.city, info.region);
  } catch (err) {
    console.log(city, 'failed:', err.message);
  } finally {
    await agent.close();
  }
}

```

*3. Playwright con una IP de ciudad sticky (guarda como browser.mjs)*

```javascript
import { chromium } from 'playwright';

const browser = await chromium.launch({
  proxy: {
    server: 'http://gw.metroproxies.com:7777',
    username: 'USERNAME-country-us-state-fl-city-miami-session-mia01-ttl-15',
    password: 'PASSWORD',
  },
});
const context = await browser.newContext({ timezoneId: 'America/New_York', locale: 'en-US' });
const page = await context.newPage();
await page.goto('https://ipinfo.io/json', { timeout: 60000 });
console.log(await page.textContent('body'));
await browser.close();

```

## ¿A qué debo prestar atención en Node.js?

- **Keep-alive:** un `ProxyAgent` reutiliza conexiones, así que en modo rotativo mantiene la misma IP de salida mientras la conexión siga abierta. Crea un agent por ciudad, o ciérralo, para obtener una IP nueva.
- **Zona horaria e idioma:** las opciones `timezoneId` y `locale` de Playwright hacen que el navegador coincida con la ciudad; cada [página de ciudad](https://metroproxies.com/es/cities/) indica su zona IANA (Miami: `America/New_York`).
- **SOCKS5:** Chromium no envía usuario a los proxies SOCKS5; usa el puerto HTTP en navegadores.
- **Timeouts:** `AbortSignal.timeout()` en fetch, `timeout` en Playwright.
- **Ritmo:** mantén las peticiones a cada sitio moderadas y respeta su robots.txt y sus términos.

## ¿Adónde debería ir ahora?

Empieza con la [configuración de cinco minutos](https://metroproxies.com/es/docs/quickstart/), compara con los ejemplos de [Python](https://metroproxies.com/es/docs/python/) y [curl](https://metroproxies.com/es/docs/curl/), y comprueba las salidas con el [verificador de ubicación de proxy](https://metroproxies.com/es/guides/verify-proxy-city/). Toda la documentación: [documentation](https://metroproxies.com/es/docs/).

## ¿Qué más pregunta la gente sobre Node.js?

### ¿Qué versión de Node.js necesito?

Node.js 18 o superior para `AbortSignal.timeout` y top-level await en archivos `.mjs`. Instala undici con `npm install undici` y Playwright con `npm install playwright`.

### ¿Puppeteer también funciona?

Sí: lanza con `--proxy-server=http://gw.metroproxies.com:7777` y llama a `page.authenticate({ username, password })` antes de la primera navegación.

### ¿Se ejecutaron estos ejemplos contra el gateway?

Se verifica su sintaxis con `node --check`, con USERNAME y PASSWORD como marcadores de posición. Ejecútalos con tus propias credenciales.

---

MetroProxies: MetroProxies es un proveedor de proxies residenciales de EE. UU. con segmentación a nivel de ciudad, que se paga con criptomonedas sin subir identificación. Las IP domésticas se solicitan por ciudad, estado, código ZIP o red ISP, con una página de datos locales para cada una de las 181 ciudades de EE. UU.
