javascript - 来自@require 脚本的@grant GM 函数

标签 javascript greasemonkey tampermonkey greasemonkey-4

我正在编写一系列 Greasemonkey 脚本。这些脚本共享它们的大部分功能,因此我认为提取共同功能很有用。

common.js 中是通用功能,它们调用 GM_functions(例如 GM.xmlHttpRequest)。每个用户脚本 @require [...]/common.js

有没有办法避免在每个 script.user.js 中重复所有元数据:

// @require      [...]/common.js
// @grant        GM.getResourceText
// @grant        GM.xmlHttpRequest
// @grant        GM.setValue
// @grant        GM.getValue
// @connect      localhost
// @resource     styleSheet [...]/style.css

?

我试图在 common.js@grant(或通过调用它 common.user.js),但它看起来像 Greasemonkey无论如何都会忽略它。

我知道这可以被认为是一个安全漏洞,因为由于 @require 的级联 @grants,您可能不知道最终授予了哪些特权。然而,Greasemonkey 可以从逻辑上推断出所有 @required 脚本的最终权限。

我对 @resource 有同样的问题。

最佳答案

这不太可能发生。

  1. 对它的需求很少。
  2. 对它的需求就更少了。
  3. 这将是一个巨大的安全问题:

    1. 各种引擎已经在努力提醒用户脚本正在尝试做什么邪恶的事情——而且大多数用户无论如何都会忽略它。
    2. 确保之前良好的 @require d 文件没有损坏。大多数引擎和脚本甚至不检查 subsource integrity (哈希)放在首位。如果@require,情况会更糟十倍s 可以改变元数据。
    3. 仅确定最终权限可能是一个挑战。在此之前,所有用户脚本引擎都有更重要/更紧急的事情要编码。

我理解以模块化和 DRY 方式编码的愿望,但 super 强大 @require文件不是答案。


您或许可以设置构建环境 (EG Git) 以自动添加 @grant s 一定 @require d 文件,当它组装最终的 .user.js文件。

如果您没有这样的构建/源代码跟踪环境,那么您就是courting disaster无论如何都有超能力(或任何)模块。

关于javascript - 来自@require 脚本的@grant GM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54410321/

相关文章:

javascript - 从 URL 发送带有图像附件的推文

javascript - 如何使用 greasemonkey 有选择地从网站中删除内容

javascript - 无法通过 Firefox 中的键获取存储的对象值

javascript - Chrome 65 阻止跨源 <a download>。强制下载的客户端解决方法?

javascript - window.load 并不总是在 chrome 上触发?

javascript - 在 Chrome 上更改 iframe 内容的 CSS,该 iframe 的 src ="about:blank"

javascript - 将两个数组排序/相交为两个新数组。

javascript - 通过 Ajax 在 JavaScript 中使用来自 PHP 的数据

javascript - jQuery photoResize 函数不起作用

javascript - Tampermonkey 脚本 - 如何防止无限提交