代理浏览器扩展安全吗?它能看到什么,怎么检查
代理浏览器扩展安全吗?一个代理扩展能看到什么,怎样读懂它申请的权限,开源和闭源的区别,代理服务商自带的扩展,以及安装前的检查清单。
一个代理浏览器扩展安全不安全,完全取决于发布它的人,因为它的工作本身就要求它什么都看得见。要切换代理、替你回应代理的登录,它需要浏览器的代理权限、访问所有网站的权限,还要能接触到每一个请求。值得信任的扩展是开源的、有人维护的、从开发者自己给出的链接安装的,而且除了这份工作需要的权限,什么都不多要。
这并不是说不该用。FoxyProxy 从 2006 年就有了,它和 SwitchyOmega 都是开源项目,而不用扩展的浏览器也有它自己的麻烦。这只是说,你应该知道自己授出去的是什么,并且在安装前花五分钟查清楚,而不是装完之后。本文依次讲:代理扩展能看到什么,怎么读它的权限,开源能带给你什么、带不来什么,代理服务商自己发的扩展这种特殊情况,以及完全不需要扩展的替代办法。
代理扩展能看到什么
谁能决定浏览器的请求往哪儿走,原则上就能把它们送到任何地方。浏览器也是这么看待这项权限的。Chrome 对 proxy 权限的安装警告是 "Read and change all your data on all websites",意思是读取和更改你在所有网站上的所有数据。老实的切换工具和不老实的会看到同一句警告,所以它告诉你的是风险有多大,而不是谁在申请。
下面是两款最知名的切换工具申请的权限,直接取自它们自己的 manifest 文件:
| 权限 | FoxyProxy 9.8 | SwitchyOmega 3(3.5.2) | 作用 |
|---|---|---|---|
proxy |
有 | 有 | 决定每个请求走哪条路 |
| 访问所有网站 | 有 | 有 | 处理发往任何地址的请求 |
webRequest、webRequestAuthProvider |
有 | 有 | 观察请求,回应代理的登录要求 |
tabs |
有 | 有 | Chrome 警告 "Read your browsing history",即读取浏览记录 |
storage |
有 | 有,另加 unlimitedStorage |
保存设置,代理登录信息也在其中 |
downloads |
有 | 无 | Chrome 警告 "Manage your downloads";用于备份设置 |
notifications、contextMenus |
有 | 只有 contextMenus |
弹出通知和右键菜单项 |
alarms |
无 | 有 | 执行定时任务 |
browsingData、privacy |
可选,用到时才申请 | 无 | 清除网站数据;修改 WebRTC 设置 |
两者都不会往你访问的网页里注入脚本,也都没有申请 cookies 或 history。对一个功能完整的切换工具来说,这差不多就是最低限度了。最关键的是登录这一块:扩展替你填代理用户名和密码,靠的是盯着请求、等代理发出认证要求,所以 webRequest 和访问所有网站的权限总是成对出现。
再说密码本身。你在扩展的登录字段里填的内容,存放在这个扩展自己的存储里,扩展当然读得到。如果打开设置同步(FoxyProxy 的“启用同步”会同步全局排除项、代理和匹配规则),这些数据还会经过你的浏览器账号。代理的登录信息只用于代理,绝不要用你在别处也用的密码。
怎样读懂扩展的权限
安装之前,商店的安装提示会列出警告;开源扩展还会公开 manifest.json,里面按名称列出了每一项权限。安装之后:
- Chrome 和 Edge: 打开
chrome://extensions或edge://extensions,点该扩展的“详情”。页面会显示它持有哪些权限、能访问哪些网站,地址栏里还能看到它的 ID。 - Firefox: 打开
about:addons,选中该扩展,就能看到它持有的权限。Firefox 还允许扩展声明自己收集哪些数据;FoxyProxy 的 manifest 声明的是不收集任何数据。
要留意那些用这份工作解释不通的权限。代理切换工具没有明显的理由需要 cookies(它加上访问所有网站的权限,就能读到你的登录 Cookie),也不需要 history(Chrome 对它的描述是 "Read and change your browsing history on all signed-in devices",即读取和更改你所有已登录设备上的浏览记录),更不需要往每个页面里注入脚本。这些权限本身不能证明什么恶意,但每一项都应该能在扩展自己的文档里找到理由。
Chrome 还允许收窄扩展可以访问的网站范围。可对于要替你回应登录的代理扩展,收窄之后登录往往就不灵了,所以这里真正起作用的不是那个开关,而是你选择把这份权限交给谁。
开源还是闭源
开源并不等于代码安全,它只是让代码可以被检查。FoxyProxy 以 GPL-2.0 发布源代码,SwitchyOmega 3 以 GPL-3.0 发布,都放在 GitHub 上,问题追踪也都是公开的。你可以去看 FoxyProxy 怎样保存登录信息(每个主机加端口一套),也可以翻 SwitchyOmega 3 那个挂了很久的报告:扩展明明存着密码,Chrome 还是弹窗要。商店里的安装包是另外打包的,所以“开源”的意思是任何人都可以去看,而不是一定有人看过。
是否有人维护,和是否开源一样重要。原版 SwitchyOmega 就是例子。它的作者已经声明项目不再维护,Chrome 也因为它始终没有迁移到新的扩展格式而将其停用。Firefox 版在一定程度上还能用,但不会再有任何修复。一个能看到你全部流量、却不再有安全更新的工具,就算装上那天没问题,现在也是风险。如今该用的是它仍在维护的分支 SwitchyOmega 3,我们的 SwitchyOmega 指南讲的就是它。
用闭源扩展,你依靠的是发布者的名声、它的隐私政策和商店的审核,而这三样你都没法自己核实。
代理服务商自带的扩展
有些代理服务商会提供自己的浏览器扩展,通常内置了账号登录,再给一串可以点选的地区。方便是真的。同样真实的是:服务商的代码从此在你的浏览器里、在每个网站上运行,拥有上面那张表里描述的一切权限。
安装这类扩展之前,先问对任何扩展都该问的问题,再加几条:
- 它要的权限是否超出上面那些切换工具的范围?页面脚本、Cookie 或浏览记录权限,都需要一个说法。
- 它会不会登录你的服务商账号,会不会回传使用情况?隐私政策应该写明它发送什么、什么时候发送。
- 源代码,或者至少 manifest,有没有公开?
- 你到底需不需要它?任何 HTTP 或 SOCKS5 代理都能用在通用的切换工具里,或者直接用浏览器自己的设置。服务商专属的扩展,很少是唯一的接入办法。
商店里的仿冒品
名气大的扩展会招来模仿者,在商店里一搜,所有用了这个名字的条目都会出来。请从项目自己公布的链接安装,然后核对 ID。FoxyProxy 内置的帮助页列出了它的 ID:Chrome 版是 gcknhkkoolaabfmlnjonogaaifnjlfnp,Firefox 版是 [email protected]。SwitchyOmega 3 的 README 链接到它的 Chrome 商店页面,ID 是 pfnededegaaopdmhkdmcofjmoldfiped。ID 会出现在商店页面的网址里,也会出现在扩展的详情页上。对不上,就卸掉。
不装扩展也能做到的办法
很多时候,扩展可以完全不装:
- Firefox 自己的代理设置,放在一个专门用来走代理的 Firefox 配置文件里。Firefox、Chrome 和 Edge 三者之中,只有 Firefox 有自己的代理表单;登录信息由它自己的提示框来问,可以交给 Firefox 的密码管理器记住,而不是交给某个扩展。设置面板见浏览器指南。
- 系统设置,适合整台电脑都要走代理的情况。Windows 和 macOS 指南两者都讲了,也提醒了:凡是遵循系统设置的应用都会跟着走。
- 给扩展单独开一个浏览器配置文件。 扩展是按配置文件安装的,专门用来做代理相关工作的配置文件,能把扩展看到的东西限制在这部分工作里。
- 干脆不用浏览器。 脚本和机器人直接在代码里设置代理,本站每一篇编程语言指南都是这么做的。
- 用 IP 白名单代替密码。 代理如果直接放行你的地址、不要求登录,就没有任何代理密码需要存在扩展里。
扩展也解决不彻底的问题
浏览器代理承载的是浏览器的网页请求。WebRTC 用于通话和部分网页功能,它可能另走别的路线,暴露你自己的地址。FoxyProxy 的“限制 WebRTC”选项正是为此修改浏览器的 WebRTC 策略;按 FoxyProxy 帮助页的说法,其中的“禁用非代理连接”既不暴露你的公网地址,也不暴露本地地址。请到 WebRTC 检测页面实际看一下结果,不要想当然。
安装前的检查清单
- 从开发者公布的链接安装,ID 和它列出的一致。
- 最近有更新,作者没有宣布放弃。
- 源代码或至少 manifest 是公开的,问题追踪仍然活跃。
- 权限只限于这份工作:代理、网站访问、请求和登录处理、存储、标签页。多出来的每一项,都能找到理由。
- 代理登录信息只用于代理,不做他用。
- 除非你希望登录信息进入浏览器账号,否则关掉设置同步。
- 同一时间只装一个代理扩展。两个会争抢同一项设置,而浏览器只让其中一个生效。
- 不用了就卸载。
快速问答
代理扩展能看到我的密码吗? 拥有请求权限和全部网站访问权限的扩展,能读到浏览器发出的网址、请求头和表单数据,这就包括你在登录表单里提交的内容。https 保护的是浏览器和网站之间的那段路,管不到浏览器内部,而扩展恰恰运行在浏览器内部。请按这个分量来决定信不信任它。
FoxyProxy 安全吗? 它是开源的,有人维护,申请的权限正好是切换工具需要的,没有多要。从官方条目安装,并核对 ID。
SwitchyOmega 安全吗? 原版已经无人维护,在 Chrome 里也已被停用。它仍在维护的分支 SwitchyOmega 3 是开源的,申请的权限同样不多。
ProxyPanda 在其中的位置
我们的代理使用标准的 HTTP 和 SOCKS5,所以 FoxyProxy、仍在维护的 SwitchyOmega 3、Firefox 自己的设置都能用,完全不用浏览器也行。各自的设置方法见 FoxyProxy 和 SwitchyOmega 指南。控制台里的 IP 白名单允许一个地址只凭主机和端口连接,你可以让密码完全不进浏览器。至于该向谁买,代理服务商安全吗?合规代理怎么选一文列出了值得先问的几个问题。