説明
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
属性またはそのサブセットのいずれかを含めることができます。
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 リテラルの正規化を扱う特殊なケースがあります。たとえば、「[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
オブジェクトは、渡される value
オブジェクトと同一ではありません。
get()
のコールバック関数。後者には rules.proxyForHttp.port
要素が含まれます。
型
Mode
列挙型
「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
列挙型
"http"
"https"
「quic」
"socks4"
"socks5"
プロパティ
settings
使用するプロキシ設定。この設定の値は ProxyConfig オブジェクトです。
タイプ
types.ChromeSetting<ProxyConfig>
イベント
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
プロキシエラーを通知します。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。(details: object) => void
-
詳細
オブジェクト
-
詳細
文字列
エラーに関する追加の詳細(JavaScript ランタイム エラーなど)。
-
エラー
文字列
エラーの説明。
-
fatal
ブール値
true の場合、エラーは致命的であり、ネットワーク トランザクションは中止されました。それ以外の場合は、代わりに直接接続が使用されます。
-
-