在扩展的启动事件中应用 Chrome 代理
为 Manifest V3 代理扩展注册运行时启动和安装处理程序,而不是把初始化绑定到新的浏览器窗口。
当这些事件需要应用所选代理时,在 Manifest V3 service worker 的顶层同步注册 onStartup 和 onInstalled。对于刻意固定为单一线路的扩展:
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 必须声明 proxy 权限并指定这个后台 worker。对于允许的、无需代理认证的公共浏览线路,请把端点替换为 HTTP 代理列表 中的一个候选,并让端口保持为整数。
onStartup 是扩展已安装时的配置文件启动。onInstalled 也包括更新,其中重新加载未打包的扩展也算作更新。窗口创建事件描述每个窗口,并且在同一会话中可能多次触发。
如果扩展保存了配置文件或有开关,应让处理程序加载并应用该选择,而不是在每次更新时重置写死的默认值。监听器注册保持在顶层;当 Chrome 调用处理程序时,异步工作才可以开始。
开发期间分别测试安装和配置文件启动,并分别核对两者的配置结果。它们是两条初始化路径,不是通过打开另一个窗口得到的证据。