如何解决私有域名/GitHub托管的Tampermonkey userscript自动更新问题
Tampermonkey 脚本私有域名更新问题解答
问题1:Tampermonkey检查脚本更新时,是否会通过其自有服务器中转请求?
默认配置下不会。
- Tampermonkey默认直接从用户脚本元数据中配置的
@updateURL地址发起请求拉取脚本元信息,完成版本比对,整个请求过程由浏览器端的扩展直接发起,不经过Tampermonkey官方服务器中转。 - 只有当你手动在Tampermonkey设置页开启了「通过外部服务检查更新」类的开关时,更新请求才会提交到Tampermonkey官方服务器代拉取,该选项默认处于关闭状态。如果你的更新地址是内网私有地址、无法被公网访问,必须保持这个开关关闭,否则必然更新失败。
问题2:是否支持userscript从私有域名拉取更新资源实现自动更新?
完全支持。Tampermonkey本身不对更新源的域名做公网限制,只要配置的地址能被运行Tampermonkey的浏览器正常访问,就能实现自动更新。
你当前将@updateURL和@downloadURL配置为同一个私有GitHub raw地址的写法本身没有问题,更新失效通常是以下几个常见原因导致的,可以逐一排查:
- 访问鉴权问题:直接在浏览器地址栏打开你配置的脚本地址,确认不需要跳转登录、不需要二次验证就能直接拿到纯文本格式的脚本源码。如果私有GitHub实例需要登录,要确认浏览器保存的鉴权Cookie能被扩展发起的请求正常携带;如果地址存在IP白名单、VPN接入限制,要确保当前浏览器所在网络环境能正常访问该地址。如果Tampermonkey拉取到的内容是登录页HTML、WAF拦截页而非合法脚本,就无法完成更新。
- 版本号配置缺失或未更新:Tampermonkey完全依赖脚本元数据中
@version字段的语义化版本号判断是否需要更新。如果你的脚本头部没有配置@version字段,或者更新代码后没有同步修改@version的值,即使拉取到了新的脚本内容,也不会触发更新逻辑。 - 缓存问题:私有GitHub实例的raw资源如果被CDN、浏览器本地缓存了旧版本,Tampermonkey拉到的始终是旧内容。可以尝试在更新地址后拼接动态查询参数(比如
?v=版本号)绕过缓存,每次发版同步修改参数值即可。 - 元数据格式错误:确认所有元数据字段都完整包裹在
// ==UserScript==和// ==/UserScript==标记块内,格式写错会导致Tampermonkey无法识别版本、更新地址等关键信息。
内容的提问来源于stack exchange,提问作者Human programmer
相关产品推荐
相关产品推荐

