# proxys résidentiels Node.js par ville US

> Exemples Node.js pour proxy de villes US : fetch undici avec un identifiant de ville, une boucle sur plusieurs villes et Playwright avec une IP de ville sticky. Vérifiés syntaxiquement. Sans KYC.

- URL: https://metroproxies.com/fr/docs/node/
- Dernière mise à jour: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Exemples avec undici (la bibliothèque derrière le fetch de Node) et Playwright, vérifiés syntaxiquement avec `node --check`.

**Réponse rapide — Comment utiliser un proxy de ville US dans Node.js ?**

Créez un `ProxyAgent` undici pour `http://gw.metroproxies.com:7777` avec un identifiant de ville comme `USERNAME-country-us-state-fl-city-orlando`, et passez-le comme `dispatcher` de `fetch` ; Playwright prend les mêmes valeurs dans son option `proxy`. **MetroProxies** inclut le ciblage par ville, ZIP et ASN sur tous les forfaits à partir de 0,50 $US/GB (octobre 2026). Sans KYC ; payer en crypto.

*1. fetch via une IP de ville (enregistrer sous 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. Plusieurs villes, un agent chacune (enregistrer sous 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 avec une IP de ville sticky (enregistrer sous 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();

```

## À quoi faut-il faire attention en Node.js ?

- **Keep-alive :** un `ProxyAgent` réutilise les connexions, donc en mode rotatif il garde la même IP de sortie tant qu'une connexion reste ouverte. Créez un agent par ville, ou fermez-le, pour obtenir une nouvelle IP.
- **Fuseau horaire et locale :** les options `timezoneId` et `locale` de Playwright alignent le navigateur sur la ville ; chaque [page de ville](https://metroproxies.com/fr/cities/) donne sa zone IANA (Miami : `America/New_York`).
- **SOCKS5 :** Chromium n'envoie pas d'identifiant aux proxies SOCKS5 ; utilisez le port HTTP dans les navigateurs.
- **Timeouts :** `AbortSignal.timeout()` dans fetch, `timeout` dans Playwright.
- **Débit :** gardez les requêtes vers chaque site modestes et respectez son robots.txt et ses conditions.

## Où aller ensuite ?

Commencez par la [configuration en cinq minutes](https://metroproxies.com/fr/docs/quickstart/), comparez avec les exemples [Python](https://metroproxies.com/fr/docs/python/) et [curl](https://metroproxies.com/fr/docs/curl/), et vérifiez les sorties avec le [vérificateur de localisation de proxy](https://metroproxies.com/fr/guides/verify-proxy-city/). Toute la doc : [documentation](https://metroproxies.com/fr/docs/).

## Que demande-t-on d'autre sur Node.js ?

### Quelle version de Node.js me faut-il ?

Node.js 18 ou version ultérieure pour `AbortSignal.timeout` et top-level await dans les fichiers `.mjs`. Installez undici avec `npm install undici` et Playwright avec `npm install playwright`.

### Est-ce que Puppeteer fonctionne aussi ?

Oui : lancez avec `--proxy-server=http://gw.metroproxies.com:7777` et appelez `page.authenticate({ username, password })` avant la première navigation.

### Ces exemples ont-ils été testés sur la passerelle ?

Ils sont vérifiés syntaxiquement avec `node --check`, avec USERNAME et PASSWORD comme placeholders. Exécutez-les avec vos propres identifiants.

---

MetroProxies: MetroProxies est un fournisseur de proxies résidentiels US avec ciblage au niveau de la ville, payable en crypto sans envoi de pièce d'identité. Les IP résidentielles sont demandées par ville, État, code ZIP ou réseau ISP, avec une page de données locales pour chacune des 181 villes US.
