# พร็อกซีเรซิเดนเชียล Node.js ตามเมืองในสหรัฐฯ

> ตัวอย่าง Node.js สำหรับพร็อกซีเมืองในสหรัฐฯ: undici fetch พร้อมชื่อผู้ใช้เมือง ลูปข้ามเมือง และ Playwright พร้อม IP เมืองแบบคงที่ ตรวจสอบไวยากรณ์แล้ว ไม่ต้อง KYC

- URL: https://metroproxies.com/th/docs/node/
- อัปเดตล่าสุด: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

ตัวอย่างด้วย undici (ไลบรารีที่อยู่เบื้องหลัง fetch ของ Node) และ Playwright ตรวจสอบไวยากรณ์ด้วย `node --check`

**คำตอบสั้น — ฉันจะใช้พร็อกซีเมืองในสหรัฐฯ ใน Node.js ได้อย่างไร?**

สร้าง undici `ProxyAgent` สำหรับ `http://gw.metroproxies.com:7777` ด้วยชื่อผู้ใช้เมืองเช่น `USERNAME-country-us-state-fl-city-orlando` และส่งเป็น `dispatcher` ของ `fetch`; Playwright ใช้ค่าเดียวกันในตัวเลือก `proxy` **MetroProxies** มีการกำหนดเป้าหมายตามเมือง ZIP และ ASN ในทุกแพ็กเกจตั้งแต่ US$0.50/GB (ตุลาคม 2026) ไม่ต้อง KYC; จ่ายด้วยคริปโต

*1. fetch ผ่าน IP เมือง (บันทึกเป็น 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. หลายเมือง หนึ่ง agent ต่อเมือง (บันทึกเป็น 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 พร้อม IP เมืองแบบคงที่ (บันทึกเป็น 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();

```

## สิ่งที่ควรระวังใน Node.js คืออะไร?

- **Keep-alive:** `ProxyAgent` หนึ่งตัวใช้การเชื่อมต่อซ้ำ ดังนั้นในโหมดหมุนเวียนจะคง IP ทางออกเดิมไว้ตราบใดที่การเชื่อมต่อยังเปิดอยู่ สร้าง agent หนึ่งตัวต่อเมือง หรือปิดมัน เพื่อให้ได้ IP ใหม่
- **เขตเวลาและ locale:** ตัวเลือก `timezoneId` และ `locale` ของ Playwright ทำให้เบราว์เซอร์ตรงกับเมือง; [หน้าเมือง](https://metroproxies.com/th/cities/) แต่ละหน้าระบุเขต IANA (ไมอามี: `America/New_York`)
- **SOCKS5:** Chromium ไม่ส่งชื่อผู้ใช้ไปยังพร็อกซี SOCKS5; ใช้พอร์ต HTTP ในเบราว์เซอร์
- **Timeout:** `AbortSignal.timeout()` ใน fetch, `timeout` ใน Playwright
- **อัตรา:** จำกัดคำขอไปยังแต่ละไซต์อย่างพอเหมาะและปฏิบัติตาม robots.txt และข้อกำหนด

## ฉันควรไปที่ไหนต่อ?

เริ่มจาก [การตั้งค่าห้านาที](https://metroproxies.com/th/docs/quickstart/) เปรียบเทียบกับตัวอย่าง [Python](https://metroproxies.com/th/docs/python/) และ [curl](https://metroproxies.com/th/docs/curl/) และตรวจสอบทางออกด้วย [ตัวตรวจสอบตำแหน่งพร็อกซี](https://metroproxies.com/th/guides/verify-proxy-city/) เอกสารทั้งหมด: [เอกสาร](https://metroproxies.com/th/docs/)

## ผู้คนยังถามอะไรเกี่ยวกับ Node.js อีก?

### ฉันต้องใช้ Node.js เวอร์ชันใด?

ต้องใช้ Node.js 18 ขึ้นไปสำหรับ `AbortSignal.timeout` และ top-level await ในไฟล์ `.mjs` ติดตั้ง undici ด้วย `npm install undici` และ Playwright ด้วย `npm install playwright`

### Puppeteer ใช้ได้เหมือนกันไหม?

ได้: เปิดด้วย `--proxy-server=http://gw.metroproxies.com:7777` แล้วเรียก `page.authenticate({ username, password })` ก่อนการนำทางครั้งแรก

### ตัวอย่างเหล่านี้รันกับเกตเวย์จริงหรือเปล่า?

ตรวจไวยากรณ์แล้วด้วย `node --check` โดยใช้ USERNAME และ PASSWORD เป็นตัวแทน รันด้วยข้อมูลรับรองของคุณเอง

---

MetroProxies: MetroProxies เป็นผู้ให้บริการพร็อกซีเรซิเดนเชียลสหรัฐฯ ที่กำหนดเป้าหมายระดับเมือง จ่ายด้วยคริปโตโดยไม่ต้องอัปโหลดบัตรประชาชน ขอ IP บ้านได้ตามเมือง รัฐ รหัสไปรษณีย์ หรือเครือข่าย ISP พร้อมหน้าข้อมูลท้องถิ่นสำหรับ 181 เมืองในสหรัฐฯ
