讓你做12306的“產(chǎn)品經(jīng)理”,你會(huì)怎樣設(shè)計(jì)?春運(yùn)將至,大家都非常關(guān)注12306的搶票,驗(yàn)證碼和手機(jī)驗(yàn)證也成了段子手和噴子們爭(zhēng)先恐后調(diào)侃的對(duì)象,不得不佩服各位P圖大神的功力。
仔細(xì)想想,圖片驗(yàn)證碼的作用就是用于刷票的,那么為什么不是用于防止黃牛大量囤積或者用于防止黃牛用自己的賬號(hào)買票呢?因?yàn)閳D片驗(yàn)證碼有一個(gè)概率,根據(jù)現(xiàn)在的驗(yàn)證碼規(guī)則,在8個(gè)圖中選擇1-3個(gè)圖,那么隨機(jī)選一個(gè)選中的概率是1.086%,也就是說黃牛買100次票就會(huì)有1次搶到票。這一點(diǎn)對(duì)普通用戶來說是毫無(wú)作用的,一般的用戶就算用刷票軟件100次才能有1次過驗(yàn)證碼,搶票成本太高了。但對(duì)于大量囤積票的黃牛販子來說這個(gè)概率足矣。使用一個(gè)機(jī)器100次能過1次,那么使用幾十、幾百個(gè)機(jī)器搶,就可以想囤積多少就囤多少了。而驗(yàn)證碼用來杜絕黃牛拿自己的賬號(hào)人力囤票也是行不通的,黃牛人工操作,你總沒辦法吧,人力囤票,就像以前的黃牛都是到火車站排隊(duì)去買票一樣。
針對(duì)這幾點(diǎn),我們應(yīng)該怎么樣設(shè)計(jì)才能防止呢?一點(diǎn)一點(diǎn)來說:
一、實(shí)名認(rèn)證
這是一個(gè)很大的課題,不要想當(dāng)然的認(rèn)為很容易。在足夠的利益面前,信息是可以偽造的,而我們還不能過分的追求唯一性。
舉個(gè)例子,比如有人說“IP、M AC、序列號(hào)、操作系統(tǒng)……重復(fù)就視為是一個(gè)人且只能買一張票”。這怎么可能?難道就不允許換一個(gè)電腦了嗎?難道就不允許中轉(zhuǎn)換乘了嗎?還有人說,手機(jī)號(hào)驗(yàn)證了就可以解決實(shí)名認(rèn)證問題了,這只能說tooyoungtoosim ple,網(wǎng)上有那么多代發(fā)代收短信的渠道,用假手機(jī)號(hào)過手機(jī)驗(yàn)證碼根本不是夢(mèng)。
仔細(xì)梳理一下,實(shí)名認(rèn)證主要是幾點(diǎn):身份證驗(yàn)證、賬號(hào)的手機(jī)號(hào)驗(yàn)證、賬號(hào)與真人對(duì)應(yīng)的認(rèn)證。
身份證的驗(yàn)證:目前是無(wú)法完全杜絕的,無(wú)論何種情況下,黃??偸悄芘秸鎸?shí)或者偽造的身份證,身份證識(shí)別也是無(wú)法準(zhǔn)確驗(yàn)證的。12306的預(yù)防機(jī)制,是發(fā)現(xiàn)一個(gè)身份證添加在某處之后在180天之內(nèi)不允許刪除,身份證添加有一定的上限。這應(yīng)該是一個(gè)為了打擊黃牛的功能。
手機(jī)號(hào)的驗(yàn)證:在滴滴、快滴出臺(tái)新用戶補(bǔ)貼時(shí),就出了一大批來代收發(fā)驗(yàn)證碼的平臺(tái),這些平臺(tái)就是為了給用戶在沒有手機(jī)號(hào)的情況下,可以注冊(cè)很多賬號(hào)。這一問題也很難解決,總不可能讓電信提供一個(gè)所有真實(shí)手機(jī)號(hào)碼的數(shù)據(jù)庫(kù)吧,甚至電信自己也沒有這么一個(gè)數(shù)據(jù)庫(kù)。反觀12306還是可以的,其實(shí),現(xiàn)在的這種主動(dòng)發(fā)短信的方式雖然有點(diǎn)漏洞,但也總比沒有好多了。
最后就是賬號(hào)和真人對(duì)應(yīng):這已經(jīng)是超出時(shí)代的課題了,最多就是用驗(yàn)證碼去勉強(qiáng)區(qū)分一下傻的機(jī)器和真人。
二、如何防止黃牛大量囤積票
這一點(diǎn)還要從概率的方面考慮。任何驗(yàn)證策略總是有一個(gè)成功概率的,只要有足夠大的基數(shù),那就一定能達(dá)到預(yù)期的成功數(shù)量。最直接的應(yīng)對(duì)方式就出現(xiàn)了,就是單客戶端、單賬號(hào)、單個(gè)手機(jī)號(hào)在一定的時(shí)間段有一定的訪問次數(shù)上限(如一個(gè)小時(shí)或者一天內(nèi)查詢的次數(shù)設(shè)置一個(gè)限制,這個(gè)限制可以考慮根據(jù)時(shí)間段的長(zhǎng)度來決定限額大小)。一般的產(chǎn)品這么做是沒必要的,但是對(duì)于12306卻十分必要,限額是最不容易被用戶感知到的功能,也是最推薦的方案,最好的策略就是能潤(rùn)物細(xì)無(wú)聲地只對(duì)大量刷票的用戶做出一定限制,讓普通用戶有一個(gè)好好買票的機(jī)會(huì)。
三、如何防止黃牛人力囤票
在這一方面來說驗(yàn)證碼也是毫無(wú)用處的。因?yàn)槿斯べI票也是一個(gè)很好的囤票手段。在農(nóng)村招一批年輕的小伙子,找一個(gè)黑網(wǎng)吧,經(jīng)過半天培訓(xùn)做搶票的工作肯定毫無(wú)問題了。一整天人工刷票來囤積,有客戶沒票著急買的時(shí)候加價(jià)20%-80%賣給他———找個(gè)人少的時(shí)間,黃牛的賬戶先退票,客戶賬戶再買,這就完成了票的轉(zhuǎn)移。針對(duì)這一點(diǎn),最基本的防御方法就是實(shí)名購(gòu)票,但這還不夠,還有:
一個(gè)賬戶不能購(gòu)買的來回區(qū)間過多,比如限制15個(gè)始發(fā)站、終點(diǎn)站組合,或者可以要求設(shè)置家鄉(xiāng)地和工作地,買去這兩地或從這里出發(fā)的車票會(huì)比一般客戶容易。
再有,退的票不是立即就可以買,而是所有退票都統(tǒng)一時(shí)間處理。比如3天前退的票都在發(fā)車3天前的某一個(gè)時(shí)刻放出,3天內(nèi)的票就當(dāng)日或次日12:00放出,這樣黃牛就沒法偷偷地把票轉(zhuǎn)移到客戶手里。
四、如何防止自動(dòng)刷票
這是最麻煩的。換句話說,就是如何讓不同用戶公平地?fù)屍?,而不?huì)因?yàn)橛辛四撤N工具就比別人容易搶票,甚至不會(huì)因?yàn)槭致蛽尣坏狡?。?dāng)然這個(gè)很難。
到了這里黃牛囤積的概率應(yīng)該已經(jīng)大大減小了,如果能把這一步也禁止了,那么黃牛應(yīng)該就只能回到最原始的方案。到這里圖片驗(yàn)證碼才開始登場(chǎng),這也是秒殺方案要考慮的地方。圖片驗(yàn)證碼的作用就是防止機(jī)器能在開搶0.1s之內(nèi)就買到票。普通用戶要2-4s,如果機(jī)器不能快速識(shí)別圖片驗(yàn)證碼,那么加上驗(yàn)證碼之后所有人的反應(yīng)速度都在4- 10s左右,這就公平了。
最后說一下,其實(shí)現(xiàn)在12306做得還是挺良心的,界面清晰、功能基本沒有bug。出了個(gè)高級(jí)一點(diǎn)的驗(yàn)證功能——— 圖片驗(yàn)證碼卻被黑出了新的巔峰,其實(shí)仔細(xì)想一下就知道此舉旨在保證大多數(shù)人的搶票權(quán)益。12306目前主要是和黃牛作斗爭(zhēng),這是他的命門,只要能讓用戶買到票,這就是好的用戶體驗(yàn)!其他都不重要。也別總說12306拿錢不辦事,給阿里就肯定能弄好,扯淡的人請(qǐng)先用一下腦子。 來源:36氪