chrome.proxy

説明

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

権限

proxy

「プロキシ」を宣言する必要があります。拡張機能のマニフェストでプロキシ設定を使用するための権限 API例:

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

コンセプトと使用方法

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

プロキシモード

ProxyConfig オブジェクトの mode 属性は、次に関する Chrome の全体的な動作を決定します。 表示されます。以下の値を取ります。

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

プロキシルール

proxy.ProxyRules オブジェクトには、singleProxy 属性またはそのサブセットのいずれかを含めることができます。 proxyForHttpproxyForHttpsproxyForFtpfallbackProxy

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

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

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

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

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]:80https://[::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 リテラルではありません。たとえば、examplelocalhost は単純なホスト名です。 example.comexample.[::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 オブジェクトは、渡される value オブジェクトと同一ではありません。 get() のコールバック関数。後者には rules.proxyForHttp.port 要素が含まれます。

Mode

Chrome 54 以降

列挙型

「direct」

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

プロキシの自動構成情報を保持するオブジェクト。1 つのフィールドだけを空にすることはできません。

プロパティ

  • データ

    文字列(省略可)

    PAC スクリプト。

  • 必須

    ブール値(省略可)

    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

    文字列 [] 省略可

    プロキシ サーバーなしで接続するサーバーのリスト。

  • fallbackProxy

    ProxyServerオプション

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

  • proxyForFtp

    ProxyServerオプション

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

  • proxyForHttp

    ProxyServerオプション

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

  • proxyForHttps

    ProxyServerオプション

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

  • singleProxy

    ProxyServerオプション

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

ProxyServer

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

プロパティ

  • ホスト

    文字列

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

  • ポート

    数値(省略可)

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

  • スキーム

    スキーム (省略可)

    プロキシ サーバー自体のスキーム(プロトコル)。デフォルトは「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 の場合、エラーは致命的であり、ネットワーク トランザクションは中止されました。それ以外の場合は、代わりに直接接続が使用されます。