它的設(shè)計(jì)初衷是為了區(qū)分人和機(jī)器,實(shí)現(xiàn)方式是在正常流程中增加了一道門(mén)檻,人可以翻過(guò)去,而機(jī)器會(huì)被擋住。從某種意義上說(shuō),它可能是個(gè)有效設(shè)計(jì),但它真的是一個(gè)好設(shè)計(jì)嗎?
當(dāng)你注冊(cè)或者登錄某個(gè)應(yīng)用的時(shí)候,經(jīng)常會(huì)用到驗(yàn)證碼。它們大部分是由一串歪歪扭扭的字符組成的,看起來(lái)并不容易辨別。
驗(yàn)證碼的英文名是 CAPTCHA,這不是一個(gè)正規(guī)的單詞,而是個(gè)縮寫(xiě),它的全稱是:Completely Automated Public Turing test to tell Computers and Humans Apart。翻譯過(guò)來(lái)是:用來(lái)區(qū)分人類和電腦的全自動(dòng)圖靈測(cè)試。
不知道為什么,我就是覺(jué)得它聽(tīng)起來(lái)像一個(gè)不大正經(jīng)的惡作劇。
據(jù)維基百科的描述:
驗(yàn)證碼出現(xiàn)于十年前,是為了防止機(jī)器(程序)假扮成人,去占用原本為用戶準(zhǔn)備的資源。比如:利用腳本程序不斷地模擬嘗試登錄以便破解賬號(hào)密碼,或者利用惡意代碼在 BBS 中發(fā)布大量廣告或詐騙內(nèi)容。
可以看到,它的設(shè)計(jì)初衷是為了區(qū)分人和機(jī)器,實(shí)現(xiàn)方式是在正常流程中增加了一道門(mén)檻,人可以翻過(guò)去,而機(jī)器會(huì)被擋住。
從某種意義上說(shuō),它可能是個(gè)有效設(shè)計(jì),但我不認(rèn)為它是個(gè)好設(shè)計(jì)。因?yàn)閾踝C(jī)器這件事本應(yīng)該是服務(wù)提供方的責(zé)任,而服務(wù)方卻將其成本轉(zhuǎn)嫁給了用戶。
這件事引發(fā)了我的思考:
不知道你有沒(méi)有想過(guò),讓用戶辨別和輸入扭曲的驗(yàn)證碼,其實(shí)是因?yàn)榉⻊?wù)提供方的能力欠缺,無(wú)法靜默區(qū)分人和機(jī)器,而輸入驗(yàn)證碼本身,這一操作對(duì)用戶來(lái)說(shuō)其實(shí)并無(wú)價(jià)值。
有一次我接到用戶打來(lái)電話,抱怨自己搞不定驗(yàn)證碼。我向他解釋我們正在被攻擊,所以臨時(shí)調(diào)高了驗(yàn)證碼的級(jí)別。電話的最后,我習(xí)慣性地向他道歉,用戶卻很體貼地安慰我說(shuō)沒(méi)必要道歉,畢竟被攻擊不是我們的錯(cuò)。
當(dāng)時(shí)我心頭一熱,臉上一紅。他說(shuō)的沒(méi)錯(cuò),被攻擊確實(shí)不是我們的錯(cuò),但更不是用戶的錯(cuò),讓他們付出成本,花費(fèi)時(shí)間,去辨別圖片里的那個(gè)圓圈究竟是 O 還是 0 還是 6,其實(shí)就是讓他們承擔(dān)我們本應(yīng)該承擔(dān)的責(zé)任。
舉一反三,如果再激進(jìn)一點(diǎn)考慮,我們的軟件服務(wù)中還有不少推卸責(zé)任的設(shè)計(jì),比如:讓用戶在成千上萬(wàn)的商品中篩選和比價(jià),比如:各種復(fù)雜的界面參數(shù)設(shè)置和興趣選擇。要是想得再發(fā)散一點(diǎn),所有的銀行賬戶密碼似乎也沒(méi)有必要,超市排隊(duì)也是一樣。
如果用戶不需要付出篩選和比價(jià)的成本,或不需要花費(fèi)精力記住賬戶密碼,卻可以享受到同樣高質(zhì)量的服務(wù),是不是更好呢?
基于這樣的思考,我們是不是應(yīng)該馬上去掉這些推卸責(zé)任的設(shè)計(jì),比如:想出更復(fù)雜的方案,替代現(xiàn)有的驗(yàn)證碼機(jī)制呢?
這是關(guān)于驗(yàn)證碼的第二個(gè)思考。
有效的設(shè)計(jì)確實(shí)未必是好設(shè)計(jì),比如:我自己曾經(jīng)參與設(shè)計(jì)的產(chǎn)品中也用到驗(yàn)證碼,而且在某些特殊階段(像剛才提到的被定向攻擊),我們還會(huì)升級(jí)驗(yàn)證碼機(jī)制,讓驗(yàn)證碼出現(xiàn)的頻率更高,而且更加難以辨認(rèn),從而在某些關(guān)鍵入口抵抗一些有針對(duì)性的攻擊。
這一策略是有效的,但對(duì)用戶的傷害也很大,升級(jí)驗(yàn)證碼機(jī)制后,用戶登錄過(guò)程中耗費(fèi)的時(shí)間會(huì)顯著增加,通過(guò)率也會(huì)下降,還有大量的用戶抱怨一股腦地涌進(jìn)來(lái)。
然而從服務(wù)提供方的角度來(lái)看,它卻用最低的成本快速地解決了當(dāng)時(shí)面臨的問(wèn)題。這是產(chǎn)品設(shè)計(jì)方案選擇過(guò)程中不得不做出的“平衡”,很多時(shí)候我們沒(méi)有辦法第一時(shí)間實(shí)施對(duì)用戶的完美方案,這就需要在產(chǎn)品利益和用戶利益之間,找到微妙的動(dòng)態(tài)平衡點(diǎn)。
所以讓一個(gè)產(chǎn)品經(jīng)理講用戶價(jià)值其實(shí)不難,天花亂墜說(shuō)完美方案也不難,難的是在實(shí)際工程里做出合適的決定。做工程大部分時(shí)候都滿身污垢,能在其中保持鎮(zhèn)定,保持平衡并不容易。
我們當(dāng)時(shí)在扛過(guò)了幾輪攻擊之后,投入了一些技術(shù)資源,引入了更多靜默監(jiān)測(cè)的策略。比如:記錄用戶密碼、記錄用戶上次登錄的位置/設(shè)備,或通過(guò)一些頁(yè)面動(dòng)作來(lái)做出判斷,保證大部分老用戶和一部分新用戶不會(huì)受到驗(yàn)證碼的打擾。
我們并沒(méi)有做到完美,因?yàn)橘Y源永遠(yuǎn)有限,我們需要把它更多投入到我們的競(jìng)爭(zhēng)優(yōu)勢(shì)上,所以還是保留了驗(yàn)證碼機(jī)制。在某些情況下還是用這種原始、粗暴,但有效的手段來(lái)解決問(wèn)題——這就是我們選擇的平衡。
Google 在兩三年前發(fā)布了一個(gè)叫作 reCAPTCHA 的解決方案,本著“對(duì)人類友好,對(duì)機(jī)器難搞”的原則,用戶只需要簡(jiǎn)單點(diǎn)擊一個(gè)“我不是機(jī)器人”的復(fù)選框就可以,不再需要分辨歪歪扭扭的驗(yàn)證碼。
reCAPTCHA 通過(guò)收集用戶環(huán)境和行為數(shù)據(jù),綜合分析、智能區(qū)分人和機(jī)器。除此之外,阿里也發(fā)布了自己的滑動(dòng)驗(yàn)證碼,還有國(guó)內(nèi)一些第三方的驗(yàn)證碼服務(wù)也在快速迭代進(jìn)化。畢竟 Google 的服務(wù)不太穩(wěn)定,他們還是獲得了自己的生長(zhǎng)空間。
這些更高級(jí)的驗(yàn)證碼服務(wù),大部分都在標(biāo)榜自己的“人工智能”屬性,不管真假,這確實(shí)是個(gè)非常典型的機(jī)器學(xué)習(xí)應(yīng)用場(chǎng)景,提供各種行為特征,訓(xùn)練算法去分辨人和機(jī)器。
我們把這個(gè)思路放大來(lái)看,如果可以把過(guò)去看似理所應(yīng)當(dāng),其實(shí)是由于服務(wù)提供方的成本考慮,而把責(zé)任推卸給用戶的那些功能或流程拿出來(lái)重新思考設(shè)計(jì),再搭配成熟的機(jī)器學(xué)習(xí)算法,或許就可以帶來(lái)一系列革命性的用戶體驗(yàn)進(jìn)化。
比如:免密支付,讓用戶不必再耗費(fèi)精力記錄密碼,比如:無(wú)人超市,讓用戶無(wú)需排隊(duì)付款;無(wú)人駕駛,讓用戶在通勤的過(guò)程中不需要費(fèi)神開(kāi)車,等等等等。
這個(gè)偉大的變革時(shí)代提供了新的方法和工具,讓我們有機(jī)會(huì)重新去審視過(guò)去由于技術(shù)和工具的限制而不得不做出的妥協(xié)。用新方法解決老問(wèn)題,或許不需要什么翻天覆地的變化,只是撬松一兩塊被慣性封印的磚,就已經(jīng)算得上強(qiáng)有力的推動(dòng)了。這是驗(yàn)證碼給我最后,也是最重要的啟發(fā)。
所以說(shuō),一個(gè)簡(jiǎn)單的驗(yàn)證碼,背后卻并不簡(jiǎn)單,我們能從中看到設(shè)計(jì)原則、設(shè)計(jì)哲學(xué),甚至技術(shù)演化改變用戶體驗(yàn)的過(guò)程。
在你熟悉的產(chǎn)品中,是否也有像驗(yàn)證碼這樣,雖然用戶習(xí)以為常,卻并不合邏輯,而且暗含機(jī)會(huì)的產(chǎn)品形態(tài)呢?
不妨在留言中講出來(lái),我們一起討論。
作者:邱岳,微信公眾號(hào):二爺鑒書(shū),極客時(shí)間「邱岳的產(chǎn)品手記」出品人