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.
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();
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();
}
}
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
ProxyAgentriutilizza 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
timezoneIdelocaledi Playwright fanno corrispondere il browser alla città; ogni pagina di città 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,timeoutin 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, confronta con gli esempi Python e curl, e verifica le uscite con il verificatore di posizione del proxy. Tutta la documentazione: documentazione.
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.