點了「我不是機器人」後,網站怎麼知道你真的是人?

這個見怪不怪的機器人測試背後,掩蓋着的是十數年人機對抗的斗爭史。

大部分人可能都被Google要求做過這樣奇怪的保證:

「我不是機器人」。

點了「我不是機器人」後,網站怎麼知道你真的是人?

只要你經常使用一些國外的網站,它就會隔三差五地彈出這個對話框,要求你點擊來「聲明」自己不是機器人。

以前這種「證明自己是人」的環節里,有很多讓人不勝其煩的驗證碼,要麼是一串扭曲的字符,要麼是一堆支離破碎的圖片讓你辨認。但在這種最新的驗證下,大部分情況下,只要你點擊確認之後,網頁就會成功放行。

這顯然是一種更方便快捷的驗證形式。但它同時也讓一些用戶陷入了迷惑:

「這究竟怎麼判斷我到底是不是機器人的?」

點了「我不是機器人」後,網站怎麼知道你真的是人?

「難道是因為機器人不會撒謊?」

事實當然並非如此。

簡單的點擊背後,其實暗藏着很多信息傳遞,還包含你的隱私。

這個見怪不怪的機器人測試背後,掩蓋着的是十數年人機對抗的斗爭史。

1

點擊「我不是機器人」這一交互形式,本質上來說還是你在填驗證碼。

要解釋這一點,我們就有必要回顧一下驗證碼的發展歷程。

對於現在的用戶而言,填寫各類驗證碼已經必不可缺的技能之一。驗證碼只會耽誤每位用戶幾秒鍾的時間,但卻能極大提升網絡環境的「清淨程度」。

點了「我不是機器人」後,網站怎麼知道你真的是人?

如果沒有它的存在,那你現在恐怕會遭受更多的垃圾郵件轟炸,信息騷擾。服務商也會面對泱泱腳本大軍而感到崩潰……

就像20年前的互聯網那樣。

2000年之前,驗證碼並不存在。那時的網絡雖然並不發達,但已開始興起,各類論壇和郵件服務商的涌現,拉開了網絡交流時代的序幕,而與正向技術一同出現,當然還有種種惡意腳本。

垃圾郵件、評論、惡意信息隨着腳本的出現開始漫天飛舞。雅虎作為2000年左右最為出名的網絡服務商之一,深受其害——他們是互聯網早期最重要的免費郵箱提供商,但面對腳本和海量垃圾郵件束手無策。於是雅虎便聯繫到了卡內基梅隆大學的計算機科學系來尋求幫助。

雅虎的主要需求是想「有效分清真人用戶和機器腳本」。卡內基梅隆大學一名21歲的學生路易斯·馮·安恩(Luis Von Ahn)針對這個目的有了思路:要讓注冊的用戶提供「證據」來證明自己是一個人類,例如做一些只有人類能做,而機器做不到的事情。

什麼事情是在當時只有人類能做而機器做不到的?答案是閱讀圖片。

人類可以很輕松的讀出圖片中的信息,但當時的機器並沒有這樣的能力。如果通過程序來提供一些稍加扭曲的圖片,然後讓注冊者回答圖片中的內容,便能很輕易地將機器拒之門外。

點了「我不是機器人」後,網站怎麼知道你真的是人?

聽起來是不是很熟悉?這正是即使在現在我們也很常看到的驗證碼形式之一。

2000年左右,這名學生路易斯·馮·安恩發明了驗證碼這一概念,他將其命名為CAPTCHA。

CAPTCHA是Completely Automated Public Turing test to tell Computers and Humans Apart的簡寫,意為「全自動區分計算機和人類的圖靈測試」。

也是從這一刻開始,一場持續數十年的,人與機器之間,圍繞着圖靈測試的對抗開始了。

2

說起這種最早出現,也是最常見的驗證碼形式,恐怕大多數人,都對它有過一些不太美好的回憶。

最早出現的驗證碼,都是一些簡單容易看懂的形式。人類可以很簡單地分清上面的內容。

點了「我不是機器人」後,網站怎麼知道你真的是人?

但隨着機器識別圖片能力的提高,驗證碼的難度也日益提升。

有時它的難度甚至大到網友懷疑自己的程度。

點了「我不是機器人」後,網站怎麼知道你真的是人?

為了避免被機器識別,驗證碼需要對圖上的文字加以扭曲等視覺干擾,本質上是為了避免被機器認出來。

但有時扭曲的程度也難到了人類。

點了「我不是機器人」後,網站怎麼知道你真的是人?

「U」和「V」像是雙胞胎兄弟,「O」和「0」很難分清,這基本上是每個網友都碰見過的麻煩。但這些都只是初級問題,當中文驗證碼出現之後,人們面前的困難也就更多了。

點了「我不是機器人」後,網站怎麼知道你真的是人?

和英文、數字驗證碼不同的是,中文驗證碼更多是給人心理上的折磨。

點了「我不是機器人」後,網站怎麼知道你真的是人?

2017年,成都大學的一名大四女生,在網上準備報名考研。輸完用戶和密碼後,她的屏幕上彈出兩個字的中文驗證碼:

「別考。」

點了「我不是機器人」後,網站怎麼知道你真的是人? 後來官方表明「純屬巧合」

關於這種初級形態的驗證碼,類似的問題無時無刻在困擾着網民們。而驗證碼又對網絡環境而言來說是個不可或缺的存在。

每位網民都要在驗證碼上花費幾秒時間,看似成本短暫,但疊加起來又是一個巨大的量級。

根據統計數據,全球網民每天需要輸入近2億次驗證碼,每次需要花費十秒。算起來,全人類每天會在驗證碼上花費50萬個小時。

驗證碼最初的發明者,路易斯·馮·安恩發現這個事實後,深感浪費——畢竟時間就是金錢。而這50萬小時的資源,就這樣白白浪費掉了。

點了「我不是機器人」後,網站怎麼知道你真的是人?他現在是多鄰國的創始人

有什麼能利用這些時間的方法嗎?路易斯·馮·安恩又有了想法:既然驗證碼需要讓人類辨認圖上的文字,那能不能讓人類「順帶」幫忙辨認一下一些難以識別的書籍?

這聽起來似乎是天方夜譚,但路易斯·馮·安恩通過一個簡單的小方法實現了。

他把驗證碼需要輸入的單詞改為兩個,其中一個是已知答案的單詞,另一個是摘自舊書或手稿中的單詞。

點了「我不是機器人」後,網站怎麼知道你真的是人?

已知答案的單詞是單純的驗證碼,如果用戶成功輸入,那就已經通過了測試。

點了「我不是機器人」後,網站怎麼知道你真的是人?

於此同時,這也意味着這名用戶不是瞎打的字。那麼用戶所辨認的另一個截取自古書籍的單詞的內容,也將被記錄為有效答案。如果有3位用戶對一個單詞給出同樣的答案,那麼該字就將得到校驗。

你看似是在輸入驗證碼,其實是在幫助識別校對古書籍上的內容。

這個新的驗證碼機制(reCaptcha)很快被各大網站利用,隨後被谷歌收購。每天大約有4000萬個單詞就這樣被辨認出來,這個新的驗證碼系統,靠着無窮無盡的免費人力資源,每年能讀出數十萬本書。

這是驗證碼大戰的另一次升級:人類創造腳本來牟利,腳本讓人類在驗證碼上浪費無數時間成本,而聰明的人類又把這份成本有效的利用了。

當然,這並不意味着這場斗爭的停止。

3

看圖識字型驗證碼,僅僅維持了一段時間的互聯網和平。驗證碼農場的誕生,開始帶來一些改變。

所謂驗證碼農場,就是一些專門來人工識別驗證碼的工作室。它的原理非常簡單:「農場主」雇傭大量廉價人力資源,這些人坐在電腦前,無間斷地輸入從各地發來的需要辨認的驗證碼。

這種質朴的方式的確擾亂了大環境,但帶來的改變並沒有那麼致命。

真正的變化,還是起於機器識別能力的日益提升。隨着技術逐步升級,原本對於機器來說難以辨認的扭曲驗證碼,已經不再是一個天大的難題。

點了「我不是機器人」後,網站怎麼知道你真的是人?

在2014年,谷歌發佈新的研究成果,一個專門用來解讀扭曲驗證碼內容的算法。

最後測試的結果中,機器解讀驗證碼成功率99.8%,而人類的成功率,是33%。

在絕對的技術面前,人力再一次落敗。但這當然不是驗證碼的末路。

2014年,Google發佈了新一代驗證碼技術,他們將其稱為:「No CAPTCHA reCAPTCHA 」——「沒有驗證碼的驗證碼」。

這個沒有驗證碼的驗證碼十分簡單,只需要你勾選一個按鈕,來「證明」自己不是機器人。

這就是如今我們常常看見的「我不是機器人」。

點了「我不是機器人」後,網站怎麼知道你真的是人?

「我不是機器人」看起來簡單方便,只需用戶輕輕一點。但背後的邏輯要比普通驗證碼復雜許多。

當你點擊「我不是機器人」時,Google將會分析你的各種行為,包括點驗證碼前、點驗證碼時、點驗證碼後的動作,來判斷你是不是人類。

它也會收集一些你的數據,比如指針移動速率,當前IP,是否使用插件,頁面使用時間,進行過多少次點擊……

點了「我不是機器人」後,網站怎麼知道你真的是人?

如果你展現出來的行為,都符合一個人類的標准,那網頁就會放行。

基本上可以這樣說:這是用一小部分隱私換來的快捷。

而且有意思的是,這種測試對於真正的(物理)機器人來說反倒不太有效。

點了「我不是機器人」後,網站怎麼知道你真的是人?

當然,有時Google也無法單純從你的行為來確認你是否為人類,而這時就會出現圖片測試,要求用戶選擇圖片中出現的XX。

這種也是當下比較常見的一種驗證碼形式,同時也遭人吐槽最多。

比如說,圖片測試中要求辨認的物體,總是很剛好地超出選項框一點點,令人左右為難。

點了「我不是機器人」後,網站怎麼知道你真的是人?

「選出圖片中的汽車」往往是最難的一項。

點了「我不是機器人」後,網站怎麼知道你真的是人?

選交通信號燈也常常讓用戶感到無從下手。

點了「我不是機器人」後,網站怎麼知道你真的是人?

有時圖片里根本不會有要求辨認的物體:

點了「我不是機器人」後,網站怎麼知道你真的是人?

基本上每個網民,都曾被這種類型的驗證碼折磨過幾回。也讓「選出圖片中的xx」順利成為了一種梗圖。

點了「我不是機器人」後,網站怎麼知道你真的是人?

點了「我不是機器人」後,網站怎麼知道你真的是人?

如果你有幸曾在12306上購買過車票,應該也能理解這種痛苦。自2015年開始,12306上線了新的圖片驗證碼,自此讓所有買票人叫苦連天。

點了「我不是機器人」後,網站怎麼知道你真的是人?據官方統計,能一次性輸入對12306驗證碼的人,只有8%

腳本越來越厲害,驗證碼越變越復雜,這似乎是一個無解的循環……

由人們創造的,日益提升的機器算法,和同樣出自於人類之手的腳本相互抗衡,最終誕生的時間成本,似乎還是要人類自己來承擔。

4

最近這兩年,Google又推出了新一代驗證碼 reCaptcha v3。

而reCaptcha v3,其實也不用再被稱之為「驗證碼」了,因為它並不需要用戶做出任何證據來「證明」自己是個人類。

它會在網站後台自動記錄使用者在網站中瀏覽的行為特徵,隨後根據這些記錄來給用戶打分,當用戶的「非人」操作足夠多之後,就會被判定為機器人。

這項技術如今並沒有被大面積使用。但對驗證碼的發展來說,似乎是個較好的方向。但它必然也是有代價的,比如隱私……

截至目前來看,這場人與機器之間,圍繞着圖靈測試的對抗,仍未有個明確的局勢。

或許在技術更加發達的未來,如何證明自己是個人類,對於人類而言將變成更難的一個問題。

點了「我不是機器人」後,網站怎麼知道你真的是人?

來源:遊研社