11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

node-fetch をプロキシ環境で使う

Posted at

node-fetch をプロキシ環境で使えるようにする薄いラッパーを書きました。

node-fetch-with-proxy

使い方はnode-fetchと同じです。

const fetch = require('node-fetch-with-proxy');

fetch('http://httpbin.org/get').then(res => { ... });

node-fetchとは異なる点として環境変数でプロキシを設定することができます。

# こんな感じで環境変数を指定しておけばプロキシ経由でリクエストするようになる
export HTTP_PROXY=http://your.proxy:8080

なお環境変数が有効になるのはNode.jsのみです。
ブラウザではブラウザ自身のプロキシ設定が使われますのでご注意ください。

動機

node-fetch はデフォルトではプロキシをサポートしません。

拡張オプションの agent を使えば以下のように比較的簡単に解決できますが、Node.js専用でブラウザでは使えません。1

const ProxyAgent = require('proxy-agent');
const agent = new ProxyAgent();
fetch('https://www.google.com', { agent }).then(res => { ... });

個人的にnode-fetchを使いたい一番の理由がユニバーサルJSなのでブラウザでも破綻しない方法を探したのですが見つけられず、止む無くそれ用のモジュールを自作するに至りました。

もっと上手いやり方あったら教えてください...

  1. ProxyAgentが Node.js固有の net とか tls に依存してるためビルドでコケる

11
3
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?