Greasy Fork

Shined up real nice.

Greasy Fork is available in English.

用户脚本有能力加载和执行其他脚本。最直接的方法是通过 @require 来加载,但也有其他的途径——例如用 XmlHttpRequest 来下载外部脚本,并将其注入 DOM。

虽然这是一个很有用的功能,并且大多数脚本作者将其用在合法目的,但它也可以被恶意使用。Greasy Fork 的一项核心原则就是,必须能让用户阅读和检查脚本代码。而外部脚本可能用多种方法绕过这一原则:它们可以在用户不知情的情况下悄悄改变,而不留下历史记录;它们可以对不同的用户采用不同的代码;它们还可以在知名的库之中插入恶意的代码,以期逃避用户的检查。因此,即便某位用户检查了一个外部脚本,并确定它此时是安全的,他也无法保证该脚本在过去和将来不会包含恶意代码。

为了允许脚本作者继续使用外部脚本,Greasy Fork 有一个 URL 形式的白名单,只允许引用白名单中的外部脚本。白名单中包含的网站应该是:

目前的白名单包括:

如果您尝试发布的一个脚本用 @require包含了此名单之外的外部脚本,您将无法保存您的脚本。

如果您想加载的外部脚本是一个 JavaScript 库(例如 jQuery 或者 YUI),请访问上面列出的网站,看看是否能找到它的链接。cdnjsjsDelivr 提供了大量的常用库。

如果以上网站均没有您想引用的外部脚本,请告知我们,以便我们查找它的链接(乃至我们自己托管)。

如果您想包含的脚本是你自己写的,你可以在 Greasy Fork 上将它提交为一个单独的项目,选择“库”作为它的类型,然后你就可以在你的脚本中引入自己发布的这个库了。