# 米国都市別Node.jsレジデンシャルプロキシ

> 米国都市プロキシ向けNode.js例：都市ユーザー名を使ったundici fetch、都市をループする処理、スティッキーな都市IPを使ったPlaywright。構文チェック済み。KYC不要。

- URL: https://metroproxies.com/ja/docs/node/
- 最終更新: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

undici（Nodeのfetchの背後にあるライブラリ）とPlaywrightを使った例。`node --check`で構文チェック済み。

**クイック回答 — Node.jsで米国都市プロキシを使うには？**

`USERNAME-country-us-state-fl-city-orlando`のような都市ユーザー名を使って`http://gw.metroproxies.com:7777`用のundici `ProxyAgent`を作成し、`fetch`の`dispatcher`として渡します。Playwrightも`proxy`オプションで同じ値を使用します。**MetroProxies**は$0.50/GB（2026年10月）以降のすべてのプランで都市・ZIP・ASNターゲティングを備えています。KYC不要、暗号通貨対応。

*1. 都市IP経由のfetch（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. 複数の都市、それぞれに1つのエージェント（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. スティッキーな都市IPを使ったPlaywright（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で気をつけるべきことは？

- **キープアライブ：** 1つの`ProxyAgent`が接続を再利用するため、ローテーションモードでは接続が開いている間は同じ出口IPが維持されます。新しいIPを取得するには、都市ごとに1つのエージェントを作成するか、エージェントを閉じてください。
- **タイムゾーンとロケール：** Playwrightの`timezoneId`と`locale`オプションにより、ブラウザを都市に合わせられます。各[都市ページ](https://metroproxies.com/ja/cities/)にはIANAゾーンが記載されています（マイアミ：`America/New_York`）。
- **SOCKS5：** ChromiumはSOCKS5プロキシにユーザー名を送信しません。ブラウザではHTTPポートを使用してください。
- **タイムアウト：** fetchでは`AbortSignal.timeout()`、Playwrightでは`timeout`。
- **レート：** 各サイトへのリクエストは控えめにし、robots.txtと利用規約に従ってください。

## 次にどこへ進むべきですか？

[5分セットアップ](https://metroproxies.com/ja/docs/quickstart/)から始め、[Python](https://metroproxies.com/ja/docs/python/)と[curl](https://metroproxies.com/ja/docs/curl/)の例と比較し、[プロキシロケーションチェッカー](https://metroproxies.com/ja/guides/verify-proxy-city/)で出口を確認してください。すべてのドキュメント：[ドキュメント](https://metroproxies.com/ja/docs/)。

## Node.jsについて他によくある質問は？

### 必要なNode.jsのバージョンは？

Node.js 18以降（`AbortSignal.timeout`および`.mjs`ファイルでのトップレベルawait用）。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都市それぞれのローカルデータページも用意しています。
