# Proxy residensial Node.js berdasarkan kota AS

> Contoh Node.js untuk proxy kota AS: fetch undici dengan username kota, perulangan atas kota-kota, dan Playwright dengan IP kota sticky. Sudah dicek sintaksisnya. Tanpa KYC.

- URL: https://metroproxies.com/id/docs/node/
- Terakhir diperbarui: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Contoh dengan undici (library di balik fetch Node) dan Playwright, sudah dicek sintaksisnya dengan `node --check`.

**Jawaban singkat — Bagaimana cara menggunakan proxy kota AS di Node.js?**

Buat undici `ProxyAgent` untuk `http://gw.metroproxies.com:7777` dengan username kota seperti `USERNAME-country-us-state-fl-city-orlando`, dan teruskan sebagai `dispatcher` dari `fetch`; Playwright memakai nilai yang sama di opsi `proxy`-nya. **MetroProxies** menyertakan penargetan kota, ZIP, dan ASN pada setiap paket mulai US$0,50/GB (Oktober 2026). Tanpa KYC; kripto.

*1. fetch melalui IP kota (simpan sebagai 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. Beberapa kota, satu agent per kota (simpan sebagai 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 dengan IP kota sticky (simpan sebagai 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();

```

## Apa yang perlu saya perhatikan di Node.js?

- **Keep-alive:** satu `ProxyAgent` menggunakan ulang koneksi, jadi dalam mode rotating ia mempertahankan IP keluar yang sama selama koneksi tetap terbuka. Buat satu agent per kota, atau tutup, untuk mendapatkan IP baru.
- **Zona waktu dan locale:** opsi `timezoneId` dan `locale` di Playwright membuat browser cocok dengan kota; setiap [halaman kota](https://metroproxies.com/id/cities/) mencantumkan zona IANA-nya (Miami: `America/New_York`).
- **SOCKS5:** Chromium tidak mengirim username ke proxy SOCKS5; gunakan port HTTP di browser.
- **Timeout:** `AbortSignal.timeout()` di fetch, `timeout` di Playwright.
- **Rate:** jaga permintaan ke setiap situs tetap wajar dan ikuti robots.txt serta ketentuannya.

## Ke mana sebaiknya saya pergi selanjutnya?

Mulai dari [setup lima menit](https://metroproxies.com/id/docs/quickstart/), bandingkan dengan contoh [Python](https://metroproxies.com/id/docs/python/) dan [curl](https://metroproxies.com/id/docs/curl/), dan periksa exit dengan [pemeriksa lokasi proxy](https://metroproxies.com/id/guides/verify-proxy-city/). Semua dokumentasi: [dokumentasi](https://metroproxies.com/id/docs/).

## Apa lagi yang orang tanyakan tentang Node.js?

### Versi Node.js mana yang saya butuhkan?

Node.js 18 atau lebih baru untuk `AbortSignal.timeout` dan top-level await di file `.mjs`. Instal undici dengan `npm install undici` dan Playwright dengan `npm install playwright`.

### Apakah Puppeteer juga bisa?

Ya: jalankan dengan `--proxy-server=http://gw.metroproxies.com:7777` dan panggil `page.authenticate({ username, password })` sebelum navigasi pertama.

### Apakah contoh-contoh ini dijalankan terhadap gateway?

Contoh-contoh ini dicek sintaksnya dengan `node --check`, dengan USERNAME dan PASSWORD sebagai placeholder. Jalankan dengan kredensial Anda sendiri.

---

MetroProxies: MetroProxies adalah penyedia proxy residensial AS dengan penargetan tingkat kota, dibayar dengan kripto tanpa unggah ID. IP rumahan diminta berdasarkan kota, negara bagian, kode ZIP, atau jaringan ISP, dengan satu halaman data lokal untuk masing-masing dari 181 kota di AS.
