説明
chrome.proxy API を使用して、Chrome のプロキシ設定を管理します。この API は、プロキシ構成の取得と設定に ChromeSetting プロトタイプ(タイプ API)を使用します。
権限
proxyマニフェスト
プロキシ設定 API を使用するには、拡張機能のマニフェストで「proxy」権限を宣言する必要があります。次に例を示します。
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
オブジェクトとプロパティ
プロキシ設定は proxy.ProxyConfig オブジェクトで定義されます。Chrome のプロキシ設定によっては、設定に proxy.ProxyRules または proxy.PacScript が含まれることがあります。
プロキシモード
ProxyConfig オブジェクトの mode 属性は、プロキシの使用に関する Chrome の全体的な動作を決定します。次のいずれかの値を取ります。
directdirectモードでは、プロキシを使用せずにすべての接続が直接作成されます。このモードでは、ProxyConfigオブジェクトにパラメータを追加できません。auto_detect-
auto_detectモードでは、プロキシ構成は http://wpad/wpad.dat でダウンロードできる PAC スクリプトによって決定されます。このモードでは、ProxyConfigオブジェクトにパラメータを追加することはできません。 pac_scriptpac_scriptモードでは、プロキシ構成は、proxy.PacScriptオブジェクトで指定された URL から取得されるか、proxy.PacScriptオブジェクトで指定されたdata要素からリテラルで取得される PAC スクリプトによって決定されます。このモードでは、ProxyConfigオブジェクトに他のパラメータを指定することはできません。fixed_serversfixed_serversモードでは、プロキシ構成はproxy.ProxyRulesオブジェクトにコード化されます。その構造については、プロキシルールをご覧ください。このほか、fixed_serversモードではProxyConfigオブジェクトにパラメータを追加できません。systemsystemモードでは、プロキシ構成はオペレーティング システムから取得されます。このモードでは、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 になります。
proxy.ProxyServer オブジェクトで port が定義されていない場合、ポートはスキームから取得されます。デフォルトのポートは次のとおりです。
| Scheme | ポート |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
バイパスリスト
個々のサーバーは 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 リテラルの正規化を処理する特殊なケースがあります。たとえば、IPv6 の正規化は内部で行われるため、「[0:0:0::1]」との照合は「[::1]」との照合と同じです。
例:
127.0.1、[0:0::1]、[::1]:80、https://[::1]:443IP_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
列挙型
"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
単一のプロキシ サーバーの仕様をカプセル化するオブジェクト。
プロパティ
-
ホスト
文字列
プロキシ サーバーのホスト名または IP アドレス。ホスト名は ASCII(Punycode 形式)にする必要があります。IDNA はまだサポートされていません。
-
ポート
number 省略可
プロキシ サーバーのポート。デフォルトでは、スキームに依存するポートが使用されます。
-
スキーム
スキーム 省略可
プロキシ サーバー自体のスキーム(プロトコル)。デフォルトは「http」です。
Scheme
列挙型
"http"
"https"
"quic"
"socks4"
"socks5"
プロパティ
settings
使用するプロキシ設定。この設定の値は ProxyConfig オブジェクトです。
イベント
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
プロキシエラーについて通知します。
パラメータ
-
callback
関数
callbackパラメータは次のようになります。(details: object) => void
-
詳細
オブジェクト
-
詳細
文字列
JavaScript ランタイム エラーなど、エラーに関する追加の詳細。
-
エラー
文字列
エラーの説明。
-
fatal
ブール値
true の場合、エラーは致命的であり、ネットワーク トランザクションは中止されました。それ以外の場合は、代わりに直接接続が使用されます。
-
-