浏览器调教指南 - Chromium 篇 也已经到位。
这两篇里我没有涉及 Firefox Container 或者通用的多 profile 方案,因为这本质上并不算「调教」,
影响不到默认的设置,只能说是「隔离」,而且是最基础也最废物的本机环境隔离。
由于我启用 private browsing,退出后删除除了网站设置的全部数据,虚拟机硬盘也设置为 immutable,
一直对多 profile 方案不屑一顾,写本文搜索各种无用列表的时候才想起来还有这种方法。
就这么简单提一句,不再多说。
闲话到此为止,在前文注释中我曾提到,本篇会喷各种插件推荐,并且给出更加「原生」或可靠的方案。
不需要的
需要注意的是,对本节中各种插件的反面态度,前提是完全掌握『浏览器调教指南』,高屋建瓴。
走路都还走不顺,就想着跑马拉松,甚至盲目修炼水上漂,大概率会死得很彻底😜。
哪怕这么说,整个列表的个人色彩恐怕还是非常浓厚,我只能先送上四个字
求同存异
不知道会列多少,形式还是采取简单的 bullet list:
- HTTPS Everywhere,是的,即将步入 5202 年,哪还有多少 HTTP 网站,连 Tor Browser 都不再默认安装这个插件,普通人直接 HTTPS-only 也未尝不可。如果出于特殊需要不得不访问,建议针对这些网站单独配置白名单,忽略警告。
- NoScript
- 是的,我就是针对 Tor Browser :-)
- 不需要 NoScript 并不意味着时刻启用 JavaScript,事实上你完全可以用 uBlock Origin 的 hard mode 来替换 NoScript。如果你连初次配置都不想,无所谓 JavaScript,那也一样可以用 ubo 的 medium mode 或 easy mode
- 为什么 ubo 是更好的选择?因为它的颗粒度更细,使用 NoScript 你无法只允许
a.blahblah.xyz
而保持对于 blahblah.xyz
的封锁,允许图片、视频、JavaScript 等操作也要比 ubo 繁琐。uMatrix 曾经是另一个替代方案,但停更多年,还是 ubo 活得最好
- Canvas Blocker,Firefox 自带这一功能(RFP, Resist Fingerprinting),Chromium 禁用 WebGL 即可。相信我,一个需要你启用 WebGL 的网站可能依然是个正常网站(比如 itch.io 的很多 Unity for Web 游戏就需要 WebGL),手动放行即可,但要禁用 RFP 才能访问的网站,你大概率也不需要。
- WebRTC Leak Prevent,Firefox/Chromium 均可配置(about:config/chrome://flags),不需要插件。有的人可能会反驳说浏览器实现不够彻底,但 IP 是不会泄漏的,如果你的 threat model 已经到了考虑浏览器指纹 的程度,建议直接 Tor Browser 或者 I2P
- Cookie AutoDelete
- 都不需要 policy-templates,设置里就能配置自动删除,美中不足就是不支持 Cookie AutoDelete 那种定时删除,但我本来就设置的默认启用 private browsing + 退出删除所有 cookies,毫无影响
- 说到 cookies,我更推荐通过 cookie-editor 管理,甚至可以只允许插件获取单个网站的 cookies。本来也没有多少账号需要保持登录状态,对于少数网站,允许 cookies 权限之后导出即可,不需要重复输入密码,哪怕是使用密码管理器 + 浏览器插件,也要多次点击,没有导入 cookies 来得方便。
- 引申开来,可以在虚拟机 A 中执行登录操作并导出 cookies,然后在虚拟机 B 导入
- 如此一来,连输入环节都省了,虚拟机 B 根本不可能在浏览器层面获取对应账号的密码
- 密码管理器 + 插件毕竟还是需要传输密码数据到浏览器,还需要保留一份数据库到虚拟机 B,平添风险
- 而且何况有的网站不允许这么操作,只能自动填充,这安全性只能说比手动输入强一点🤏
- Click & Clean,同上,设置即可配置,装个插件纯属多此一举
- Proxy Switchy Omega
- 是的,99% 的情况下你 不 需 要额外的代理配置插件,现有的 GeoIP/GeoSite 库和路由规则已经足以涵盖绝大部分使用场景,小部分 DIY 即可,这东西作用非常局限,我都想不通这大规模滥用的局面是怎么造成的
- 先不说 Edge 商店里满天飞的带毒版本,Chromium 也已经停止支持 ManifestV2 扩展 ,虽然有基于 MV3 的 fork ZeroOmega,目前 bug 也是一大堆
- 如果你还
坚持嘴硬保持怀疑,有个简单粗暴的方法来判断:Kali, WireShark, Fiddler, PAC, privoxy, PhantomJS, Selenium, Playwright 如果你一个都不认识,那肯定就不需要= =
- Tampermonkey,violentmonkey,你不需要闭源插件
- 搜索引擎插件,因为通过 policy-templates 同样可以设置,不要相信搜索引擎说的什么更加安全、更多功能,锁定默认搜索引擎和所谓各种「优化」的本质和我前文的调教手段只是殊途同归,着实大可不必
- Flash 插件,Pale Moon + CleanFlashinstaller + clean-flash-builds 默秒全,详见 我的 Windows 软件之道#推荐
- 大部分下载插件(下载辅助、资源嗅探等等)
- 首先是 HLS/M3U8 类型的视频流,毕竟这种可能最难下载 ,使用用户脚本注入能解决 99% 的网站,剩下那 1%,我相信下载插件也搞不定,需要手动逆向才行。
- 其次,对于常见的图片/视频站,已经有足够成熟的命令行解决方案,浏览器插件完全是更弱的下级替代。gallery-dl, yt-dlp 和 you-get 足以解决大部分网站,如果不行,就配上登录账号后的 cookies。
- 再者,对于上面三驾马车也搞不定的网站,一般就是套用各种模板的视频/图包站,网页资源的链接基本都包含在源码中,写个爬虫解析网页批量抓取也不是什么难事。
- 如果连爬虫都懒得写,也有更简单的方法:W3M + wget
w3m $URL
- Shift + L(显示网页上的全部链接),另存为文件,比如
links.txt
- 手动筛选一下需要下载的链接,如果 URL 使用相对路径,三句话让 GPT 写个拼接脚本
wget -i links.txt
- 结束
- Stylus 和所有特定网站的定制化插件,它能做到的,用户脚本和 Firefox userContent.css 一样能做到,它做不到的,policy-templates 和 Firefox userChrome.css 还是能做到
- 「工具箱」类型的插件
- 这些工具完全可以从浏览器中剥离出来独立运行,何必安装插件徒增风险,用现成的脚本或者自行部署开源替代,相信都是一抓一大把。
- 何况很多「工具箱」、「脚手架」确实不干净,源码一目了然却盗取 cookies 的用户脚本都一大把,权限更大的插件更是劣迹斑斑。
- 所有需要登录才能使用的插件 ,原因同上
- 密码生成器(不是管理器配套插件),没仔细代码审查过你压根就不知道这个「随机」有多随机,更别提人家会不会顺手就把你 URL 和账号密码一起直接传给别人的服务器,这种活还是交给离线的密码管理器 才靠谱
- 单独的两步验证(2FA)插件
- 不局限于浏览器插件,我认为 2FA 本身就应该和密码管理放在一个篮子里。如果一个密码管理器连 2FA 功能都不提供,还是早点弃用比较好
- 这点我感觉非常有争议,但个人是这么认为的,稍微解释一下
- 理论上,通过分离账号密码和 2FA,你可以保证 邪恶的 Eve 在获取你的账号密码之后不能直接登录,相当于上了额外一道锁
- 事实上,更有可能发生的是 单点故障,密码管理器或 2FA 应用,任何一个炸了都会导致你失去开启 2FA 的全部账号
- 而且借助密码管理器 + 浏览器插件,你也可以自动填充 2FA,操作步骤和分离是差不多的
- 所有的比价插件,脚本不香吗?
- 所有的钱包插件,把金融账号/虚拟货币交给一天成千上万个网络请求,一年几十个 0day 的浏览器?
- 所有的同步插件,我不需要连备份/恢复功能都没有的插件,而设置全都可以定制化,密码使用密码管理器,同步和账号功能毫无存在价值
- 所有的标签、主页、启动器插件,如果你有标签管理障碍,先解决的应该是自己而不是标签🙄
- 插件管理插件,如果完全遵守本文,符合要求功能还不重合的组合本身就只有个位数插件,插件管理也就无从说起
- 所有的书签插件,浏览器书签只能在 GUI 使用,对于活在命令行的人,buku 要更合适
插件标准
上面的列表七七八八已经说得差不多了,这里就随便列几点,我也不一定严格遵守,最终还是得看实用性:
- 开源,最好是自由软件
- 用户足够多,这样才能及时发现潜在问题,具体数目得根据插件的使用场景判断,小众领域 100 stars 就非常之多,而烂大街的广告过滤,还是得 uBlock Origin 这种数量级才算得上可靠
- 维护超过 2 年,真的有很多插件是更新不到三个版本就弃坑的,没有长期支持,出了 bug 也没人管,对新兴领域这点会适当宽容
- 提供备份/恢复配置的功能,WebDAV 同步等等只能算 bonus
- 无广告,并且不需要账号即可体验完整功能
我使用的插件
「浏览器调教指南」系列三篇文章透露了不少,其实都能推测出来:
- Cookie-Editor,跨 VM 登录
- Dark Reader,其实可以用用户脚本或 CSS 解决,但是我懒
- KeePassXC-Browser,只在「登录机」使用,其他机器直接导入 cookie 即可
- LocalCDN,源自停更多年的 Decentraleyes,用本地资源替换 CDN,减少访问请求加快网页加载,这款插件也是假冒伪劣高发区,安装时注意辨别
- uBlock Origin
- Violentmonkey
- SingleFile,保存完整网页(包括图片、CSS、字体等资源)为单 HTML,可以当成离线归档使用(虽然原理上不一样),有些网站需要 设置 referer,MV3 版本仍在开发,另有 single-file-cli
- Zotero Connector,联动 Zotero,不做研究就不常用
- 其他一些特定网站的增强插件,其实可以通过用户脚本解决,上面喷了那么多这里我就不举反例了
我使用的脚本
由于安装时会弹出确认框,源码不加混淆则一览无余,建议哪怕完全不懂代码也要塞给 GPT 问问漏洞。
以及脚本如果出现用下面这种方式匹配的,99.99% 的情况你需要重新考虑使用价值和作者的开发水平:
前几个月进行基础设施迁移的时候大幅重构过,现在基本用的都是自己写的脚本,使用场景很局限,不足为外人道,简单列一下略微通用的:
还有一些特定网站的,像 VNDB 之类的就不介绍了:
- 京东
- BiliBili,其实作为 A 站遗老很少看
- Bilibili-Evolved,V1 自带很多插件,V2 默认仅提供框架,可以先安装 V1,再用设置迁移导入插件,四舍五入等于预装很多实用插件
- 解除 B 站区域限制,不予介绍
- 也有类似下面评价过滤的用户/评论过滤功能,但是现在不登录叔叔连评论都舍不得给你看(虽然有办法绕过),本来用得少就无所谓
- Steam 增强
结语
至此本系列就告一段落,虽然早就习惯用各种企业批量部署的方式对浏览器进行调教,但写一个系列的想法还是源自 通过注册表允许继续使用 MV2 扩展。
一个人的命运虽然要考虑历史的进程,但势必少不了自我奋斗,浏览器的调教也是如此。
各种标准和浏览器本身都在随着互联网在不断发展,本系列介绍的方法只能说适用于当前的环境。
Netscape Navigator 和 Internet Explorer 互搏如今看来已经是遥远的历史,Project Xanadu®、Gopher 更是无人问津。不知道今天的互联网形式还能存在多久,且行且珍惜。
Vinfall's Geekademy
Sine īrā et studiō