Chrome扩展是否可在页面加载前运行实现指定域名连接切断开关功能
需求可行性结论
你的需求完全可以通过Chrome扩展实现,无需依赖系统级防火墙方案,具体实现逻辑如下:
核心依赖API
使用Chrome官方提供的declarativeNetRequestAPI即可,该API的执行时机早于DNS解析、TCP连接建立阶段,远早于document_start页面加载时机,完全符合你对拦截时机的要求,是浏览器层级最早的网络请求拦截节点之一。
核心实现逻辑
- 首先配置扩展的拦截规则:指定需要管控的域名列表(如
facebook.com及其所有子域名) - 新增规则判断逻辑:匹配到管控域名的请求时,校验当前请求的出口是否为你指定的代理IP/代理通道,如果判定为未走代理的裸连请求,直接执行拦截切断连接
- 规则常驻在扩展的后台Service Worker中,只要扩展处于启用状态就会生效,完美作为PAC脚本失效时的兜底方案
适配多Profile场景
Chrome扩展的安装、启用状态完全按Profile独立隔离,你只需在Profile A中安装启用该扩展,Profile B中不安装/禁用该扩展,即可实现「Profile A禁止裸连指定站点、Profile B允许裸连」的需求,不需要修改任何系统全局配置。
所需扩展权限
在扩展的manifest.json中需要申请以下权限:
declarativeNetRequestdeclarativeNetRequestWithHostAccess- 对应管控域名的主机权限(或泛权限
<all_urls>) - 若需要读取当前代理配置校验,额外申请
proxy权限
内容的提问来源于stack exchange,提问作者ー PupSoZeyDe ー
相关产品推荐
相关产品推荐

