chrome.proxy

更新日: 2026-09-25 robots: noindex

説明

chrome.proxy API を使用して、Chrome のプロキシ設定を管理します。この API は、プロキシ構成の取得と設定に ChromeSetting プロトタイプの type API を使用します。

権限

proxy

マニフェスト

プロキシ設定 API を使用するには、拡張機能マニフェストで「proxy」権限を宣言する必要があります。次に例を示します。

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

オブジェクトとプロパティ

プロキシ設定は proxy.ProxyConfig オブジェクトで定義されます。Chrome のプロキシ設定によっては、設定に proxy.ProxyRules または proxy.PacScript が含まれる場合があります。

プロキシモード

ProxyConfig オブジェクトの mode 属性は、プロキシの使用に関する Chrome の全体的な動作を決定します。指定できる値は次のとおりです。

direct
direct モードでは、プロキシを介さずにすべての接続が直接作成されます。このモードでは、ProxyConfig オブジェクトにこれ以上のパラメータを指定できません。
auto_detect
auto_detect モードでは、プロキシ構成は http://wpad/wpad.dat からダウンロードできる PAC スクリプトによって決定されます。このモードでは、ProxyConfig オブジェクトにこれ以上のパラメータを指定できません。
pac_script
pac_script モードでは、プロキシ構成は PAC スクリプトによって決定されます。PAC スクリプトは、proxy.PacScript オブジェクトで指定された URL から取得されるか、proxy.PacScript オブジェクトで指定された data 要素からそのまま取得されます。これ以外に、このモードでは ProxyConfig オブジェクトにパラメータを追加することはできません。
fixed_servers
fixed_servers モードでは、プロキシ構成は proxy.ProxyRules オブジェクトでコード化されます。その構造については、プロキシ ルールをご覧ください。これ以外に、fixed_servers モードでは ProxyConfig オブジェクトにパラメータを追加できません。
system
system モードでは、プロキシ構成はオペレーティング システムから取得されます。このモードでは、ProxyConfig オブジェクトにこれ以上のパラメータを指定できません。system モードは、プロキシ構成を設定しない場合とは異なります。後者の場合、コマンドライン オプションがプロキシ構成に影響しない場合にのみ、Chrome はシステム設定にフォールバックします。

プロキシルール

proxy.ProxyRules オブジェクトには、singleProxy 属性、または proxyForHttp、proxyForHttps、proxyForFtp、fallbackProxy のサブセットを含めることができます。

最初のケースでは、HTTP、HTTPS、FTP のトラフィックが、指定されたプロキシ サーバーを介してプロキシされます。他のトラフィックは直接送信されます。後者の場合、動作は少し複雑になります。HTTP、HTTPS、FTP の各プロトコルにプロキシ サーバーが構成されている場合、それぞれのトラフィックは指定されたサーバーを介してプロキシされます。このようなプロキシ サーバーが指定されていない場合、またはトラフィックが HTTP、HTTPS、FTP 以外のプロトコルを使用している場合は、fallbackProxy が使用されます。fallbackProxy が指定されていない場合、トラフィックはプロキシ サーバーを介さずに直接送信されます。

プロキシ サーバー オブジェクト

プロキシ サーバーは proxy.ProxyServer オブジェクトで構成されます。プロキシ サーバー(host 属性で定義)への接続では、scheme 属性で定義されたプロトコルが使用されます。scheme が指定されていない場合、プロキシ接続はデフォルトで http になります。

port が proxy.ProxyServer オブジェクトで定義されていない場合、ポートはスキームから派生します。デフォルトのポートは次のとおりです。

Schemeポート
http80
https443
socks41080
socks51080

バイパスリスト

個々のサーバーは、bypassList を使用したプロキシから除外される場合があります。このリストには、次のエントリが含まれる場合があります。

[SCHEME://]HOST_PATTERN[:PORT]

パターン HOST_PATTERN に一致するすべてのホスト名を照合します。先頭の "." は "*." として解釈されます。

例: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"。

パターン一致する一致しない
".foobar.com""www.foobar.com""foobar.com"
"*.foobar.com""www.foobar.com""foobar.com"
"foobar.com""foobar.com""www.foobar.com"
"*foobar.com""foobar.com"、"www.foobar.com"、"foofoobar.com"
[SCHEME://]IP_LITERAL[:PORT]

IP アドレス リテラルである URL を照合します。概念的には最初のケースと似ていますが、IP リテラルの正規化を処理する特殊なケースがあります。たとえば、「[0:0:0::1]」との照合は「[::1]」との照合と同じです。これは、IPv6 の正規化が内部で行われるためです。

例: 127.0.1、[0:0::1]、[::1]:80、https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

指定された範囲内の IP リテラル(IP_LITERAL)を含む URL を照合します。IP 範囲(PREFIX_LENGTH_IN_BITS)は CIDR 表記で指定します。

指定された範囲内の IP リテラルを含む URL を照合します。IP 範囲は CIDR 表記で指定します。例: "192.168.1.1/16", "fefe:13::abc/33"

<local>

リテラル文字列 <local> は、単純なホスト名と一致します。シンプルなホスト名とは、ドットを含まず、IP リテラルではないホスト名です。たとえば、example と localhost は単純なホスト名ですが、example.com、example.、[::1] は単純なホスト名ではありません。

例: "<local>"

例

次のコードは、foobar.com を除くすべてのサーバーへの HTTP 接続に SOCKS 5 プロキシを設定し、他のすべてのプロトコルには直接接続を使用します。シークレット ウィンドウは通常のウィンドウから設定を継承するため、設定は通常のウィンドウとシークレット ウィンドウに適用されます。Types API のドキュメントもご覧ください。

var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "socks5",
      host: "1.2.3.4"
    },
    bypassList: ["foobar.com"]
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

次のコードは、カスタム PAC スクリプトを設定します。

var config = {
  mode: "pac_script",
  pacScript: {
    data: "function FindProxyForURL(url, host) {\n" +
          "  if (host == 'foobar.com')\n" +
          "    return 'PROXY blackhole:80';\n" +
          "  return 'DIRECT';\n" +
          "}"
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

次のスニペットは、現在有効なプロキシ設定をクエリします。有効なプロキシ設定は、別の拡張機能またはポリシーによって決定される場合があります。詳しくは、Types API のドキュメントをご覧ください。

chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

set() に渡される value オブジェクトは、get() のコールバック関数に渡される value オブジェクトとは異なります。後者には rules.proxyForHttp.port 要素が含まれます。

型

Mode

Chrome 54 以降

列挙型

"direct"

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

プロキシ自動設定情報を保持するオブジェクト。フィールドの 1 つのみを空にしないでください。

プロパティ

  • データ

    文字列 省略可

    PAC スクリプト。

  • 必須

    boolean 省略可

    true に設定した場合、無効な PAC スクリプトがあると、ネットワーク スタックが直接接続にフォールバックされなくなります。デフォルトは false です。

  • URL

    文字列 省略可

    使用する PAC ファイルの URL。

ProxyConfig

完全なプロキシ構成をカプセル化するオブジェクト。

プロパティ

  • モード

    'direct' = プロキシを使用しない 'auto_detect' = プロキシ設定を自動検出する 'pac_script' = 指定した PAC スクリプトを使用する 'fixed_servers' = プロキシ サーバーを手動で指定する 'system' = システムのプロキシ設定を使用する

  • pacScript

    PacScript 省略可

    この構成のプロキシ自動設定(PAC)スクリプト。「pac_script」モードで使用します。

  • ルール

    ProxyRules 省略可

    この構成を記述するプロキシ ルール。「fixed_servers」モードで使用します。

ProxyRules

すべてのプロトコルのプロキシ ルールのセットをカプセル化するオブジェクト。「singleProxy」を使用するか、「proxyForHttp」、「proxyForHttps」、「proxyForFtp」、「fallbackProxy」のいずれか(またはそのサブセット)を使用します。

プロパティ

  • bypassList

    string[] 省略可

    プロキシ サーバーを使用せずに接続するサーバーのリスト。

  • fallbackProxy

    ProxyServer 省略可

    それ以外に使用されるプロキシ サーバー。または、特定の proxyFor... が指定されていない場合に使用されるプロキシ サーバー。

  • proxyForFtp

    ProxyServer 省略可

    FTP リクエストに使用するプロキシ サーバー。

  • proxyForHttp

    ProxyServer 省略可

    HTTP リクエストに使用されるプロキシ サーバー。

  • proxyForHttps

    ProxyServer 省略可

    HTTPS リクエストに使用するプロキシ サーバー。

  • singleProxy

    ProxyServer 省略可

    すべての URL ごとのリクエスト(http、https、ftp)に使用されるプロキシ サーバー。

ProxyServer

1 つのプロキシ サーバーの仕様をカプセル化するオブジェクト。

プロパティ

  • ホスト

    文字列

    プロキシ サーバーのホスト名または IP アドレス。ホスト名は ASCII(Punycode 形式)にする必要があります。IDNA はまだサポートされていません。

  • ポート

    number 省略可

    プロキシ サーバーのポート。デフォルトは、スキームに応じたポートです。

  • スキーム

    Scheme 省略可

    プロキシ サーバー自体のスキーム(プロトコル)。デフォルトは「http」です。

Scheme

Chrome 54 以降

列挙型

"http"

"https"

"quic"

"socks4"

"socks5"

プロパティ

settings

使用するプロキシ設定。この設定の値は ProxyConfig オブジェクトです。

イベント

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

プロキシエラーについて通知します。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (details: object) => void

    • 詳細

      オブジェクト

      • 詳細

        文字列

        エラーに関する追加の詳細(JavaScript ランタイム エラーなど)。

      • エラー

        文字列

        エラーの説明。

      • fatal

        ブール値

        true の場合、エラーは致命的であり、ネットワーク トランザクションは中止されました。それ以外の場合は、代わりに直接接続が使用されます。