每一个问题都是机会

Greasy Fork 引用来自外部脚本时报错,更新失败! An error is reported when quoting an external minimized script.

文章目录
  1. 问题
  2. 报错信息
  3. 原因
  4. 解决方案
  5. 免费 CDN:jsDelivr + Github 用法

问题

我编写的油猴脚本中引用了来自 GithubJavaScript 脚本:

//@include https://cdn.jsdelivr.net/gh/nwcell/ics.js@0.2.0/demo/ics.deps.min.js

但是当我更新我的脚本代码时,Greasy Fork 提示我不允许引用这个外部脚本。

报错信息

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 后的链接中找到。

示例:

  1. 打开 https://github.com/nwcell/ics.js/blob/master/demo/ics.deps.min.js

  2. 页面按下 y

  3. 地址栏会出现带 Hash 值的文件链接,复制 Hash

  4. 将版本号0.2.0替换成 Hash

    // 原来的链接
    //@include https://cdn.jsdelivr.net/gh/nwcell/ics.js@0.2.0/demo/ics.deps.min.js
    // 替换后的链接
    //@include https://cdn.jsdelivr.net/gh/nwcell/ics.js@dfec67f37a3c267b3f97dd229c9b6a3521222794/demo/ics.deps.min.js
  5. 通过这样的方式,能够符合 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 值/文件路径
赞(0)
未经允许不得转载:技术好学屋 » Greasy Fork 引用来自外部脚本时报错,更新失败! An error is reported when quoting an external minimized script.
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址