@
pepsiwant GreaseMonkey (油猴),TamperMonkey (篡改猴),ViolentMonkey (暴力猴)
这三者都属于 user script manager,由于油猴历史最悠久,所以大家都习惯用“油猴”去指代所有的 user script manager 。
user script manage 之所以能允许用户编写 js 脚本去修改源网页,是因为浏览器本来就暴露了 userScript 接口,允许用户写 js 脚本去瞎搞别人的网页。具体可以看 MDN 的文档→
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/userScripts/Working_with_userScripts浏览器的插件( Plugin )与扩展( Extension / Add-on )是有区别的。
plugin 既可以作用于浏览器本身,也可以作用于网页,它调用的是操作系统的接口,因此可以用 C/C++等去编写浏览器插件。比如 Flash player 插件。一般在网页中用 <object> 或者 <embed> 标签声明的部分,也靠插件来渲染
Extension 只能作用于网页,它调用的是浏览器的接口。用 HTML + js 开发。比如著名的 Adblock plus 。
油猴属于 extension 。而且如果网站开启了 CSP (内容安全策略),油猴脚本也将无法使用。
CSP (内容安全策略)是浏览器自带的功能,网站可以开启它,也可以不开启,CSP 简单来说就是 [禁止第三方脚本的载入] ,这样可以防止恶意脚本对网站进行敏感操作。
油猴脚本因此也无法作用于开启了 CSP 策略的网站。比如知乎、Github 、Twitter 、Quora 等。
不过 TemperMonkey 可以绕过 CSP 策略,它也是三款 extension 中唯一一个有这项功能的 extension 。所以会出现这样的情况:同样一个脚本,在 TemperMoneky 有效,但在 GreaseMonkey 和 ViolentMonkey 上无效。
temperMonkey 这样做的代价是小白玩家容易被恶意脚本攻击。因为 CSP 策略被关了的话,小白看不懂脚本的源码就乱装脚本,脚本执行一些恶意操作都不知道(比如读取在银行网页上输入的密码)。temperMonkey 有两个模式可选:菜逼小白,高端玩家,所以建议大家选小白模式。