Greasemonkey,簡稱GM,中文俗稱為「油猴」,是Firefox的一個附加元件。它讓用戶安裝一些指令碼使大部分HTML為主的網頁於用戶端直接改變得更方便易用。
Greasemonkey可替網頁加入些新功能(例如在亞馬遜書店嵌入商品比價功能)、修正網頁錯誤、組合來自不同網頁的資料、或者數繁不及備載的其他功能。寫的好的Greasemonkey指令碼甚至可讓其輸出與被修改的頁面整合得天衣無縫,像是原本網頁裏的一部分。
技術明細
大部分Greasemonkey用戶指令碼都是自行撰寫,使用對某網站專用的JavaScript代碼,透過文件對象模型(DOM)介面對網頁內容做操作。userscripts.org維護了個Greasemonkey資料庫。該資料庫描述哪個網址網頁對應到哪個指令碼。(注意:廢棄指令碼倉庫可能還保留許多還沒合併到新倉庫的指令碼)。但由於userscripts.org在2014年5月發生技術故障而無法訪問,一些開發者另設網站以釋出指令碼,Greasemonkey官網也在其官方Wiki站點設立列表(頁面存檔備份,存於互聯網檔案館)以展示這些網站。
當用戶載入匹配的網頁,Greasemonkey便呼叫相關的指令碼,而該指令碼便根據指令碼內容改變網頁的內容。Greasemonkey指令碼亦能透過非網域綁定的XMLHTTP要求來查詢外部HTTP資源。Greasemonkey亦遵循某用戶名.user.js的格式,這讓當該特定用戶拜訪時Greasemonkey可自動偵測並提供安裝選項。除了JavaScript代碼,Greasemonkey指令碼包括有限可選用後資料集。該後資料集描述了指令碼名稱、指令碼描述、網址用來區分同名指令碼的地址空間、以及原本該指令碼為哪些網址撰寫的列表。
- Greasefire擴充[永久失效連結]:同Greasemonkey擴充配合使用,自動顯示在userscripts.org的指令碼庫中是否存在可以在當前正在瀏覽網站上使用的指令碼,如果存在Greasemonkey的猴頭圖示背景就會變為彩色的。右鍵點擊猴頭圖示,最上面一行就是打開當前網站可用指令碼列表的選項。
- Platypus(platypus
.mozdev )附加元件可讓用戶可以編輯網頁(刪除或者移動某礙眼的部分)。Platypus隨後將結果存成常駐的Greasemonkey指令碼。[永久失效連結].org
典型的指令碼
用戶組已發展大量的指令碼,以下是其中的一些應用:
- 調整Gmail讓Google Reader內嵌,因而提供RSS新聞訂閱的選項。
- 當線上瀏覽某本書時同時顯示對手網站同本書價錢。
- 去除來自某些站的廣告,包括彈出視窗與Google文字廣告。
- 改變網頁的版面,包括原本該網頁作者未考慮到的元素大小與瀏覽器畫面大小。
- 自動完成表單。
- 瀏覽某些佈告欄網站自動過濾特定的發帖人。
- 增刪網頁上的某些功能。
- 讓用戶從某些影片站點如Google Video以及YouTube存下FLV或MP4影片檔案。
- 從現行網頁找尋任何RSS新聞訂閱,並將它們顯示在可延伸、漂浮於網頁上的面板裏。
- 將百度貼吧輸入框裏的文字轉換為圖片發表,或者在發貼時自動附加指定陳述式(俗稱「小尾巴」)。
隨用戶指令碼引發之技術、操作、及道德上的問題
許多Firefox社群的成員,以及相當多的技術分析師,警告Greasemonkey的使用氾濫,並且相關的用戶指令碼技術需要在發佈時更注意。他們的關注包括:
- 可能讓某些廣告網站生意受阻。許多Firefox用戶已經利用Adblock Plus屏閉掉網頁廣告,不過Greasemonkey可被用來換掉原廣告主的廣告成為它競爭對手的廣告。這導致對網頁廣告人為灌水,或者戲弄被付費廣告商的統計程式。
- 增加網站每頁的垃圾流量。某些Greasemonkey指令碼是設計來取得用戶拜訪哪些網頁的額外資訊,比如那些從del.icio.us、黑米、或者Bloglines提供的指令碼。如果這些指令碼被廣泛使用,它們有可能造成被拜訪網站不必要的額外流量。
- 隨着許多網頁專用的指令碼激增,分辨某網頁的問題是實際上網頁編程上的BUG,還是訪問者本地端Greasemonkey指令碼的困難度也隨之增加。基於如此,抓蟲除錯更為麻煩。
- 指令碼錯誤大致肇因於Greasemonkey開發者與網站開發者缺乏互動。
- Greasemonkey只有對HTML網頁有效,對於Flash、Flex,以及Silverlight開發的網頁無效。
- 多樣化互聯網應用程式對Greasemonkey指令碼開發者來說比靜態網頁更困難控制。這是因為該網頁程式執行越多的邏輯,Greasemonkey作者得考慮得越複雜才不會打擾到原本程式的功能。
- 原本的網站開發者推出新版時會造成相對應Greasemonkey指令碼停止工作。因此,沒有與原本網站開發者互動而撰寫的Greasemonkey指令碼可能在一時發揮作用,但終非長遠之計。
Greasemonkey與其它瀏覽器的相容性與相等軟件
Greasemonkey可直接用於Firefox、Flock、與Epiphany。Epiphany Greasemonkey是Epiphany附加元件包的一部分。然而,該附加元件並不完全相容於2.15.1版,導因於某些Greasemonkey應用程式介面功能(例如:GM_getValue)不支援。此外,也有自訂版本的SeaMonkey:xsidebar
Opera第8版也增加了用戶指令碼功能Archive.is的存檔,存檔日期2012-09-10。隨着Opera與Firefox支援W3C文件對象模型(DOM),許多Greasemonkey用戶指令碼現在在Opera下執行正確。
Konqueror用戶指令碼 (頁面存檔備份,存於互聯網檔案館)是一種給KDE Konqueror的網頁修改工具,其目的在相容於Greasemonkey指令碼與後資料集。它以一種KPart而存在。
類似軟件
- Scriptish具備和Greasemonkey一樣的作用,所有Greasemonkey指令碼都能在Scriptish中執行。Scriptish源於Greasemonkey,但對後者做了改進。[5]
- Proxomitron,開發於1990年代晚期,程式於JavaScript前載入並主動監視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、Privoxy或Proxomitron以更改HTML。
- 使用Opera瀏覽器 + 用戶.js指令碼。
參見
參考文獻
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.