更新时间:2022-07-26 11:58
Greasemonkey,简称GM,中文俗称为“油猴子”,是Mozilla Firefox的一个附加组件。它让用户安装一些脚本使大部分HTML为主的网页于用户端直接改变得更方便易用。随着Greasemonkey脚本常驻于浏览器,每次随着目的网页打开而自动做修改,使得运行脚本的用户印象深刻地享受其固定便利性。
Greasemonkey可替网页加入些新功能(例如在亚马逊书店嵌入商品比价功能)、修正网页错误、组合来自不同网页的资料、或者数繁不及备载的其他功能。写得好的Greasemonkey脚本甚至可让其输出与被修改的页面整合得天衣无缝,像是原本网页里的一部分。
大部分Greasemonkey使用者脚本都是自行撰写,使用对某网站专用的JavaScript代码,透过文档对象模型(DOM)接口对网页内容做操作。维护了个 Greasemonkey 数据库。该数据库描述哪个网址网页对应到哪个脚本。(注意:废弃脚本仓库 可能还保留许多还没合并到新仓库)。当使用者加载匹配的网页,Greasemonkey便呼叫相关的脚本,而该脚本便为该页加入输出结果、删除该页的部分、或者移动碍眼的部分。Greasemonkey脚本亦能透过非网域绑定的XMLHTTP要求来查询外部HTTP资源。Greasemonkey亦遵循某使用者名.user.js 的格式,这让当该特定使用者拜访时 Greasemonkey 可自动侦测并提供安装选项。除了JavaScript代码,Greasemonkey脚本包括有限可选用后资料集。该后资料集描述了脚本名称、脚本描述、网址用来区分同名脚本的位址空间、以及原本该脚本为哪些网址撰写的列表。
Greasmonkey脚本写作过程要求高技术 (虽然比起写个五脏俱全的Firefox扩展简单点)。这意味着非常少的一般使用者可以实际上撰写 Greasemonkey 扩展。不过,Platypus 扩展可让使用者可以编辑网页 (删除或者移动某碍眼的部分)。Platypus随后将结果存成常驻的Greasemonkey脚本。
使用者群已发展下列的脚本:
* 调整Gmail让Google Reader内嵌,因而提供RSS新闻订阅的选项。
* 当线上浏览某本书时同时显示对手网站同本书价钱。
* 去除来自某些站的广告,包括弹出视窗与Google文字广告。
* 改变网页的版面,包括原本该网页作者未考虑到的元素大小与浏览器画面大小。
* 自动完成表单。
* 浏览某些布告栏网站自动过滤特定的发帖人。
* 增删网页上的某些功能。
* 让使用者从某些视频站点如Google Video以及YouTube存下FLV视频档案。
* 从现行网页找寻任何RSS新闻订阅,并将它们显示在可扩展、漂浮于网页上的面板里。
许多Firefox社群的成员,以及相当多的技术分析师,警告Greasemonkey的使用泛滥,并且相关的使用者脚本技术需要在发布时更注意。他们的关注包括:
* 可能让某些广告网站没生意做。许多Firefox使用者已经利用Adblock Plus屏闭掉网页广告,不过 Greasemonkey 可被用来换掉原本广告主的广告成为它竞争对手的广告。这导致对网页广告人为灌水,或者愚弄被付费广告商的统计程式。
* 增加网站每页的垃圾流量。某些Greasemonkey脚本是设计来取得使用者拜访哪些网页的额外资讯,比如那些从 de、黑米、或者Bloglines提供的脚本。如果这些脚本被广泛使用,它们有可能造成被拜访网站不必要的额外流量。
* 随着许多网页专用的脚本激增,分别某网页的问题是实际上网页编程上的臭虫,还是访问者本地端Greasemonkey脚本的困难度也随之增加。基于如此,抓虫除错更为麻烦。
*脚本错误大致肇因于Greasemonkey开发者与网站开发者缺乏互动。
* Greasemonkey 只有对 HTML 网页有效,对 Flash, Flex, 以及 Silverlight 开发的网页无效。
* 富网络程式 (Rich Internet Applications) 对 Greasemonkey脚本开发者来说比起静态网页更困难控制。这是因为该网页程式执行越多的逻辑,Greasemonkey 作者得考虑得越复杂才不会打扰到原本程序的功能。
* 原本的网站开发者推出新版时会造成相对应 Greasemonkey脚本停止工作。因此,没有与原本网站开发者互动而撰写的 Greasemonkey脚本可能造福一时,但终非长远之计。
其他Mozilla为基础的浏览器
Greasemonkey可直接用于Firefox、Flock、与Epiphany。Epiphany Greasemonkey是Epiphany扩展包的一部分。然而,该扩展并不完全相容于2.15.1版,导因于某些Greasemonkey应用程式接口功能 (例如:GM_getValue) 不支援。此外,也有自订版本的 SeaMonkey:。
Opera
Opera第8版也增加了使用者脚本功能。随着Opera与Firefox支援W3C文档对象模型(DOM),许多Greasemonkey使用者脚本在Opera下执行正确。
Safari
Creammonkey 与 PithHelmet (共享软件) 是Safari浏览器下类似的工具。
Konqueror
Konqueror 使用者脚本是一种给 KDE Konqueror 的网页修改工具,其目的在相容于Greasemonkey脚本与后资料集。它以一种KPart而存在。
Chrome
Chrome原生支持安装Greasemonkey脚本,但是不支持firefox Greasemonkey的自定义函数。
Internet Explorer
在Internet Explorer下,IE7pro、iMacros、Trixie (最近更新于2005)、Turnabout (最近更新于2006)、与 Greasemonkey for IE (最新更新于2006) 等等插件提供类似的功能。 Turnabout 曾经是BSD许可的开源软件,不过自2006年9月,源代码不再提供。 Firefox 下的 Greasemonkey 因为持续开发所以旧的IE下的 Greasemonkey插件便缺少了现代脚本所需要的功能。
*Proxomitron, 开发于1990年代晚期,程式于 JavasScript 前加载并主动监视 HTTP 串流,因此它为跨浏览器相容,并且透过正则表达式相似的比对语言提供类似Greasemonkey 的功能。
* Proximodo受proximitron启发并可相互操作;是一种开源软件,客户端代理服务器所以允许对网页内容动手脚。
*Privoxy是一种开源软件,客户端代理服务器所以允许对网页内容动手脚。它支援很多操作系统。
* MouseHole是一种开源软件,客户端代理服务器,允许对网页内容透过Ruby动手脚。
* Monkeygrease 是一种JavaServlet可用来修改客户端接收到之前的Java (版权软件) 网页程式输出。
* Chickenfoot 是一种 Firefox 的扩展用于让终端使用者与黑客于网页上脚本互动。
* 给 Firefox 用的iMacros是一种 Firefox 的扩展让使用者纪录并重播所谓“因特网宏”,用来执行网页自动化、分析网页、以及测试网页。
* Stylish 是一种 Firefox 的扩展透过改变用户端的 CSS,进而改变网页的编排。
* Bookmarklets 可以在任何网页随心所欲的执行 JavaScript,不过它需要使用者点击启用,而非自动执行。
* Firebug 是一种开发者扩展让使用者随心所欲的透过 DOM 即时改变网页。
在没有扩展像 Greasemonkey 的情况下,修改网站也可以透过下面几种方式:
① 于网址列键入 javascript:,或者使用 bookmarklets。
②使用浏览器的 DOM 检视器。
③ 使用本地端 HTTP代理服务器,如WebWasher或Proxomitron以更改 HTML。
④ 使用 Opera浏览器+ user .js脚本。