我想大家都知道什麼是 CAPTCHA,且實作 CAPTCHA 機制在技術上應該也不是甚麼難事,不過市面上也已經有不少人提出破解 CAPTCHA 圖片驗證的技術了,所以若要自己實作較複雜的 CAPTCHA 驗證機制其實還是有點難度的,我今天我就跟各位介紹一個偷懶的方法,也就是我之前曾經使用過的 reCAPTCHA 線上服務。
reCAPTCHA 是一個免費、且提供線上 CAPTCHA 驗證的服務,reCAPTCHA 提供的驗證機制據稱是十分的安全,他提供的服務中除了 CAPTCHA 基本的【圖片驗證】之外,另外還提供【語音驗證】的服務,而這部分若要自行實作也是有些難度的。
reCAPTCHA 是以類似 Web Service 的方式提供服務的,若要了解 reCAPTCHA 的運作方式,可以參考下列圖片:

- 使用者載入現有網頁時,也同時載入一個透過 JavaScript 嵌入的 reCAPTCHA 挑戰(challenge)介面。所謂的挑戰介面就是指要進行 CAPTCHA 驗證的區塊。
- 使用者從 reCAPTCHA 取得挑戰後,reCAPTCHA 就會顯示一串挑戰的文字讓使用者進行人工識別。
- 使用者輸入自行辨識後的文字在挑戰區塊的表單裡,使用者在將輸入的回應資訊(challenge token)連同原本的表單資訊 POST 回到 Server 端。
- Server 端的程式收到後,會將資訊送到 reCAPTCHA 驗證是否正確,然後再將結果回應給你 Server 端的程式。
- 如果驗證成功,你就可以在 Server 端進行相關作業,例如:建立使用者、將發表的文章寫入資料庫、或其他動作。若驗證失敗,你可以繼續顯示表單並請使用者重新輸入一遍。
若要在你現有的網站上使用 reCAPTCHA 服務基本上幾乎不用寫什麼複雜的程式,通常只要幾行指令就可以輕易的將 reCAPTCHA 服務套用到現有的網站上。在 reCAPTCHA 網站的 Resources 網頁中所列出的 Programming Environment Plugins 就包含了以下程式語言:
若要套用到一些網路上知名的應用程式,reCAPTCHA 也提供以下應用程式的外掛套件:
除此之外,網站上還有提供 reCAPTCHA API 與 MailHide API 可供任何其他程式語言自行開發外掛,可說是一個十分貼心的服務,推薦大家可以試試看。
相關連結