言語を変更
日本語 English Русский Deutsch Español Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 中文
メニュー
料金
プロキシ
プロキシの種類
地域から探す77の地域
ソリューション
リソース

Chromeで特定のサイトだけにプロキシを使う方法

目次
  1. Chromeにはサイトごとのプロキシ設定がありますか?
  2. PACスクリプトは何をするのですか?
  3. ChromeにPACスクリプトを渡す方法は?
  4. タブごとに別のプロキシを使えますか?
  5. パスを含むルールがHTTPSのサイトで失敗するのはなぜですか?
  6. どの方法を選べばよいですか?
  7. 簡単な回答

要点: デスクトップ版のChromeには、特定のサイトにだけプロキシを適用する設定がありません。Chromeはすべての閲覧に一つのプロキシ構成を使い、それをオペレーティングシステム、起動フラグ、管理者のポリシー、または拡張機能から取得します。一部のサイトだけをプロキシ経由にするには、ChromeにPACスクリプトが必要です。リクエストごとにプロキシを選ぶ短い関数で、ご自身で書くか、拡張機能がルールから作成します。

Chromeで特定のサイトだけにプロキシを使うには、サイトを指定したPACスクリプトをブラウザに渡します。Chromeはリクエストのたびにそれを参照します。スクリプトの渡し方は三つあります。オペレーティングシステム、別に起動したChrome、または拡張機能です。

Chromeにはサイトごとのプロキシ設定がありますか?

ありません。Chromeの設定ページにあるプロキシの項目は一つだけで、「Open your computer’s proxy settings」(コンピューターのプロキシ設定を開く)というラベルが付いています。Chromiumはこの設定を、コンピューター全体に適用されるものと説明しています(Chromiumの設定文字列)。

Chromiumのプロキシに関するメモは、Chromeがプロキシ構成を取得できる場所として四つを挙げています。管理者のポリシー、コマンドラインフラグ、拡張機能、オペレーティングシステムです。どれが有効になっていても、ブラウザが読み込むすべてのものに一つの構成が適用され、サイトごとの判断はその構成の中にPACスクリプトとして置かれます。

PACスクリプトは何をするのですか?

PAC(プロキシ自動設定)スクリプトは、FindProxyForURLという名前のJavaScript関数です。MDNのPACリファレンスが説明しているとおり、Chromeはリクエストごとにアドレスとホスト名を渡してこの関数を呼び出し、返された文字列を使います。プロキシなしならDIRECT、プロキシサーバーを使うならPROXY host:portです。

次のスクリプトは、一つのドメインとそのサブドメインをプロキシ経由にし、それ以外はすべて直接接続にします。プロキシのアドレスはドキュメント用に予約された範囲のもの(RFC 5737)なので、ご自身のアドレスに置き換えてください。

function FindProxyForURL(url, host) {
  if (host === "example.com" || dnsDomainIs(host, ".example.com")) {
    return "PROXY 203.0.113.10:8080";
  }
  return "DIRECT";
}

プロキシ経由にしたいサイトごとに条件を一つ加えます。最後のreturnが、リストにないすべてのサイトの扱いを決めます。

ChromeにPACスクリプトを渡す方法は?

三つあります。システムのプロキシ設定、別に起動したChrome、そして拡張機能です。違いは、コンピューターのどこまでに影響するかと、変更がどう反映されるかです。

システムのプロキシ設定で

Windowsでは、Microsoftのガイドにあるとおり、プロキシ設定に「setup script」(セットアップスクリプト)の項目があり、スクリプトのアドレスを指定できます。Chromeはシステムの設定に従います。スクリプトはURLでアクセスできる必要があります。システムのプロキシ設定を読むすべてのアプリケーションもそれを使うので、マシン全体に向けたスクリプトに適した方法です。

別のChromeインスタンスで

Chromeは起動時にプロキシのフラグを受け付けます。フラグはChromiumのネットワーク設定のページに載っています。--proxy-serverは一つのプロキシを指定し、--proxy-bypass-listはそれを通らないホストを指定し、--proxy-pac-urlはスクリプトを指します。独自の--user-data-dirを付けて起動すると、二つめのChromeはいつものChromeと並んで動きます。実行中の二つのインスタンスはデータディレクトリを共有できないからです(ユーザーデータディレクトリに関するChromiumのメモ)。

google-chrome --user-data-dir="$HOME/chrome-proxied" --proxy-server="http://203.0.113.10:8080"

このインスタンスはすべてのトラフィックをプロキシ経由で送るので、サイトの経路は、どのウィンドウでそのサイトを開くかで決まります。プロキシを変えるには、インスタンスを終了して新しいフラグで起動し直す必要があります。

プロキシ拡張機能で

拡張機能は、chrome.proxy APIを通じて、インストールされたプロファイルのChromeのプロキシを設定します。ルールを持つ切り替えツールは、それをPACスクリプトにまとめます。当社の無料のProxyJam Connectorはこの方式で動き、ChromeとMicrosoft Edgeで使えます。

  1. プロキシのホスト、ポート、プロトコルでプロファイルを追加します。
  2. ルールを追加します。たとえばexample.comに「Domain + subdomains」(ドメインとサブドメイン)を指定して、適用先にそのプロファイルを選びます。サイトに最初に当てはまったルールが適用されます。
  3. フォールバックはDirect(直接接続)のままにしておき、どのルールにも当てはまらないサイトはプロキシなしで接続するようにします。
  4. ツールバーのポップアップでAuto(自動)を選びます。

当てはまったサイトについて、Connectorのスクリプトはその一つのプロキシだけを指定し、後ろに直接接続の選択肢を付けません。プロキシが停止していればサイトは読み込みに失敗し、そのサイトにご自身のアドレスが使われることはありません。

タブごとに別のプロキシを使えますか?

Chromeではできません。chrome.proxy APIはプロファイルに一つの値を保存し、タブをパラメーターとして受け取らないので、タブには独自に設定できるものがありません。

実際に使える単位は、プロファイルかインスタンスです。プロキシを使う作業のために二つめのChromeプロファイルを作ってそこに拡張機能をインストールするか、独自のフラグで二つめのインスタンスを起動し、二つのウィンドウを並べて使ってください。そうすれば、ウィンドウごとに別のプロキシになります。

パスを含むルールがHTTPSのサイトで失敗するのはなぜですか?

Chromeはhttps://のアドレスについて、PACスクリプトにスキーム、ホスト、ポートだけを渡します。パス、クエリ、フラグメントはChrome 52以降取り除かれており、これを無効にするオプションはChrome 75で削除されました(Chromiumのプロキシに関するメモ)。

そのため、example.com/shop/*のようなルールはどのHTTPSページにも当てはまりません。ルールはホスト名で書き、サイトの一部に独自の経路が必要なら、その部分に独自のサブドメインを与えてください。通常のhttp://のアドレスは今でもパス付きでスクリプトに届きますが、Chromiumはそれに頼らないよう勧めています。Connectorは、パスに依存するルールの横に警告を表示します。

どの方法を選べばよいですか?

少数のサイトと一つのプロキシなら、拡張機能がいちばん手間がかかりません。ConnectorがChromeでできることとできないことは拡張機能のページにまとめています。パスワードを求めるプロキシについてはChromeがプロキシのユーザー名とパスワードを何度も尋ねる理由で、古い切り替えツールからのルールの移行についてはManifest V3で何が変わったかで扱っています。国ごとに一つのプロファイルとプロキシを用意して、ご自身のサイトが各市場でどう見えるかを確認する方法は、別の国からウェブサイトを見る方法で説明しています。

それらのサイトを経由させるプロキシに、インターネット事業者のネットワーク上の一つのアドレスを保ってほしいなら、それがISPプロキシとは何かで説明しているものです。ProxyJamは静的レジデンシャル(ISP)プロキシをISPプロキシのページで販売しており、価格は料金ページにあります。

経路の指定がどこから来て、それぞれの方法が何に影響するか

影響範囲は、Chromeがプロキシ設定をどこから読むかについてのChromiumのドキュメントと、各フラグ自体の説明に基づきます。それ以外は、各方法の設定の仕方から導かれます。速度や信頼性の測定は行っていません。PACスクリプトが経路を決める場合、ChromeはHTTPSのアドレスをスキーム、ホスト、ポートだけにして渡します。
システムのプロキシ設定別のChromeインスタンスプロキシ拡張機能
影響する範囲システム設定を読む、コンピューター上のすべてのアプリケーションそのインスタンスのウィンドウだけ拡張機能をインストールしたChromeプロファイル
サイトの選び方URLで公開したPACスクリプトでどのウィンドウでサイトを開くかで拡張機能がPACスクリプトに変換するルールで
設定の変更公開しているスクリプトを編集する終了して新しいフラグで起動し直す拡張機能でルールを編集する
パスワードが必要なプロキシChromeがダイアログで尋ねるChromeがダイアログで尋ねるHTTPとHTTPSのプロキシなら拡張機能が応答できる

サイトがどの経路を通ったかを確認する

  1. 確認用のページを一時的にリストへ加える

    スクリプトやルールがプロキシ経由にするサイトに、目的のサイトと並べてproxyjam.comを加えます。

  2. 確認用のページを開く

    What Is My IPは、アクセスしてきたアドレスと、そのアドレスが属するインターネット事業者とネットワーク(ASN)を表示します。どちらもプロキシのものになっているはずです。

  3. リストから外して再読み込みする

    今度はページにご自身の接続が表示されるはずです。どちらの表示も想定どおりなら、リストにあるサイトはプロキシを通り、それ以外は直接接続しています。

簡単な回答

Chromeのバイパスリストでも同じことができますか?

逆の働きをします。--proxy-bypass-listフラグはプロキシを通らないホストを指定するもので、--proxy-serverと組み合わせたときにしか効きません。そのため、リストにないものはすべてプロキシを通ります。短いリストのサイトだけをプロキシ経由にして、それ以外を直接接続にするには、PACスクリプトを使ってください。

シークレットウィンドウでも同じプロキシが使われますか?

はい、デフォルトでは使われます。ChromeのプロキシAPIのドキュメントによれば、シークレットウィンドウは通常のウィンドウの設定を引き継ぎ、拡張機能は必要に応じてシークレット用に別の値を設定できます。

Chromeが、拡張機能のプロキシ設定を使っていると表示するのはなぜですか?

拡張機能がプロキシを設定しているからです。Chromeは、システムの設定の代わりに、拡張機能または管理者のポリシーがこの設定を決めることを認めています。制御を戻すには、拡張機能を無効にするか、Direct(直接接続)に切り替えてください。

どのルールにも当てはまらないサイトはどうなりますか?

スクリプトが最後に返すものが使われます。例のスクリプトではそれがDIRECTなので、当てはまらないサイトはプロキシなしで接続します。ProxyJam Connectorではこれをフォールバックと呼び、お客様が別のものを選ぶまでDirect(直接接続)に設定しています。 ブラウザ拡張機能

出典