tampermonkey 中文文档 下载 App

GM 请求的跨域确认弹窗怎么选:connect 域名白名单的用户侧逻辑

页面角落突然弹出「脚本试图访问 xxx 域名,是否允许?」——这是 GM_xmlhttpRequest 的用户确认机制在工作。看懂它,才知道该不该点允许。

为什么会弹

官方文档对 @connect 的说明定义了这套逻辑:

弹窗还有一个设计细节:起始 URL 和最终 URL 都会检查——脚本声明请求 A 域名、实际被重定向到 B 域名,B 同样要过确认。

弹窗选项的含义

部分脚本作者会故意加一条 @connect *,配合官方提供的「始终允许所有域名」按钮——这个按钮请慎点:它等于对这个脚本敞开全部域名,只该给完全信任的脚本用。

怎么判断该不该允许

  1. 域名和脚本功能对不对得上:下载器脚本请求图床域名,合理;改排版脚本请求统计域名,可疑;
  2. 去脚本说明页找解释:正经作者会在文档里说明请求哪些服务、为什么;
  3. 拿不准就允许一次:一次性的放行不产生持久授权,观察脚本行为再决定;
  4. 发现恶意域名:拒绝后顺手给脚本打差评/反馈,并复核脚本安全判断的清单。

事后管理

与其他确认机制的层次

脚本要能力会过三道门:安装时你确认 @grant 清单(见grant 权限),运行时跨域弹窗确认域名,下载类还有扩展名白名单(见下载函数)。弹窗烦人,但它是你对单个脚本行为的逐域名审计点——别当成障碍,当成提示。