Greasemonkey

更新时间: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下,IE7proiMacros、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代理服务器,如WebWasherProxomitron以更改 HTML。

④ 使用 Opera浏览器+ user .js脚本。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}