曾在 "Yahxx知識家" 看到一個問題:「在許多留言板或部落格下方,都會有輸入英文及數字的圖形,那是什麼?」直角兄在這邊就要告訴各位,那個叫做「圖形驗證碼」,這玩意有一個英文學名 Captcha,全名為「Completely Automated Public Turing Test To Tell Computers And Humans Apart」,碼證碼最主要的目的是防止有心人士利用機器人(Bot)進行垃圾留言及散播廣告(Spam)。有興趣的網友們可參考 Wikipedia 上的解釋。

(圖形引用自 Wikipedia - http://upload.wikimedia.org/Wikipedia/commons/6/69/Captcha.jpg)
原因是在今年九月時,直角為了尋找解決垃圾留言的方法,而無意中發現下面這篇文章,由於內容實在是太有趣了(請見本站介紹),再加上直角兄讀研究所時是以影像處理(Image Processing)及資訊隱藏(Information/Data Hiding)為主要研究領域,所以不由得對驗證碼感到興趣。
在上述這篇文章中,Mr.Friday 前輩提到了 reCAPTCHA 的概念,是一種可以當作圖形驗證碼的方法,順便做一做 OCR 志工,倒也是不錯的方法。下面提的是 reCAPTCHA 給 WordPress 的外掛,經試用過後,圖形很難以被 Bot 辨視出來,效果倒也非常不錯。
但是有一點麻煩的是,由於台灣不是英語系國家,reCAPTCHA 至少會出兩個單字,每個單字通常超個 5 個字元,對一般使用者而言,這種驗證碼輸入起來算是比較麻煩的,因此直角後來放棄使用。
至此,我們可以了解到,好的圖形驗證碼大概是:「可以被人眼(Human Vision)判讀,但卻難以被機器人(Bot)判斷。」,因此在這種情況之下,便有了許多關於圖形驗證碼的研究。
首先,先來看看圖形驗證碼的種類與基本原理:
圖形驗證碼有相當多的變化,都是為了防止被 Bot 給判讀出來。為此,也有一些人專門在研究圖形驗證碼可以被判讀的程度,請參考:
- PWNtcha - captcha decoder
http://sam.zoy.org/pwntcha/
- 驗證碼識別技術 CAPTCHA DECODE (簡體)
http://www.lafdc.com/captcha
其中不難發現到,只要文字扭曲嚴重、背影顏色複雜、增加干擾線…等等,這些都是可以影響 Bot 判讀驗證碼的要素,其中有意思的是,由於驗證碼與 Bot 都是外國人士開發的,因此如果碼證碼使用中文字型時,Bot 是幾乎無法判讀的。
其實除了圖現驗證碼之外,還有另一種「邏輯驗證碼」,或是稱呼其為「問答驗證碼」也可以。通常這種方法,系統會問你一個問題,然後由人輸入答案。對於 Bot 而言,除了要判讀問題外,還要進行邏輯判斷,之後還要進行計算後,才能得到驗證碼,相較一般的圖形驗證碼而言,Bot 要能夠正確地判讀驗證碼的機會,就相對變得比較小了。
網友們可以參考下這幾篇文章,就可以了解:
- Yuren Ju - Yuren's Info Area - 頗酷的『非人驗證』外掛
http://yurinfore.blogspot.com/2006/09/blog-post.html
- ΛορδΧηαος - WordPress Plugin: Challenge
http://lordchaos.dominatus.net/wordpress-plugin-challenge
- Flow Yu - 癮科技 - 數學要好好學,不然以後就不能留言了喔!
http://chinese.engadget.com/2007/07/28/math-challenge-captcha/
其中由 Yuren Ju 前輩介紹的 Challenge 是可以使用在 WordPress 底下的外掛,有興趣的網友們千萬別錯過了,效果相當好!
如果網友們想利用 PHP 實現驗證碼,這邊有現成的套件可供使用:
希望經由直角之說明與介紹,各位可以對驗證碼有一些了解。
總結,那麼本站是採用哪一種方法呢?為了達到有效防止 Spam、方便使用與安裝、且不影響留言者的情況下,本站採用了 WP-ImgCode mod 外掛(請見本篇文章),並輔以中文國字的驗證碼,實際使用過後,發現效果也不錯,各位網友們可以參考看看。


相關主題
4 位網友對本文章作出回應
請問一下您那個中文國字是一種數字顯示國字的字型達成的嗎?
是什麼字型呢?!
To ca95:
不,那是直接修改「WP-ImgCode」的字型檔所達成的效果,如何修改請參考本文的相關參考資料。雖然目前已經修改完畢,也於本站及友站(野部的數位學習雜記)進行測試,由於近期直角工作實在太忙,苦無時間發表相關文章。
若您願意的話,待文章發表後,再另行 e-mail 告知。
Challenge 的效果真是好得無話說,
又好操作,只要下載、啟用即可,
不過有些版型不支援,
得換個有支援的版型。
To u882061:
是的,直角兄身旁就有不少朋友喜歡使用 Challenge 這個外掛,他們甚至認為這種「邏輯思考型」的才是王道呢!
寫下您的意見
請注意:請勿送出與政治、意識型態相關之發言,以免引發不必要之討論。