拡張機能の起動イベントで Chrome プロキシを適用する
初期化を新しいブラウザウィンドウに結び付けず、Manifest V3 プロキシ拡張機能のランタイム起動ハンドラーとインストールハンドラーを登録します。
これらのイベントで選択したプロキシを適用する場合は、Manifest V3 のサービスワーカーの最上位で onStartup と onInstalled を同期的に登録します。意図的に 1 つのルートに固定した拡張機能の場合は次のとおりです。
function applyProxy() {
chrome.proxy.settings.set({
value: {
mode: 'fixed_servers',
rules: {
singleProxy: {
scheme: 'http',
host: 'proxy.example',
port: 8080,
},
},
},
scope: 'regular',
}, () => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
});
}
chrome.runtime.onStartup.addListener(applyProxy);
chrome.runtime.onInstalled.addListener(applyProxy);manifest ではプロキシ権限を宣言し、このバックグラウンドワーカーに名前を付ける必要があります。プロキシ認証のない許可された一般ブラウジング用ルートでは、エンドポイントを HTTP プロキシ一覧 の候補に置き換え、ポートは整数のままにします。
onStartup は拡張機能がインストールされた状態でのプロファイル起動です。onInstalled には更新も含まれ、展開済み拡張機能の再読み込みも更新として扱われます。ウィンドウ作成イベントは各ウィンドウを表し、1 つのセッションで何度も発生することがあります。
保存されたプロファイルやオフスイッチがある拡張機能では、更新のたびにハードコードされた既定値へ戻すのではなく、ハンドラーがその選択を読み込んで適用するようにします。リスナーの登録は最上位のままにし、非同期処理は Chrome がハンドラーを呼び出したときに開始できます。
開発中はインストールとプロファイル起動を別々に試し、それぞれの構成結果を確認してください。これらは 2 つの初期化経路であり、別のウィンドウを開いて得られる証拠ではありません。