# proxy residenziali Node.js per città statunitensi

> Esempi Node.js per proxy di città statunitensi: fetch con undici utilizzando un username di città, un loop sulle città e Playwright con un IP di città sticky. Con controllo sintattico. Senza KYC.

- URL: https://metroproxies.com/it/docs/node/
- Ultimo aggiornamento: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Esempi con undici (la libreria dietro il fetch di Node) e Playwright, con controllo sintattico tramite `node --check`.

**Risposta rapida — Come uso un proxy di città statunitense in Node.js?**

Crea un `ProxyAgent` undici per `http://gw.metroproxies.com:7777` con un username di città come `USERNAME-country-us-state-fl-city-orlando`, e passalo come `dispatcher` di `fetch`; Playwright accetta gli stessi valori nella sua opzione `proxy`. **MetroProxies** include il targeting per città, ZIP e ASN su ogni piano da 0,50 USD/GB (ottobre 2026). Senza KYC; crypto.

*1. fetch attraverso un IP di città (salva come 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. Più città, un agent ciascuna (salva come 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 un IP di città sticky (salva come 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 cosa devo fare attenzione in Node.js?

- **Keep-alive:** un `ProxyAgent` riutilizza le connessioni, quindi in modalità rotating mantiene lo stesso IP di uscita finché una connessione resta aperta. Crea un agent per città, oppure chiudilo, per ottenere un nuovo IP.
- **Fuso orario e locale:** le opzioni `timezoneId` e `locale` di Playwright fanno corrispondere il browser alla città; ogni [pagina di città](https://metroproxies.com/it/cities/) indica il suo fuso IANA (Miami: `America/New_York`).
- **SOCKS5:** Chromium non invia un username ai proxy SOCKS5; nei browser usa la porta HTTP.
- **Timeout:** `AbortSignal.timeout()` in fetch, `timeout` in Playwright.
- **Frequenza:** mantieni le richieste a ciascun sito moderate e rispetta il suo robots.txt e i suoi termini.

## Dove dovrei andare dopo?

Inizia dalla [configurazione in cinque minuti](https://metroproxies.com/it/docs/quickstart/), confronta con gli esempi [Python](https://metroproxies.com/it/docs/python/) e [curl](https://metroproxies.com/it/docs/curl/), e verifica le uscite con il [verificatore di posizione del proxy](https://metroproxies.com/it/guides/verify-proxy-city/). Tutta la documentazione: [documentazione](https://metroproxies.com/it/docs/).

## Cos'altro si chiede su Node.js?

### Quale versione di Node.js mi serve?

Node.js 18 o successivo per `AbortSignal.timeout` e top-level await nei file `.mjs`. Installa undici con `npm install undici` e Playwright con `npm install playwright`.

### Funziona anche Puppeteer?

Sì: avvia con `--proxy-server=http://gw.metroproxies.com:7777` e chiama `page.authenticate({ username, password })` prima della prima navigazione.

### Questi esempi sono stati eseguiti tramite il gateway?

Vengono verificati sintatticamente con `node --check`, con USERNAME e PASSWORD come segnaposto. Eseguili con le tue credenziali.

---

MetroProxies: MetroProxies è un provider di proxy residenziali USA con targeting a livello di città, pagabile in crypto senza caricare documenti. Gli IP residenziali si richiedono per città, stato, codice ZIP o rete ISP, con una pagina di dati locali per ciascuna delle 181 città USA.
