userscripts-mirror.org 脚本安全使用指南

从 userscripts-mirror.org 安装用户脚本,核心风险不在于“能不能装”,而在于脚本本身能做什么、镜像站上的版本是否可信。用户脚本运行在浏览器扩展的沙箱或页面上下文中,可以读取和修改你访问的网页内容,包括表单数据、登录态页面和页面上的敏感信息。因此,安装前应把每个脚本当作一段需要审查的第三方代码,而不是普通浏览器插件。

用户脚本的权限边界

用户脚本通常通过 Tampermonkey、Violentmonkey、Greasemonkey 等管理器运行。它被授予的能力取决于管理器配置和脚本头部的 @grant、@match、@include 等元数据:

  • @match / @include 决定脚本在哪些网址上自动执行。
  • @grant 决定脚本能否调用跨域请求、访问存储、操作剪贴板等扩展 API。
  • 没有 @grant 时,脚本一般只能操作当前页面 DOM,但仍能读取页面上的全部文本和表单值。

这意味着一个脚本即使只声明“修改页面样式”,也可能在后台读取你当前页面的内容。安装前先确认它请求的域名范围是否与功能匹配。

安装前的检查清单

在 userscripts-mirror.org 上点“安装”之前,建议按以下顺序核对:

  1. 看脚本源码:安装页通常提供源码或“查看代码”入口。重点看是否有向陌生域名发送 fetch、XMLHttpRequest、GM_xmlhttpRequest 的代码,以及是否读取 document.cookie、localStorage、密码框内容。
  2. 看作者与更新记录:作者是否有其他脚本、是否有版本历史。长期无更新但仍在分发的脚本,可能已不兼容当前网站结构,也可能无人维护安全问题。
  3. 看安装量、评分和评论:这些是社区信号,不能替代源码审查,但能提示脚本是否被广泛使用、是否有人报告异常行为。
  4. 确认镜像版本与原始仓库的关系:镜像站可能缓存旧版本,也可能在转载时改动代码。如果脚本同时发布在原始仓库,优先以原始仓库的版本和说明为准。

镜像站特有的风险

userscripts-mirror.org 作为镜像/聚合站点,内容来源和更新节奏不由脚本原作者直接控制。可能出现的情况包括:

风险 表现 应对
版本过期 镜像上的脚本落后于原始仓库,功能失效或缺少安全修复 对照原始仓库的版本号或更新时间
内容被改动 转载过程中代码被插入额外逻辑 与原始仓库源码逐段比对,或直接从原始来源安装
来源不明 脚本没有可核实的作者或项目主页 不安装,或仅在隔离环境中测试
失效链接 安装按钮指向的脚本文件已不可用 换用原始仓库或其他可信来源

镜像站本身不保证脚本的完整性和安全性。把它当作“发现脚本的入口”比当作“可信分发渠道”更稳妥。

限制脚本运行范围

安装后,可以通过管理器收紧权限,降低潜在影响:

  • 在脚本设置中把 @match 限制到真正需要的具体域名,避免使用 *://*/* 这类全站匹配。
  • 关闭不使用的脚本,而不是让它们长期在所有页面运行。
  • 对涉及登录、支付、邮箱的页面,确认没有无关脚本在运行。
  • 保持浏览器和脚本管理器为最新版本,扩展更新通常包含权限模型和安全修复。

常见卡点

  • 安装按钮没反应:通常是脚本管理器未安装或未启用,先确认扩展已开启。
  • 脚本不生效:检查 @match 是否覆盖当前网址,以及网站是否改版导致选择器失效。
  • 脚本要求额外权限:管理器会弹出授权提示,逐项确认是否与脚本功能相关,不相关就拒绝。
  • 同一脚本多个来源:优先选择作者明确指向的原始仓库,镜像版本仅作参考。

如果无法确认脚本来源和代码行为,最安全的做法是不安装。用户脚本的便利性来自它对页面的深度控制,这也正是它需要被审查的原因。

userscripts-mirror.org