網頁上的驗證碼(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart)是為了區分訪問者是人類還是機器程式(例如爬蟲或機器人),防止惡意程式濫用網站資源、進行自動化攻擊或垃圾資訊傳播等行為。 它本質上是一種區分人與機器的圖靈測試。
常見的驗證碼種類有很多,以下列舉一些前端開發中常用的:
-
文字驗證碼: 早期最常見的驗證碼形式,通常由扭曲變形、帶有干擾線的字母和數字組成,使用者需要識別並輸入這些字元。 由於易被OCR(光學字元識別)技術破解,現在已經很少單獨使用。
-
圖片驗證碼: 要求使用者從多張圖片中選擇符合特定描述的圖片,例如“選擇所有包含交通燈的圖片”。這種驗證碼利用了人類的影像識別能力,對機器程式來說則比較困難。
-
滑動驗證碼: 使用者需要拖動滑塊完成拼圖驗證,驗證使用者拖動滑塊的軌跡是否符合人類的行為模式。這種驗證碼使用者體驗較好,安全性也相對較高。
-
點選驗證碼: 要求使用者按照順序點選圖片中指定的文字或物體。
-
語音驗證碼: 播放一段語音,使用者需要聽清並輸入語音中的內容。這種驗證碼對視覺障礙使用者比較友好。
-
hCaptcha: 類似reCAPTCHA,但更注重使用者隱私,並且提供一定的獎勵機制。
-
reCAPTCHA (v2, v3): 由Google開發,應用最為廣泛的驗證碼服務。v2版本包含“我不是機器人”核取方塊和圖片選擇等形式,v3版本則在後臺分析使用者行為,無需使用者進行任何操作即可判斷是否是人類。
-
Invisible reCAPTCHA: 完全在後臺執行,對使用者完全透明,透過分析使用者行為來識別機器人。
-
數學驗證碼: 要求使用者計算簡單的數學題。這種方式比較簡單,但安全性較低。
除了以上這些,還有一些比較新的驗證碼型別,例如基於遊戲互動的驗證碼,以及結合人工智慧和生物特徵識別的驗證碼等。 選擇哪種驗證碼型別取決於網站的安全需求和使用者體驗的平衡。 現在主流的驗證碼服務商都提供了豐富的API和文件,方便開發者整合到自己的網站中。