应用截图

详细介绍

用于 Go 语言安全 HTTP 代理的 Chrome 扩展程序。 这是 go-shp(https://github.com/winguse/go-shp)的扩展程序。go-shp 是一个用 Go 语言编写的开源安全 HTTP 代理。 源代码位于 https://github.com/winguse/go-shp/tree/master/extension 。 此扩展程序包含以下功能: 1. 为 Chrome 开启或关闭代理 2. 基于规则选择代理 3. 通过延迟测试选择代理服务器 ## 扩展程序权限 ### `proxy` 用于通过 `chrome.proxy.settings.set()` 配置浏览器的全局代理设置。扩展程序根据用户的路由规则和代理主机列表生成 PAC(代理自动配置)脚本并安装,让 Chrome 知道哪些请求需要通过代理转发,哪些请求需要直接发送。没有此权限,扩展程序将无法路由任何流量。 ### `webRequest` 用于注册 `chrome.webRequest.onAuthRequired` 监听器。Chrome 的代理 API(PAC 脚本)无法嵌入凭据,只能指定使用哪个代理主机。当代理服务器返回 HTTP 407 Proxy Authentication Required 时,Chrome 会触发此事件。扩展程序拦截该验证请求并提供配置的用户名和令牌,以便 Chrome 自动使用 `Proxy-Authorization` 标头重试请求。 ### `webRequestAuthProvider` 在 Manifest V3 中,调用 `chrome.webRequest.onAuthRequired.addListener()` 时使用 `asyncBlocking` 附加信息字符串需要此权限。这使监听器能够异步向 Chrome 返回 `authCredentials`。没有此权限,`onAuthRequired` 回调只能观察事件,无法实际提供凭据。 ### `storage` 用于通过 `chrome.storage.local` 跨浏览器会话保存用户配置,包括代理主机列表、路由规则、凭据以及用于按速度排列代理主机的延迟历史记录。没有此权限,每次关闭浏览器时设置都会丢失。 ### `alarms` 用于通过 `chrome.alarms` 安排定期代理健康检查。后台 Service Worker 按用户定义的间隔(默认为每分钟)探测每个已配置的代理主机,测量延迟并更新主机排名。Service Worker 无法可靠地使用 `setInterval`,因此 `alarms` 是在 MV3 中执行定期后台工作的正确 API。 ### 主机权限——`<all_urls>` 此扩展程序专为自托管的 SHP(安全 HTTP 代理)部署而设计。用户在任意主机名和端口上运行自己的代理服务器,因此没有可列出的固定域名。出于以下原因,需要 `<all_urls>` 主机权限: - `webRequest.onAuthRequired` 监听器必须覆盖所有网址,才能拦截来自任何用户配置的代理主机的 407 身份验证请求,无论用户将服务器部署在哪个域名上。 - PAC 脚本通过扩展程序构建时未知的代理主机路由流量。浏览器需要获得代理目标地址的主机权限。 - 后台健康检查探测会向 `http://<proxy-host><authBasePath>/407` 发送请求以测量延迟。由于代理主机由用户配置,无法在清单中声明特定的主机名。 扩展程序绝不会读取或修改页面内容。它只观察请求元数据(网址、主机)和代理身份验证事件,绝不访问响应正文或向网页注入脚本。