tft每日頭條

 > 生活

 > 驗證碼技術難點

驗證碼技術難點

生活 更新时间:2025-01-29 07:48:43

它的設計初衷是為了區分人和機器,實現方式是在正常流程中增加了一道門檻,人可以翻過去,而機器會被擋住。從某種意義上說,它可能是個有效設計,但它真的是一個好設計嗎?

驗證碼技術難點(我們習以為常的驗證碼)1

當你注冊或者登錄某個應用的時候,經常會用到驗證碼。它們大部分是由一串歪歪扭扭的字符組成的,看起來并不容易辨别。

驗證碼的英文名是 CAPTCHA,這不是一個正規的單詞,而是個縮寫,它的全稱是:Completely Automated Public Turing test to tell Computers and Humans Apart。翻譯過來是:用來區分人類和電腦的全自動圖靈測試。

不知道為什麼,我就是覺得它聽起來像一個不大正經的惡作劇。

據維基百科的描述:

驗證碼出現于十年前,是為了防止機器(程序)假扮成人,去占用原本為用戶準備的資源。比如:利用腳本程序不斷地模拟嘗試登錄以便破解賬号密碼,或者利用惡意代碼在 BBS 中發布大量廣告或詐騙内容。

可以看到,它的設計初衷是為了區分人和機器,實現方式是在正常流程中增加了一道門檻,人可以翻過去,而機器會被擋住。

從某種意義上說,它可能是個有效設計,但我不認為它是個好設計。因為擋住機器這件事本應該是服務提供方的責任,而服務方卻将其成本轉嫁給了用戶。

這件事引發了我的思考:

第一個思考:不要将責任推卸給用戶

不知道你有沒有想過,讓用戶辨别和輸入扭曲的驗證碼,其實是因為服務提供方的能力欠缺,無法靜默區分人和機器,而輸入驗證碼本身,這一操作對用戶來說其實并無價值。

有一次我接到用戶打來電話,抱怨自己搞不定驗證碼。我向他解釋我們正在被攻擊,所以臨時調高了驗證碼的級别。電話的最後,我習慣性地向他道歉,用戶卻很體貼地安慰我說沒必要道歉,畢竟被攻擊不是我們的錯。

當時我心頭一熱,臉上一紅。他說的沒錯,被攻擊确實不是我們的錯,但更不是用戶的錯,讓他們付出成本,花費時間,去辨别圖片裡的那個圓圈究竟是 O 還是 0 還是 6,其實就是讓他們承擔我們本應該承擔的責任。

舉一反三,如果再激進一點考慮,我們的軟件服務中還有不少推卸責任的設計,比如:讓用戶在成千上萬的商品中篩選和比價,比如:各種複雜的界面參數設置和興趣選擇。要是想得再發散一點,所有的銀行賬戶密碼似乎也沒有必要,超市排隊也是一樣。

如果用戶不需要付出篩選和比價的成本,或不需要花費精力記住賬戶密碼,卻可以享受到同樣高質量的服務,是不是更好呢?

基于這樣的思考,我們是不是應該馬上去掉這些推卸責任的設計,比如:想出更複雜的方案,替代現有的驗證碼機制呢?

這是關于驗證碼的第二個思考。

第二個思考:方案選擇的平衡

有效的設計确實未必是好設計,比如:我自己曾經參與設計的産品中也用到驗證碼,而且在某些特殊階段(像剛才提到的被定向攻擊),我們還會升級驗證碼機制,讓驗證碼出現的頻率更高,而且更加難以辨認,從而在某些關鍵入口抵抗一些有針對性的攻擊。

這一策略是有效的,但對用戶的傷害也很大,升級驗證碼機制後,用戶登錄過程中耗費的時間會顯著增加,通過率也會下降,還有大量的用戶抱怨一股腦地湧進來。

然而從服務提供方的角度來看,它卻用最低的成本快速地解決了當時面臨的問題。這是産品設計方案選擇過程中不得不做出的“平衡”,很多時候我們沒有辦法第一時間實施對用戶的完美方案,這就需要在産品利益和用戶利益之間,找到微妙的動态平衡點。

所以讓一個産品經理講用戶價值其實不難,天花亂墜說完美方案也不難,難的是在實際工程裡做出合适的決定。做工程大部分時候都滿身污垢,能在其中保持鎮定,保持平衡并不容易。

我們當時在扛過了幾輪攻擊之後,投入了一些技術資源,引入了更多靜默監測的策略。比如:記錄用戶密碼、記錄用戶上次登錄的位置/設備,或通過一些頁面動作來做出判斷,保證大部分老用戶和一部分新用戶不會受到驗證碼的打擾。

我們并沒有做到完美,因為資源永遠有限,我們需要把它更多投入到我們的競争優勢上,所以還是保留了驗證碼機制。在某些情況下還是用這種原始、粗暴,但有效的手段來解決問題——這就是我們選擇的平衡。

第三個思考:驗證碼的進化

Google 在兩三年前發布了一個叫作 reCAPTCHA 的解決方案,本着“對人類友好,對機器難搞”的原則,用戶隻需要簡單點擊一個“我不是機器人”的複選框就可以,不再需要分辨歪歪扭扭的驗證碼。

reCAPTCHA 通過收集用戶環境和行為數據,綜合分析、智能區分人和機器。除此之外,阿裡也發布了自己的滑動驗證碼,還有國内一些第三方的驗證碼服務也在快速叠代進化。畢竟 Google 的服務不太穩定,他們還是獲得了自己的生長空間。

這些更高級的驗證碼服務,大部分都在标榜自己的“人工智能”屬性,不管真假,這确實是個非常典型的機器學習應用場景,提供各種行為特征,訓練算法去分辨人和機器。

我們把這個思路放大來看,如果可以把過去看似理所應當,其實是由于服務提供方的成本考慮,而把責任推卸給用戶的那些功能或流程拿出來重新思考設計,再搭配成熟的機器學習算法,或許就可以帶來一系列革命性的用戶體驗進化。

比如:免密支付,讓用戶不必再耗費精力記錄密碼,比如:無人超市,讓用戶無需排隊付款;無人駕駛,讓用戶在通勤的過程中不需要費神開車,等等等等。

這個偉大的變革時代提供了新的方法和工具,讓我們有機會重新去審視過去由于技術和工具的限制而不得不做出的妥協。用新方法解決老問題,或許不需要什麼翻天覆地的變化,隻是撬松一兩塊被慣性封印的磚,就已經算得上強有力的推動了。這是驗證碼給我最後,也是最重要的啟發。

所以說,一個簡單的驗證碼,背後卻并不簡單,我們能從中看到設計原則、設計哲學,甚至技術演化改變用戶體驗的過程。

在你熟悉的産品中,是否也有像驗證碼這樣,雖然用戶習以為常,卻并不合邏輯,而且暗含機會的産品形态呢?

不妨在留言中講出來,我們一起讨論。

作者:邱嶽,二爺鑒書,極客時間「邱嶽的産品手記」出品人

本文由 @邱嶽 原創發布于人人都是産品經理。未經許可,禁止轉載

題圖來自 Pexels,基于 CC0 協議

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved