圖形驗證碼自動辨識油猴腳本:一鍵填入,模型金鑰用你自己的

CAPTCHA-automatic-recognition 是開源油猴腳本,在圖形驗證碼圖片旁掛上辨識圖示,用自己的 OpenAI、Gemini 或通義千問金鑰一鍵辨識並自動填入,圖片與算術驗證碼都支援,並靠雲端規則檔適配各網站的頁面結構。金鑰存在腳本管理器、不落到網頁端,適合還在跟傳統圖片驗證碼纏鬥的桌面瀏覽器使用者。

用 AI 摘要這篇文章:

同樣是「用 AI 讀圖形驗證碼」這個題目,上個月介紹過的 auto_captcha 走 Chrome 擴充功能路線,這次要談的 CAPTCHA-automatic-recognition 則是油猴腳本(UserScript),掛在 Tampermonkey 或 Violentmonkey 底下就能跑,瀏覽器選擇比擴充功能多一些,也不必進擴充功能商店。兩者都用「自己的 API 金鑰」驅動模型,差別在一個更容易被忽略的地方:驗證碼辨識真正的瓶頸,多半不是 AI 讀不讀得懂那幾個扭曲的字,而是腳本能不能在頁面上認出「哪一張圖是驗證碼、哪一個欄位該填答案」。這支腳本把這件事做成了一套可以共享、可以眾包更新的規則檔系統,是它最值得看的地方。

驗證碼辨識難的不是讀字,是認出哪張圖是驗證碼

先講它實際做的事。腳本安裝後會在每個網頁上掃描,比對一組 CSS 選擇器,找出長得像驗證碼的圖片與對應的輸入框,然後在圖片旁邊掛上一個小時鐘圖示。點圖示,腳本把圖片轉成 base64 送去你設定的 AI 模型,模型回傳文字後直接填進輸入框,也複製一份到剪貼簿。整個流程一鍵完成,設定只做一次,所有網站通用。

我把腳本掛到一個自己準備的測試頁上驗證過:含驗證碼圖片與輸入框的頁面載入後,圖示確實出現在圖片右側,設定面板也叫得出來。掛載與開面板的過程,除了本機還沒有規則快取時會去抓規則檔,沒有其他對外連線,這點後面談資料流向時會再用到。

驗證碼偵測靠三層選擇器疊出來。最底層是寫死在程式裡的十一條圖片選擇器與六條輸入框選擇器,例如 img[src*="captcha"]img[alt*="captcha"].validate-code img 這類常見模式;往上是由雲端規則檔針對特定網站補上的更準選擇器;最上面還有你在設定面板自己加的自訂選擇器。這裡有個眉角:以中文屬性比對的那幾條內建選擇器,比對的是「驗證碼」三個字的簡體寫法,網站屬性若寫繁體,這幾條就對不上,得靠上面兩層補。

驗證碼圖片旁出現的辨識圖示Pin
把腳本掛到測試頁後,驗證碼圖片右側出現的辨識圖示(v1.2.2 實際畫面)

能力範圍上,它吃的是圖片類驗證碼:img 圖片與 canvas 畫布都算,內建提示詞同時涵蓋「讀出字元」與「算出算術式」兩種任務,所以「3+5=?」這類計算驗證碼也在範圍內,腳本也有針對計算型驗證碼過濾干擾符號的修正紀錄。相反地,滑動拼圖、點選文字、reCAPTCHA 這類互動式驗證完全不在支援範圍。專案 issue 裡有人回報速賣通的滑桿驗證無法觸發,也有使用者直接留言說稍有流量的網站如今滑桿比圖片驗證碼用得多,這是使用前最該知道的邊界:它救的是還在用傳統圖片驗證碼的網站,而這類網站確實還不少,尤其在內部系統、學校與論壇。

失敗情境的處理也算透明。圖片還沒載入完成時腳本會提示稍後再試;canvas 內容受跨域限制讀不出來時,會明確回報可能是跨域限制、建議手動下載圖片再辨識;模型回傳空結果一樣有提示,不會安靜地塞空白進輸入框。填入這一步也有針對現代網站的處理:多數網頁的輸入框吃了填入的值就會生效,但用前端框架渲染表單的網站可能會把程式填入的值蓋掉,所以腳本另外把結果複製一份到剪貼簿當備援,遇到填了又清空的網站直接貼上就行。設定裡還有一個「驗證碼圖片變化時自動辨識」的開關,打開後換一張圖就自動重辨識,懶得再點圖示的人可以開,不過它預設是關的,每次辨識由你點一下圖示觸發,這個預設值對隱私取向的人比較友善。

規則檔:一個人回報適配,所有人受益

規則檔是這支腳本最有設計感的部分。維護者在 GitHub 上放了一份 rules.json,內容是「網址特徵、驗證碼圖片選擇器、輸入框選擇器」三欄位的清單,腳本抓下來後就知道在某個網站上要盯哪個元素。目前這份清單有十條規則,對象包括 NGA 論壇、超星的 canvas 驗證碼,以及一條對所有網站生效的通用規則。網址特徵支援精確字串、萬用字元與正則表示式;遇到沒適配過的網站,開 F12 查一下頁面結構,把自己的選擇器加進設定面板就好,官方文件也寫了教學,還提醒不懂 CSS 選擇器的人別亂動進階設定。

規則檔的更新行為值得攤開來看。目前的版本(1.2.2)裡,「每日自動抓取最新規則」是預設關閉的,就算打開,也是每天首次使用時先詢問、確認後才抓。翻版本紀錄會看到這個機制演進的痕跡:1.1.0 上線規則系統,1.1.8 改成每天自動抓雲端設定,1.2.0 又收回去改成每日確認載入、預設關閉。把自動連網改成詢問制,對一個會注入所有網站的腳本來說是加分的設計決定。掛載時我還觀察到,第一次執行、本機還沒有規則快取時,腳本會向 GitHub 的 raw 網址請求規則檔,掛載時這個網址出現了兩次請求,之後對外連線的對象就只剩你設定的 AI 端點與這個規則檔網址;規則檔網址本身可以換成自訂位置,想自己維護一份給團隊或內部系統用也行。

規則檔也讓維運變成眾包。遇到沒適配的網站,使用者在 issue 回報網址,維護者把選擇器寫進規則檔,所有人重新載入規則就受益。從 2025 年 7 月到 2026 年 4 月都還見得到適配請求的 issue,規則檔最後一次更新停在 2026 年 5 月中。十條規則聽起來不多,重點本來就不在清單大小,而在這條通道存在:網站改版導致驗證碼抓不到時,不需要等腳本本體改版、重新送審、大家重裝,改一份 JSON 檔就修好所有人的問題。這套做法廣告阻擋規則庫用了十幾年,搬到驗證碼場景一樣成立。以一個 780 次安裝的腳本來說,這個節奏算活著,只是本體程式碼最後一次改版是 2026 年 2 月,新功能開發已經放慢;對使用者的實際意義是,網站端的適配修復還在走,但若瀏覽器改版動到腳本本體的地基,修復速度就得看維護者的時間了。

金鑰放在哪,圖片送去哪

AI 端設定支援三家預設服務:OpenAI、Google Gemini、阿里雲通義千問,也可以填自訂的 OpenAI 相容端點,輸入時只給網域也會自動補完路徑,本機模型服務照樣接。每家都有預設模型,OpenAI 是 gpt-4.1-mini,通義是 qwen-vl-max-2025-04-02,Gemini 是 gemini-2.5-flash-lite;維護者在 README 推薦 Gemini 的 flash-lite,理由是速度快、穩定性高,這是他的建議,實際表現我沒有花金鑰去測,不下判斷。設定面板裡每家服務商都有「測試連接」按鈕,金鑰填錯或端點不通當場就會知道,不用等到真的遇到驗證碼才除錯。提示詞也可以整段換掉,預設那套是一份結構完整的中文提示詞,把「只輸出結果、不要多解釋」之類的約束都寫好了,想調整辨識行為的人有明確的施力點。

AI 服務商設定面板Pin
設定面板的 AI 服務商分頁,可選 OpenAI、Gemini、通義千問並填入金鑰(v1.2.2 實際畫面)

資料流向要說清楚。API 金鑰存在腳本管理器的沙盒儲存空間(Tampermonkey 的 GM 儲存),不會落到網頁本身的 localStorage;但驗證碼圖片本體會以 base64 送出到你設定的模型端點,請求靠 GM_xmlhttpRequest 跨過瀏覽器的同源限制。換句話說,「金鑰存在本機」與「圖片不出本機」是兩回事,後者不成立。這也是所有同類工具共同的代價,想要更完整的拆解,可以回頭看 auto_captcha 那篇的資料流分析。至於偷偷上傳遙測這件事,可以放心:整包兩百多 KB 的腳本裡找不到任何 analytics、Sentry、Firebase 之類的追蹤元件,實際掛載時的連線行為也一致;腳本自身會連的對象,只有你設定的 AI 端點與規則檔位置,介面用的 Vue 另由腳本管理器從 unpkg 下載。

費用結構也要誠實講。「免費腳本」指的是腳本本身不收費、原始碼以 Apache-2.0 授權並附上正式授權檔,但每次辨識就是一次視覺模型的 API 呼叫,帳單照你自己的雲端帳戶走。以這種等級的輕量模型與單張小圖的用量推估,個人日常使用的花費會遠低於按次計費的人工代解服務,但不是零。

權限、繁中適配與用途界線

先說權限。這是一支 @match *://*/* 的全站腳本,會在你造訪的每個頁面上執行,腳本本體超過兩百 KB,介面用 Vue 3 寫成,經由 unpkg 這個公開 CDN 載入。全站注入是這類通用工具的必要代價,但意味著你授權它讀取所有頁面,信任對象是維護者與程式碼本身。好在原始碼完整公開、授權乾淨,要自己審一圈是可行的。

再來是適配成本。前面提過內建選擇器的中文比對用簡體,繁中網站常要自己加選擇器或等規則檔涵蓋。canvas 型驗證碼則要注意:繪圖內容若受跨域限制,腳本讀不到圖片資料會直接回報錯誤,這是瀏覽器安全模型的限制,不是腳本的缺陷。

最後是用途界線。驗證碼的存在目的是擋自動化,任何自動辨識工具本質上都站在這個機制的對面。維護者在 README 的免責聲明寫得明白:免費開源、自行評估風險、遵守適用法律、嚴禁任何形式的濫用。合理的使用場景是你自己每天要過的登入頁、查詢頁,把重複的手輸交給模型;拿去做批量註冊、爬蟲或繞過他人的安全防護,除了違反多數網站的服務條款,帳號風險也都在自己身上。工具本身是中性的,判斷在使用者手上。

小眾但乾淨的專案,適合誰

數字攤開:GitHub 倉庫 578 顆星、40 次 fork,GreasyFork 上 780 次安裝、15 則評價全部正面、零負評,腳本從 2025 年 6 月上架到 2026 年 2 月的 1.2.2 已經過三十多個版本,規則檔 2026 年 5 月還在動。以功能型腳本的標準看是個小眾但健康的專案,授權(Apache-2.0 附正式檔案,倉庫根目錄與子專案各一份)比不少同類工具嚴謹。

適合的人很明確:你常在一兩個固定網站反覆輸圖片驗證碼、手上已經有任一家模型的 API 金鑰、用的是桌面瀏覽器加上腳本管理器。典型的場景像是每天要登入好幾次的內部系統、查資料用的學校或機關網站、還沒跟上滑桿潮流的老論壇;這些地方的驗證碼格式常年不換,設定一次就一直在那裡生效。不適合的也明確:主要困擾是滑桿或 reCAPTCHA、不想把驗證碼圖片送出瀏覽器、用 Safari(腳本管理器支援有限,issue 裡也有人問過)的人。想先認識腳本管理器生態,可以看我們介紹過的 ScriptCat 腳本貓;想看其他把金鑰留在瀏覽器端的油猴腳本長什麼樣,PromptHelper 是另一個對照。

入門路徑很短:裝好 Tampermonkey 或 Violentmonkey,從 GreasyFork 安裝這支腳本,遇到驗證碼頁面點圖示、填金鑰選一家服務商。設定一次之後,它就安靜地等在每個驗證碼圖片旁邊。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1151

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...