當代生活,每個用戶的手中都會有或多或少的賬號,而在你登錄的時候總會有幾個討厭的彈出窗口,尤其是驗證碼。起碼春運時節,很多朋友應該看 12306 的驗證碼已經看到要瘋了……
有關他的故事可以看看電影《模仿遊戲》,「卷福」本尼迪克特主演。
而驗證碼的全稱是全自動區分計算機和人類的公開圖靈測試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱 CAPTCHA),由卡內基梅隆大學的路易斯·馮·安于 2002 年提出。
我們都知道不管是網站還是 App 是建立在服務器上的,而服務器的容量和帶寬是有限的,如果大量的非人流量湧進了服務器中,會造成服務器的荷載過量,影響正常用戶的使用。這些非人流量中既有機械勞作的機器人,也有抓取頁面信息的爬蟲。
就像這段時間春運買火車票,和你一起搶票的除了衆多和你一樣歸家心切的同路人之外,還有搶票機器人、挂著搶票腳本的黃牛和各大出行 App。而後面這幾個的搶票能力可比單個購票用戶強太多了……
英文 + 數字
問答
更難的還有語音電話驗證碼、短信上傳式驗證碼等等,可以說破解難度是一步一登天。
???
而在這些複雜的驗證碼背後,則是不斷進步的驗證碼破解方式:從最早的暴力破解、 OCR 文字識別、撞庫識別到最先進的 Tensorflow 深度學習識別驗證碼,雙方就在你來我往中不斷升級自己的戰鬥力,實現螺旋式上升。
事實上,相較于不斷升級的驗證碼,與之相對的驗證碼破解技術這些年進步幅度並不大,這其實主要是因爲對于愈發複雜的驗證碼破解者可以使用的手段並不多。
拿到一段驗證碼之後,首先算法要自動提取驗證碼中的文字,緊接著要去降低驗證碼中的「噪聲元素」對識別算法的影響,然後要分割單個文字元素,進而提取出驗證碼。並且在不同字體和幹擾噪聲的基礎、識別准確率和時間限制的情況下,很難開發出一套具有普適性的破解算法。
但是對于傳統驗證碼來說,破解者們還有一招終極大招 —— 人力打碼,網上有衆多打碼平台,發布任務之後就會有人過來人力打碼,這就相當于是用人力這個作弊的方式通過了圖靈測試。
因此在移動時代,減少輸入、主要依靠點擊滑動等互動操作的驗證碼就成爲了最符合用戶使用習慣的驗證碼。目前滑塊式驗證碼和圖片元素識別式的驗證碼是各大網站最主要的驗證碼。
而在簡單一點的背後,則是 Google 風險分析引擎在發揮作用,這個引擎會在用戶點擊驗證碼前、點擊中和點擊後分析用戶是否是真人,這個引擎會上傳用戶的 IP、國家、點擊時間、鼠標軌迹、網頁滾動記錄等用戶使用條件到服務器中,進而分析用戶的真實身份是人還是機器人。
目前這項技術國內也出現了一些仿效者。