油猴

988 阅读2分钟

介绍

参考 油猴使用指南 01:传说中的「油猴」与用户脚本

油猴最早指代 Firefox 的 Greasymonkey 扩展,后来又有开发者开发出了更强大的 TampermonkeyViolentmonkey 扩展,尽管翻译分别为篡改猴、暴力猴,但如今也被统称为油猴。

油猴的作用就是在页面中加载用户脚本(UserScript),来实现一些自定义功能,比如去广告、解除复制限制等功能,使用语言就是 JavaScript。

各种 monkey 的选择

  • Greasymonkey 目前已接近淘汰状态
  • Tampermonkey 是最火热的,用户群体最多,大部分脚本都是基于 Tampermonkey 写的,所以兼容性最好,但不开源
  • Violentmonkey 是开源的,但兼容性比 Tampermonkey 差一些,毕竟开发者少一些

脚本市场

脚本市场 Greasy Fork 提供了其他开发者写好的脚本,可以直接用。另外还有一些其他的市场,感觉没有这个好,就不推荐了。

如果熟悉 Tampermonkey 的 API,也可以自己动手写脚本。

注:

  • 对于脚本市场中的脚本,一定要注意代码安全性
  • 在控制台的 Element、Network 下都没有看到相应的插入脚本,可能和用户脚本(UserScript) 的概念有关,可能无法直接看到相应代码,暂未了解

脚本推荐

使用 VSCode 编辑脚本

Q402: I want to use an external editor to edit my scripts. How can this be done?
UserScript Sunday: How To Use VS Code as Your Userscripts Editor

在 Tampermonkey 编辑器中只保留 UserScript 开头部分

// ==UserScript==
// @name         my script
// @require      file:///Users/xxx/yyy.js
// ==/UserScript==

通过 @require 引入本地文件(@require 同样能引入远程脚本,如 jQuery、Vue)

// @require      file:///Users/xxx/yyy.js

这样就可以用 VSCode 编辑了

注:

  • 需要给 Tampermonkey 扩展赋予访问本地文件的权限
  • 如果想模块化,那么本地可以新建多个 js 文件,把每一个都 @require

编写油猴脚本的注意点

@namespace:为防止不同脚本的变量命名互相干扰,可使用 @namespace 指定该脚本的命名空间

unsafeWindow:在调用 window 的方法时可能失败,因为在油猴中 window 表示油猴扩展的 window 对象,而非页面的 window,需要用 unsafeWindow 代替

@grant:若需要调用油猴提供的 API,首先要用 @grant 指定要用的 API