Node.js でプロキシを設定する方法(Axios & ネイティブ Fetch)
更新日:
Axios 標準の proxy: { host, port } 設定は、HTTP CONNECT トンネルを発行しないため https:// ターゲットへの通信で失敗します。Node.js および TypeScript 環境から VinaProxy の認証付き HTTP(S) プロキシ経由で安定して通信を行うには、Axios で HttpsProxyAgent(https-proxy-agent)を使用するか、Node ネイティブの fetch() で undici.ProxyAgent ディスパッチャを使用します。
new HttpsProxyAgent('http://user:pass@ip:port')- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
Axios とネイティブ Node.js fetch() のプロキシ設定比較
いずれのライブラリも VinaProxy ダッシュボードから取得した標準の http://user:pass@ip:port 形式の URL をそのまま利用できます:
| HTTP クライアント | 利用 NPM パッケージ | 推奨コード構文 |
|---|---|---|
| Axios | npm i https-proxy-agent | axios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false }) |
ネイティブ fetch (Node 18+) | npm i undici | fetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') }) |
| Got | npm i hpagent | got(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } }) |
Node.js におけるコネクションプーリングとタイムアウトのベストプラクティス
- Axios で
httpsAgentを指定する際は、環境変数HTTP_PROXYの競合を防止するため必ずproxy: falseを併記してください - ループ処理の外部でプロキシ IP ごとに
HttpsProxyAgentまたはProxyAgentのインスタンスを 1 度だけ生成し、持続的な TCP keep-alive ソケットを再利用してパフォーマンスを高めます - 当サイトの プロキシ形式変換ツール を使用して、VinaProxy のプロキシリストを JSON 配列形式で直接エクスポートしてプログラムに取り込めます
手順
- 1
https-proxy-agent(または undici)のインストール
Node.js プロジェクト内で
npm install axios https-proxy-agentを実行します。 - 2
HttpsProxyAgent インスタンスの生成
VinaProxy の認証情報を用いて
const agent = new HttpsProxyAgent('http://user:pass@ip:port');を初期化します。 - 3
Axios に httpsAgent と proxy: false を指定して呼び出し
const res = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 });を実行します。 - 4
割り当てられた出口 IP を検証
res.dataのレスポンスをログに出力し、専用プロキシ IP 経由で通信が行われたことを確認します。
よくある質問
Axios デフォルトの proxy: { host, port, auth } が HTTPS の URL で失敗する原因は?
Axios 組み込みのプロキシ機能は HTTP CONNECT TLS トンネルを確立せず、平文の HTTP リクエストを送信してしまうためです。proxy: false とあわせて httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port') を指定することで解決します。
Node.js 18/20/22 のネイティブ fetch() でプロキシを使用するには?
undici から ProxyAgent をインポートし、fetch() の第 2 引数に { dispatcher: new ProxyAgent('http://user:pass@ip:port') } を渡してください。
プロキシリストを Node.js 向けの JSON 形式に変換できますか?
はい。無料の プロキシ形式変換ツール に ip:port:user:pass を貼り付け、JSON 出力を選択するだけで即座に変換できます。
専用静的 IP で Node.js バックエンドとスクレイパーを高速化
世界 7 拠点対応、帯域無制限の専用 IPv4 & 静的 ISP プロキシを即時提供。
Node.js 用プロキシを購入