问题
我编写的油猴脚本中引用了来自 Github
的 JavaScript
脚本:
//@include https://cdn.jsdelivr.net/gh/nwcell/[email protected]/demo/ics.deps.min.js
但是当我更新我的脚本代码时,Greasy Fork 提示我不允许引用这个外部脚本。
报错信息
An error is reported when quoting an external minimized script.
引用来自外部的最小化脚本时报错
原因
An error is reported when quoting an external minimized script.
引用来自外部的最小化脚本时报错
这是 Greasy Fork 的安全策略导致的(避免恶意修改外部脚本达到攻击目的),为了解决这个问题,我们需要更改引用外部脚本的方式。
Greasy Fork 限制了对外部脚本的引用,只允许在特定情况下使用外部代码,详细信息请参考:https://greasyfork.org/zh-CN/help/external-scripts
解决方案
引入的 JS 文件需要使用完整的提交哈希,而不是版本标签。这是因为 GitHub 允许在不同版本标签之间切换,可能会导致库在之后被悄悄替换为后门或恶意软件。而使用显式的提交哈希则可以让这些更改可检测。
要找到完整的提交哈希,你可以访问对应文件的 GitHub 页面,按下 y
键查看文件时,地址栏中会显示完整的提交哈希。另外,它也可以在 Latest commit
后的链接中找到。
示例:
-
打开 https://github.com/nwcell/ics.js/blob/master/demo/ics.deps.min.js
-
页面按下
y
键 -
地址栏会出现带
Hash
值的文件链接,复制Hash
值 -
将版本号
0.2.0
替换成Hash
值// 原来的链接 //@include https://cdn.jsdelivr.net/gh/nwcell/[email protected]/demo/ics.deps.min.js // 替换后的链接 //@include https://cdn.jsdelivr.net/gh/nwcell/ics.js@dfec67f37a3c267b3f97dd229c9b6a3521222794/demo/ics.deps.min.js
-
通过这样的方式,能够符合 Greasy Fork 的安全策略并顺利引用外部脚本。
免费 CDN:jsDelivr + Github 用法
官网:
https://www.jsdelivr.com/?docs=gh
使用方法:
https://cdn.jsdelivr.net/gh/你的 Github 用户名/你的仓库名@发布的版本号/文件路径
要符合 Greasy Fork 的安全策略改为:
https://cdn.jsdelivr.net/gh/你的 Github 用户名/你的仓库名@提交的 Hash 值/文件路径
最新评论
5211314
能不能教我 一点不会