更新日: 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 の全体的な動作を決定します。指定できる値は次のとおりです。
directdirectモードでは、プロキシを介さずにすべての接続が直接作成されます。このモードでは、ProxyConfigオブジェクトにこれ以上のパラメータを指定できません。auto_detectauto_detectモードでは、プロキシ構成は http://wpad/wpad.dat からダウンロードできる PAC スクリプトによって決定されます。このモードでは、ProxyConfigオブジェクトにこれ以上のパラメータを指定できません。pac_scriptpac_scriptモードでは、プロキシ構成は PAC スクリプトによって決定されます。PAC スクリプトは、proxy.PacScriptオブジェクトで指定された URL から取得されるか、proxy.PacScriptオブジェクトで指定されたdata要素からそのまま取得されます。これ以外に、このモードでは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 になります。
port が proxy.ProxyServer オブジェクトで定義されていない場合、ポートはスキームから派生します。デフォルトのポートは次のとおりです。
| 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]: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
1 つのプロキシ サーバーの仕様をカプセル化するオブジェクト。
プロパティ
-
ホスト
文字列
プロキシ サーバーのホスト名または IP アドレス。ホスト名は ASCII(Punycode 形式)にする必要があります。IDNA はまだサポートされていません。
-
ポート
number 省略可
プロキシ サーバーのポート。デフォルトは、スキームに応じたポートです。
-
スキーム
Scheme 省略可
プロキシ サーバー自体のスキーム(プロトコル)。デフォルトは「http」です。
Scheme
列挙型
"http"
"https"
"quic"
"socks4"
"socks5"
プロパティ
settings
使用するプロキシ設定。この設定の値は ProxyConfig オブジェクトです。
イベント
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
プロキシエラーについて通知します。
パラメータ
-
callback
関数
callbackパラメータは次のようになります。(details: object) => void
-
詳細
オブジェクト
-
詳細
文字列
エラーに関する追加の詳細(JavaScript ランタイム エラーなど)。
-
エラー
文字列
エラーの説明。
-
fatal
ブール値
true の場合、エラーは致命的であり、ネットワーク トランザクションは中止されました。それ以外の場合は、代わりに直接接続が使用されます。
-
-