Greasemonkey

，簡稱 GM，中文俗稱為 “油猴”，是 Firefox 的一個附加元件。它讓使用者安裝一些指令碼使大部分 HTML 為主的網頁於使用者端直接改變得更方便易用。

Greasemonkey 可替網頁加入些新功能（例如在亞馬遜書店嵌入商品比價功能）、修正網頁錯誤、組合來自不同網頁的資料、或者數繁不及備載的其他功能。寫的好的 Greasemonkey 指令碼甚至可讓其輸出與被修改的頁面整合得天衣無縫，像是原本網頁裡的一部分。

技術明細

大部分 Greasemonkey 使用者指令碼都是自行撰寫，使用對某網站專用的 JavaScript 程式碼，透過文件物件模型（DOM）介面對網頁內容做操作。//userscripts.org/userscripts.org 維護了個 Greasemonkey 資料庫。該資料庫描述哪個網址網頁對應到哪個指令碼。（注意： 廢棄指令碼倉庫可能還保留許多還沒合併到 //userscripts.org/ 新倉庫的指令碼）。但由於 userscripts.org 在 2014 年 5 月發生技術故障而無法訪問，一些開發者另設網站以釋出指令碼，Greasemonkey 官網也在其官方 Wiki 站點設立 列表以展示這些網站。

當使用者載入匹配的網頁，Greasemonkey 便呼叫相關的指令碼，而該指令碼便根據指令碼內容改變網頁的內容。Greasemonkey 指令碼亦能透過非網域繫結的 XMLHTTP 要求來查詢外部 HTTP 資源。Greasemonkey 亦遵循的格式，這讓當該特定使用者拜訪時 Greasemonkey 可自動偵測並提供安裝選項。除了 JavaScript 程式碼，Greasemonkey 指令碼包括有限可選用後資料集。該後資料集描述了指令碼名稱、指令碼描述、網址用來區分同名指令碼的位址空間、以及原本該指令碼為哪些網址撰寫的列表。

Greasefire 擴充套件：同 Greasemonkey 擴充套件配合使用，自動顯示在 userscripts.org 的指令碼庫中是否存在可以在當前正在瀏覽網站上使用的指令碼，如果存在 Greasemonkey 的猴頭圖示背景就會變為彩色的。右鍵點選猴頭圖示，最上面一行就是開啟當前網站可用指令碼列表的選項。
Platypus附加元件可讓使用者可以編輯網頁（刪除或者移動某礙眼的部分）。Platypus 隨後將結果存成常駐的 Greasemonkey 指令碼。

典型的指令碼

使用者群已發展大量的指令碼，以下是其中的一些應用：

調整 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 與其它瀏覽器的相容性與相等軟體

4.1 其他 Mozilla 為基礎的瀏覽器

Greasemonkey 可直接用於 Firefox、Flock、與 Epiphany。Epiphany Greasemonkey 是 Epiphany 附加元件包的一部分。然而，該附加元件並不完全相容於 2.15.1 版，導因於某些 Greasemonkey 應用程式介面功能（例如：GM_getValue）不支援。此外，也有自訂版本的 SeaMonkey：。

4.2 Opera

Opera 第 8 版也增加了 使用者指令碼功能。隨著 Opera 與 Firefox 支援 W3C 文件物件模型（DOM），許多 Greasemonkey 使用者指令碼現在在 Opera 下執行正確。

4.3 Konqueror

Konqueror 使用者指令碼 是一種給 KDE Konqueror 的網頁修改工具，其目的在相容於 Greasemonkey 指令碼與後資料集。它以一種 KPart 而存在。

類似軟體

Scriptish 具備和 Greasemonkey 一樣的作用，所有 Greasemonkey 指令碼都能在 Scriptish 中執行。Scriptish 源於 Greasemonkey，但對後者做了改進。
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 即時改變網頁。