JavaScript はブラウザのプロキシを変更できますか?
通常のウェブページのコードと、プロキシ設定を構成できる許可されたブラウザ拡張機能を区別します。
ウェブページ上で実行されるスクリプトには、ブラウザの送信プロキシを変更する一般的な設定はありません。ブラウザ拡張機能は追加の権限を持てますが、別のセキュリティと構成のモデルの下で動作します。
この区別は古いフォーラムの回答では失われています。特権的な Firefox 内部、旧式の拡張機能モジュール、放棄された add-on SDK を使うコードは、決して通常のウェブページ API ではありませんでした。そのようなスニペットをページに貼り付けても、その権限は得られません。
ブラウザの拡張機能 API を使う
Firefox の拡張機能は、必要な権限があれば文書化された proxy.settings API を利用できます。Chrome は独自のプロキシ拡張機能 API を提供しています。両者の構成モデルは異なります。対象ブラウザのマニフェスト要件とサポートされる設定を確認してください。
拡張機能は、同じ設定を制御するポリシーや他の拡張機能も考慮すべきです。API 呼び出しが成功したからといって、すべての通信先が意図した経路を通ると決めつける理由にはなりません。結果の構成を確認し、ユーザーが元に戻せる状態を保ってください。
fetch の URL を変えると通信先が変わる
ウェブページは、ブラウザのウェブ規則に従う範囲で、自分の代わりにリクエストを転送するアプリケーションサーバーを呼び出せます。その設計では、ブラウザはそのアプリケーションサーバーに接続します。汎用のブラウザプロキシを導入したのでも、無関係なタブの経路を変えたのでもありません。
同様に、別の IP アドレスを持つヘッダーを送っても、接続の送信元アドレスは変わりません。通信先が信頼できる転送メタデータを独自の方針で解釈することはありますが、ネットワーク経路は別の事実です。
閲覧用に IP を変えるプロキシが目的なら、無料プロキシ一覧から適切な項目を選び、サポートされているブラウザプロキシまたは許可された拡張機能を構成してください。目的が 1 つのウェブアプリケーションの遠隔取得なら、その機能は実際のサーバーとブラウザの境界を前提に設計してください。