㈠ 火車票放票瞬間秒光有內幕嗎
2月1日開始,一年一度的春運正式啟動。與往年相同的是,很多回鄉遊子發現熱門路線的車票依舊一票難求。甚至有不少車票在網上開售時瞬間就全部「秒光」。
面對公眾的質疑,鐵路部門相關負責人則表示,在高峰時段,網站每秒售出車票近700張,而一列普通動車組的乘客總數也就是600人左右,所以出現部分車次秒光的現象是「正常」的。
雖然今年有關部門充分運用了先進技術手段防範、打擊線上「黃牛」,但依舊有大量網友評論認為:「放票瞬間秒光」是因為「搶票太熱」,是「正常」現象,或許有些太草率、太簡單了。更有熱心網友表示,除非手速極快,不然稍微猶豫一下,就有可能讓車票瞬間溜走。
那麼,沒有極快手速的乘客,就只能求助於付費搶票軟體了,倘若這樣還是搶不到票的話,最終只能尋找黃牛加價購票。可是,一旦攤上假黃牛,又會賠了夫人又折兵。唉,春運火車票,總有一種你避不開的愁。
「如果第三方平台刷不到票,那就真的只有找我們了。」經過多次溝通,懂懂筆記終於聯絡到了資深黃牛「排骨」。他認為不管官方的措施和手段多麼嚴厲,黃牛行為是一定會有的。但不同的是,近幾年漸漸出現的第三方搶票軟體,使得黃牛市場的競爭也變得激烈了許多,「我們憑本事囤票加價賣,他們靠技術撿漏賺小錢,我看說不上誰更高大上,本質上都是灰色的。」
到底這些黃牛是有什麼能耐,在官方的圍堵和搶票軟體的夾擊下,依舊能夠囤積相當數量火車票呢?或許從「排骨」的描述里,可以看到互聯網時代新黃牛的演進過程。
新黃牛黨深諳唯快不破
「因為賬號刷票的頻率太快,有時也會被封號。」
雖然在購票平台注冊了大量的賬號,但程序頻繁的操作,也免不了被官方程序抓住,遭到封號,因此,「排骨」和同行仍需要大量的新賬號來補充。但如今無論是哪種注冊方式,都需要驗證實名制手機號碼,想注冊更多新賬號,也有一定難度,成本也比較高。
「所以就只能『借』別人的賬號了。」他告訴懂懂筆記,每當春運來臨,網上總有大量的用戶搜索「刷票神器」,希望找到一款好的購票軟體順利搶票。而黃牛們也利用了這些需求,忽悠急於購票的用戶乖乖送上自己的賬號和密碼。
開發類似「刷票軟體」的應用程式,對於如今以技術為先的黃牛黨來說並不是難題。但要注意,這些應用僅僅只是長得像「刷票軟體」,實質上就是一個可供填寫記錄信息的表單的「野程序」。
很多用戶通過搜索「刷票神器」,下載這些「野程序」之後,便會急於運行軟體搶票,而程式在啟動之後,往往會要求用戶先行填寫官方購票平台的注冊賬號、密碼,「很多用戶想都沒想,就輸入並點擊登錄,此時他的賬號密碼就會被提交到程序編寫者手裡,有時候連身份證號碼也能一起拿到手。」
而這些所謂的刷票神器,永遠刷不出用戶想要的票,最終總是提示「版本錯誤」或「連接失敗」等信息。拿到了這些賬號和密碼之後,黃牛們就會立刻綁定那些「騙」來的身份證號,用於搶票。只要效率夠快,用戶甚至不會發覺自己的賬號被盜用了。
「排骨」告訴懂懂筆記,並非所有的「刷票神器」都是為了「釣」用戶的賬號信息。有部分由黃牛組織開發的高端「刷票神器」,運氣好時是真的能刷到票的。
「這些軟體和第三方刷票平台類似,是通過計算機模擬人的操作,實現快速登錄快速點擊快速付款,從中撿漏。」雖然不能保證一定能夠搶到票,但相對於純手速搶票,幾率將會大大提高。而這樣的「神器」往往價格不菲,「針對電商賣家的版本,賣幾百上千,忽悠小白的版本,也賣幾十塊錢。」
據他透露,這些所謂的「神器」,都是專業團隊在開發刷票軟體過程中的衍生產物,因為覺得純粹倒票的方式賺得不夠多,於是便想出了這樣的辦法,利用這些衍生搶票軟體,再賺普通用戶一筆,「很多想自食其力的用戶,最後都在軟體這里付了錢,即便沒有我們,他們也會到第三方刷票平台上去加服務費搶票的。」
俗話說,君子愛財取之有道,黃牛們的財富,卻是用損人利己的方式獲得。和絕大部分的黃牛一樣,「排骨」雖然不明說,但肯定也是無所不用其極,會利用一切可以利用的平台漏洞、用戶心理,榨取思鄉遊子每一滴血汗錢。春節,親人,車票,黃牛,組成了一曲充滿不和諧音符的旋律。
有關部門年年打擊,黃牛黨依舊年年猖獗,究竟是官方機構的實力不行,還是黃牛黨的技術太強?
或許都不是,倘若官方提升了技術門檻,嚴打黃牛,那勢必將影響到普通用戶的購票體驗和便捷性,嚴重的話甚至還會影響用戶的正常購票行為。技術鴻溝的出現,始終會讓一代人感覺到不公平。就像官方推行了好幾年的圖片驗證碼,至今仍舊有上年紀的用戶覺得存在一定難度。
但是,越「便捷」的技術,黃牛就越是得來不費工夫。因此,在阻擊黃牛倒票的問題上,始終是道高一尺魔高一丈。或許,相關管理機構只要加強動車上「人證票」的檢查力度,都有可能大大降低黃牛利用漏洞的機會。只要用戶覺得黃牛票可靠程度不高,就不會輕信那些花言巧語。這樣一來,或許猖獗的黃牛現象也才有可能從根本上得到遏制。
㈡ C語言可以編寫搶票軟體嗎
可以先學習C,另外PASCAL,QBSCAL這兩門也可以提高邏輯能力別聽別人的,要自己拿主意,當時我和你一樣沒有任何基礎,我自學編程,成為一名程序員,我最早學的是PASCAL,QBSCAL,C,VF,VB,我現在工作用VB開發CS結構的程序.沒有基礎的情況下,你可以學習C,PASCAL,QBSCAL也可以,雖然比較古老,但是可以給你打下良好的基礎,學習程序,就象蓋房子一樣,根基要打好,重要的是培養自己的邏輯能力,時間關系就說到這切記不可盲目追求什麼流行語言,要塌實的一步一步學習需要學習的東西有很多不是件簡單的事至少掌握以下十點.1、學習一門高級語言(推薦C/C++)推薦(C++程序設計)2、掌握一種編程工具(推薦VC)3、學習匯編基礎(只需要了解,能看明白匯編代碼就行)4、了解基本原理嘗試使用FPE、CE等軟體修改。5、學習破解技術(推薦加密與解密II一書)6、掌握常用的調試工具、反匯編工具、PE工具、脫殼工具等7、嘗試破解一些共享軟體8、掌握逆向編程(建議將自己編寫的軟體反編譯做對照學習)9、學習應用密碼學(可選)10、熟悉TCP/IP協議UDP協議
㈢ 快速網上訂火車票的軟體有哪些
一、360搶票王三代360搶票三代瀏覽器的另一個名字叫做360搶票王,通過安裝360搶票三代瀏覽器能夠順利的幫助用戶在國慶、春節等重大的節假日走出一票難求的窘境,第三代的搶票王軟體在許多功能上都有全新的設計,特別是設計新穎的搶票界面,及其的簡潔大方和清爽,能幫助用戶快速的掌握搶票王的各類功能,同時,這款軟體還提供自動登錄、免填驗證碼以及程序提交訂單的種種便利功能,用戶的體驗感很好。
二、12306搶票專家 12306搶票專家是根據鐵道部官網而開發的專業性極強的搶票軟體,它的一大優點是推出的預約搶票功能,這項功能可以最大程度的幫助用戶解決搶票難的問題,用戶通過使用這款軟體提交早前預約好的相關乘車信息就能夠安心地等待放票日期了,如此一來,購票者的時間和精力都可以避免不必要的浪費。除此之外,該軟體還有雲端刷票、搶票提醒等便利的功能提供給用戶。
三、網路衛士搶票版網路衛士春運搶票版十款非常智能的搶票軟體,這款軟體同時具有三大便利的技術:全程極速載入、自動操作和智能輸入驗證碼。網路衛士春運搶票版軟體還有三大不可忽視的優點:一、操作簡單:用戶只要填寫購票信息便能實現一鍵搶票,然後便可快速付款達成購票的目的;二、付款方式及其便捷:能夠直接進入付款界面,不用多次轉換界面;三、購票成功率高:網路衛士春運搶票版優於其它同類軟體的載入速度在搶票的過程中佔有一定的優勢。
四、極品列車時刻表不同於以上主要功能為搶票的三款軟體,極品列車時刻表是一款查詢列車時刻的軟體,這款軟體下載之後便能夠直接運行,對用戶而言非常簡單快捷。極品列車時刻表有三大功能分別是:車次查詢、站名查詢和可乘車次的查詢。這款軟體配合專業的搶票軟體可以說是恰到好處,極大的方便了我們日常、特別是節假日的出行安排。
㈣ 淺論12306網上購票系統的設計
12306可以說是一個成功型的案例。
你對他不好的印象是來自於12306剛出來那年,搶火車票導致各種崩潰,載入不出來,特別難辨認的驗證碼,還要安裝什麼安全的證書。
後來幾年12306做了重大的底層技術變革,但是網頁UI並沒有換(關於UI這個東西,更換UI對用戶來說是有學習代價的,尤其12306是一款面相全國人民的網頁和app,UI是不能隨便換的)
所以你就會理所當然的認為現在的12306還是以前的12306,非也,現在的12306每天能扛得住30億次查詢請求。
通過官方的網頁、鐵路12306 app、攜程、去哪兒、超級火車票,還有各種民間程序員寫的搶票工具等等,包括各種瀏覽器插件不停的刷新搶票。還有人嫌棄自己不是下鋪,也要刷刷刷,改成滿意的為止。
有一張火車票被退了,其實這張票只是一個區間,比如西安始發,到北京終點這張票被退了,這樣按道理來說中間任意經停站到任意經停站都可以買票,等等,會有很多意想不到的需求,包含各種奇葩的組合
綜上所述,其實12306的業務邏輯遠比淘寶這樣的電商要復雜很多
需求分析、系統設計不僅要考慮到全國各省的情況,還要考慮窗口買票,電話買票不受互聯網購票的影響。
畢竟在窗口查出一張票,在用戶決定買它之前,這張票不可能被互聯網購票的人給搶了。也就是說互聯網購票在票源稀缺的情況下,和窗口電話購票相比是沒有優勢的。
互聯網購票之所以會失去優勢,主要原因就是12306購票系統為了支持每天大量的查詢請求,把票數的緩存時間調整的極長,筆者目測可能5分鍾都不止。
簡單說就是現在西安去北京的票是0張,突然有人退了票,這時2個人,一個窗口訂票,一個互聯網訂票。
互聯網訂票的人刷新發現還是0張,當然他也是不停地刷新,但是得到的是舊的緩存信息
窗口訂票的人花了5分鍾時間排隊,等到他的時候,互聯網訂票的人刷新出來了一張余票,他點擊購買,選乘坐人,提交訂單的時候,窗口排隊的人也在售票員那裡查到了一張余票,這時候互聯網訂票者提交的訂單會失敗,窗口訂票的人會成功買到這張寶貴的票源。
然而這個故事還沒有結束。在窗口購票的那個人開心的拿著自己的票走了之後,互聯網購票的人回到票源查詢界面刷新發現還是有一張余票,他看到的還是舊的緩存,點擊票源會收到不是最新票源的提示,直到5分鍾之後,票源會再次變為0。
簡單的來說,12606就是這樣設計的,從此春運再多人搶票也不會導致網站直接崩潰,大不了就是余票為0嘍。
參考資料:http://network.51cto.com/art/201401/427406.htm
㈤ 誰介紹個搶票率高的軟體
1、高鐵管家
雖然高鐵管家也是默認勾選了有償搶票服務,加價模式也有三種:10元、20元、30元,在選擇加價30元時,預估的搶票成功率為45%。
2、攜程
作為國內數一數二的旅行APP,不少人都喜歡用攜程訂票搶票,訂酒店。同理你可以對比智行,一樣的有償搶票服務是默認勾選的,同時還有多重的加價選擇。不同環境下搶票的成功率不同,價格也不盡相同。
而攜程最獨特的點就是支持夜間搶票功能,但是這個功能只支持線下出票。有不願意透露姓名的業內人士表示——在12306官網跟APP停止夜間服務的情況下,攜程網不大可能能從網上購票。應該是有專門的人員,在幫顧客線下購票。那如果真的能買到票的話,付多點錢找人買票也無可厚非。
使用攜程:勾選24小時VIP搶票、VIP專人搶票後搶票成功率會提升了超過10%。在同時選擇VIP專人搶票與24小時VIP搶票後,服務費為96元(包括:66元+25元配送費+5元鐵路客票代購費)。
3、去哪兒
在去哪兒的APP購票界面中,你可以看到有償搶票服務依舊是默認勾選的,同時去哪兒中有兩種加價服務:APP內顯示選擇套餐後搶票成功率提升超過50%。最高級別加價費用為30元。
同時在去哪兒中,選擇搶票功能會提示你「選擇套餐將大大增加您的搶票成功概率」, 還提示用戶發車前1-2天搶到票的概率最高。
4、智行火車票
作為往年備受遊子寵愛的智行,自從被攜程收購之後,界面就基本跟攜程的購票界面一樣無二了。
在智行火車票的購票界面中,你可以發現有償搶票服務也是默認勾選的,其中包含三種加價模式且與攜程相同。
在「全不勾選」的情況下,智行預估的成功率為26%,當選擇了一種30元的加價模式後,成功率提高了30%,而當「全部勾選」後,成功率達到了80.2%。
5、飛豬
飛豬中雖然一樣是默認勾選上有償搶票服務,依舊有兩種加價服務模式,但是在這兩種模式並沒有過度吹噓搶票成功率多高。只是對不加價的搶票服務做了一個:可能需要排隊的提示。
㈥ 春節回家的火車票真心難買,有什麼辦法搶車票嗎
不知道你家是哪裡的,但是說實話,搶票並不靠譜,而且還是很難搶的。即使有票,恐怕也是站票,那樣會很累,真心沒意思。我也不是抱著讓你採納我的心態上來回答的,純屬來發表一下我個人的一些看法。我建議你還是改坐汽車吧,或者先坐火車到某一個城市,然後再改坐汽車,以節省路費成本。雖說很多人抱著「即使站著回去過年也值了」的心態,這份心情能理解,但是這種做法,能避免就盡量避免吧, 為了回家,稍微多花一點錢,讓自己也舒服一些,以最好的狀態回去過年,這樣不是更好嗎?利用過年這段時間,再想想明年的去向,看能否在離家更近的地方工作,甚至直接在家鄉工作,我想這是你家人所期望的,畢竟沒有什麼事比一家人一直在一起更重要了。
你是從哪裡回哪裡?我可以幫你一起想想辦法。我不需要任何回報,只是趁著有閑暇時間幫助一些回家的人做點力所能及的事而已。
㈦ 你好,我想做一個搶票軟體,該從哪方面入手
做搶票軟體的話。
首先你要知道搶票軟體的原理:用程序來模擬人為操作,但是比人為操作速度更快,更精準。
第一,需要學習web前端基礎知識,你要會分析售票網站的代碼,裡面的數據是怎麼實現的,現在的網站都是靜態的框架(html+css,或者html5),動態的數據(利用javascript實現)。
第二,在第一的基礎之上,需要學習編程語言,利用編程語言寫爬蟲腳本,你可以用python語言或者其他編程語言寫腳本都可以,只要能爬取售票網站的數據就行了。根據售票網站的代碼格局,設計好專項的爬蟲程序,不斷的調試再調試,如果你想把你的爬蟲腳本打包成軟體,還要稍微的學習一下,打包成只是windows平台的還是Linux平台的,還是MACOS(蘋果電腦系統)平台的,還是移動操作平台(手機,安卓還是蘋果),不同的平台下打包也不同,做出來後還要不斷的測試直到沒問題,再考慮怎麼將軟體上線,這些等等的就不細說了,這個階段需要耗費些精力了
第三,現在很多網站的防爬蟲機制都很強,售票網站的防爬機制更強,所以你需要設計好代碼,防止被防爬蟲機制把你的程序防下來,這個階段其實可以放在你學爬蟲的階段里一起學習,這個是至關重要的階段
第四,你需要順應時代的變化,經驗而談,售票網站都會定期更新,所以你寫的爬蟲腳本也要跟著改變。長久下來,如果你做的很好,那麼你基本也算IT圈內人了。
不過說句實話,做搶票軟體國內市場里也只在春運時期有點作用,平常時間基本沒什麼人用,官方直接就可以買的,而且這門檻說高不高,說低不低,搶票行里目前已經有很多比較成熟的搶票軟體存在了,你要做就必須體現出與那些成熟的app很明顯的不同,以及很明顯的優勢你才能夠分一杯羹,不然也搞不出什麼。不要聽人搞搶票很賺錢,這一行,始終不是長久的,畢竟和黃牛黨很類似,不算多麼正規的。
還有,說句實在話,可能不太好聽,如果哥們你只是腦子一熱想搞這個的,沒有絕對的毅力,我勸你別趟這渾水。
以上全是經驗而談,實話實說
㈧ 黃牛搶票神器的揭秘內幕是什麼
不但有高速寬頻的支持,部分黃牛甚至有自己專屬的「搶票神器」。據知情人士透露,他們自己設計的搶票外掛程序,能記錄乘車人信息,不斷自動重復登錄,1秒鍾可自動登錄3次,直到登錄成功,以此代替緩慢的人工操作,並通過對12306網站的不斷刷新和監控,一旦有人退票,能很快發現。一般來說,反應時間不超過0.1秒。
秒殺源自動識別驗證碼
為防止惡意查詢、屯票等行為,12306在整個訂票過程中設置一定限制和規范,包括兩次購票查詢的過程不能低於5秒,登錄和提交訂單時都設置驗證碼等。據一家技術公司瀏覽器技術人員介紹,黃牛用的搶票軟體則是自動識別驗證碼,軟體以毫秒速度自動識別並自動輸入,比手動輸入快數倍。同時此類軟體是多賬戶掛機刷票通常設置有批量登錄的功能。據悉,這些搶票軟體前期利用假身份證在12306網站注冊幾百個賬號,批量導入這些賬戶掛機刷票,不受限制,可同時購買上千張票,甚至一整節車廂的票可在瞬間搶走。
㈨ 電腦上安裝什麼搶票軟體好
一、360急速瀏覽器搶票版多了個綠色「開始刷票」按鈕
將電腦上所有的瀏覽器全部卸載,然後安裝上360急速瀏覽器搶票專用版。安裝完成後,頁面自動跳轉到搶票頁面。此時,頁面提醒用戶,點擊搶票頁面的右上方字體為仿宋、顏色為粉紅色的「票」。
點擊之後,頁面會自動安裝鐵道部證書,並跳轉到在線訂票的登錄界面。輸入賬號和密碼登錄,進入訂票界面,與沒安裝插件的界面不同之處在於,「查詢」按鈕旁增加了一個綠色的「開始刷票」按鈕,這個按鈕可以很迅速地查詢需要購買車次的余票。
嘗試著查詢車票,並點擊「開始刷票」按鈕,此時界面右下方彈出一個「有票,可以直接預定」的提醒,此後的訂票流程和沒有安裝插件的流程一樣。
從安裝訂票瀏覽器到訂票成功,360急速瀏覽器與鐵道部在線訂票網站的區別在於,多了一個綠色的「開始刷票」按鈕,可以供不停地刷新,並且多了提醒。
二、即刻搜索搶票軟體可選席位,輸入車次自動訂票
即刻搶票是人民搜索研發的一款搶票軟體,較之其他搶票軟體的優勢在於可以自動訂票。
在即刻搶票的頁面,需要先注冊賬號,然後再綁定經驗證通過的12306賬號,值得注意的是,即刻訂票可以綁定五個賬號,原因在於「驗證成功的賬號越多,預訂成功的概率越大」。
將自己的賬號輸入進去,驗證成功之後,頁面自動出現一個乘車時間,與其他搶票軟體不同之處在於,即刻搶票接受預置訂單的日期都比12306網站上的購票日期提早1天。比如,在12306網站上,今天(23號)最遲只能購買2月11日的火車票,但是即刻搶票是幫你搶2月12號的票。只要你輸入車次並選擇席位(硬卧、軟卧、硬座),第二天火車票開始購買時,即刻搶票會自動幫你搶票。
不過,目前「即刻搶票」1.0暫時只支持出發地為列車始發站的訂單。
三、獵豹瀏覽器搶票版自動刷票 卧鋪優選
相比360搶票瀏覽器和即刻搶票,獵豹瀏覽器搶票版步驟顯得復雜得多。
在安裝獵豹瀏覽器搶票版之後,頁面會自動彈出安裝12306助手,安裝完成之後,會彈出一個注冊框,點擊注冊框上的連接,則進入到一個網友設計的搶票頁面上,再次獲得驗證碼之後,將驗證碼輸入到此前的注冊框中,才能進入到火車票訂票網站的注冊頁面上。
在進入到注冊頁面後,輸入賬號、密碼、驗證碼,發現不需要自己點進入,頁面會自動轉入到訂票頁面。安裝了12306搶票助手的頁面,比常規的頁面多了「自動刷票」 「輔助工具」「卧鋪優選」等功能。比如可以設定6秒刷新一次車票,當天無票時,可以自動車查詢下一天,還可以刷選下鋪票。
輸入車票,並設定「卧鋪優選」,發現頁面會自動彈出「已經有票」,在勾選「提交訂單之後」,輸入驗證碼,最後訂到一張車票,車票顯示為「下鋪」。
四、搜狗瀏覽器搶票版多次操作 網路「很忙」
安裝搜狗瀏覽器搶票版,按照提示在搶票之前需要安裝12306插件,並且要將瀏覽模式調為「兼容模式」。記者按照要求操作之後進入到12306頁面,但是12306網站卻提醒網路正忙,並要求將瀏覽模式改為「高速模式」。
改為「高速模式」再次進入,仍然顯示網路忙,多次調試仍無結果,但是用別的瀏覽器,並沒有提醒網路忙。
五、傲遊雲瀏覽器搶票版功能強大 操作復雜
如果用一句話形容傲遊雲瀏覽器搶票版,那絕對是「功能強大,操作復雜」。
下載完成並進入到瀏覽器,首先需要進入到插件中心安裝「12306.cn」訂票助手,安裝之後進入到火車票訂票網站,此時頁面會彈出一個注冊框,根據注冊框的提醒,進入到另外一個頁面,將自己在火車票訂票網上的賬號輸入得到一個驗證碼,然後再將驗證碼輸入到此前的注冊框中,才算順利地進入了12306網站的登錄界面。
在登錄進入到搶票頁面時,界面和獵豹瀏覽器搶票版所顯示的頁面差別不大,原因在於兩者所用的插件都是由一位名叫「木魚」的網友設計的。頁面多了「自動刷票」 「輔助工具」「卧鋪優選」等功能。
此外,傲遊的搶票版多了一個預先設置條件後配合輔助工具自動搶票,只要提前把想乘坐的車次和席位選好,然後設置輔助信息,點擊「查詢」後,搶到票後會自動提交訂單,最後只需要按時付款即可。
雖然功能強大,但是發現,安裝了插件的訂票界面,多了很多綠色紅色的按鈕,頁面也顯得復雜,用起來並不順手。
六、12306.cn訂票助手想訂到票 得找幫手
由木魚開發的一個免費、開源的輔助訂票軟體程序,其本質是一個腳本程序,利用計算機模擬購票人完成車票的自動查詢、訂單填寫等行為。訂票助手本身並不能完成整個訂票流程,需要在瀏覽器上進行載入,之後訪問12306.cn運行才能完成。
㈩ 12306這個問題具體怎麼做
曾嗤之以鼻 現在認為幾乎是奇跡
1月11日起,12306網站開始銷售除夕當日火車票。每到此時,鐵路系統唯一的官方購票網站12306就會成為眾矢之的。今年也不例外,12306再次被淹沒在一片埋怨聲中。
1月5日,觀察者網刊登了問答網站「知乎」上的用戶王強的解答,回答「如果把12306外包給IBM或者阿里巴巴來做的話,能不能比現在做得好?」這一問題。
1月10日,一位ID名為「代碼狗」的前淘寶工程師,後來在一家電商公司做技術副總的IT業內人士也在著名論壇「西西河」上發文,表達了他自己對12306系統的看法。
值得注意的是,「代碼狗」在12306系統剛上線時也有過不少微詞。為了證明12306系統很容易搭建,「代碼狗」甚至曾經發起過一個名為「替12306設計系統」的開源項目。通過工作中的實踐,「代碼狗」對於12306系統也有了新的認識。
觀察者網轉載此文,供讀者參考。
全文如下:
官方訂票網站12306崩潰時的頁面(資料圖)
本人淘寶技術專家,2012年在一家百強民企做電商副總,當時在極為艱苦的條件下帶隊開發了一個B2C(企業針對個人開展的電子商務活動——觀察者網注)網站,走支付寶和銀聯支付通道,年營業額千萬級(作者註:當然實在太少了,我只是說這個網站投入了實際的運營)。
也就在那個時候,我對12306嗤之以鼻,覺得他們做得太爛了,認為自己能帶隊花幾百萬半年時間做個好的出來。於是我狂妄地想做一個開源的訂票系統給他們。我花了一個星期時間思考建立數據模型,思考到庫存這一步的時候,我才發現,12306的庫存復雜性比淘寶、京東高很多倍,運算量也大很多倍。傳統的分布式資料庫、緩存、負載均衡技術並不能恰好滿足12306的需求。
在平時,12306也就是個正常的電商網站。但一到黃金周,12306就是一個全站所有商品都秒殺,所有SKU都是動態庫存的變態。
即使不考慮線下既有的電話、代售點等渠道,要實現一個12306,最少最少也是千萬級別的硬體投入(作者註:這是當時的估算,沒有精算,可能與實際相差較大,總之,我說得不一定對,12306的業務也許沒我說的那麼復雜,但也絕不是某些人噴的那麼簡單),軟體和人力另算。那些叫囂只要40台伺服器、只要2個架構師4個程序員、大談分庫分表和前端CDN的人們,只是紙上談兵罷了。所謂初生牛犢不怕虎,做了三年CMS和BBS,就以這個經驗來噴12306,未免太天真了。
媒體人噴12306,是他們不懂技術,沒有能力和耐心來分析背後的難度。技術人員噴,則是因為大部分的技術人員在短時間思考時,容易陷入過於樂觀的誤區,經典的例子就是估算工作量,程序員們往往容易估算出一個超短的工期,把寫程序的工作樂觀地想像成了打字員照稿敲鍵盤的工作。
知乎那篇文章,我覺得不是洗地。排名第一和第二的答案都說得很客觀。淘寶技術是比12306強大很多倍,淘寶現在的系統也是花了10倍於12306的錢、時間和人才做起來的。根本原因還是鐵路運力不能滿足春運需求,淘寶也解決不了這個問題。
12306這一年來進步非常大。從前段動畫驗證碼、分時段搶票,到後端去小型機、虛擬化、內存資料庫的運用。可以說,12306是中國政府機關做的最強大的網站(電商系統),能在短短一兩年內做出這樣的改變,幾乎是個奇跡,就連一些市場化的民企都望塵莫及,甚至一些上市公司都比不上它!(比如51job和ctrip)。
事非經過不知難,在網上批判12306的人,大部分還是形成了【國企=壟斷+腐敗+低效】的思維定勢。小部分是真的輕視了它的難度。
至於12306一期工程3個億(含硬體)貴不貴我不評價,我只提供一個數字供參考,網路一年的研發費用(不含硬體)是10億,這個數字來自網路財報。網上能查到。3億看起來好大一個數字,真用到超大型的電商系統、搜索引擎系統裡面,其實也不算什麼天文數字了。
再解釋一下,為什麼秒殺壓力大,以及為什麼12306的動態庫存很復雜。
先說秒殺。
2013年12月25日前後,天貓搞了一個聖誕季積分兌換活動,持續幾天。25號上午10點12分,放出了15000個天貓魔盒(淘寶集市有人賣,大概190-230塊),從成交記錄上看,是19秒內全部搶完。
實際上,我也參加秒殺了,那天的題目特別簡單(請輸入xxx漢字的拼音首字母),我應該是5秒內答題完成並提交訂單,結果告訴我排隊的人太多,擠不進去,並提示14秒以後重試。人太多就是因為題目太簡單了,門檻越低,5秒內擠進去的人也越多嘛,如果題目換成【2克濃度為3%的U235在大亞灣核電站能發多少KW的電】,5分鍾之內也不會有1萬5千人跟我競爭。
我想,14秒以後哪還有我的事情呀,於是重新答題秒殺,結果出現了伺服器錯誤的頁面。反復刷新幾次,就告訴秒殺結束了。
在群里問了一下同事,有不到10個人回答我,都說沒秒到(也可能秒到的人悶聲發大財,不回復我)。
淘寶是什麼技術水平呢,淘寶有至少4000技術人員,至少4萬台伺服器(這都是兩年前的公開數據了,按規定可以談論),2013年11月11日成交額351億,2012年全年成交額超過1萬億。
淘寶擁有各種自主研發團隊:伺服器、交換機(網上可以搜索到淘寶公開的綠色伺服器開放標准);操作系統(LinuxKerneltaobao版,yunos手機操作系統是阿里雲的,暫時不計入)、Web伺服器(Tengine)、Java語言虛擬機(JVMtaobao版)、資料庫(MySQL內核taobao版,google和facebook也有自己的版本,HBase淘寶版、還有自己全部從頭開發的OceanBase)、負載均衡器(LVS,LVS始創人就在淘寶,擔任研究員)、Java運行容器(Jboss,其創始人之一,王文彬,也在淘寶,擔任副總裁)。
淘寶還有數不清的開源項目和中間件,如高性能Java通信中間件HSF、分布式資料庫中間件TDDL、非同步消息系統notify等等等等。
以淘寶這樣的技術水平,也不能做到秒殺時讓每個用戶都沒有擁擠感,為什麼呢?
一是要尊重物理原理,一台伺服器一秒鍾能承受的計算量是有極限的,任你怎麼優化,採用多高效的演算法和編程語言,都突破不了某個極限,比方說汽車發動機驅動的F1賽車至今也不能突破400公里的時速(超音速推進號那個1千多公里的時速不能算,那是飛機引擎驅動的)。再往深了說,就不容易懂了。感興趣的可以從著名的C10K問題開始看起。
二是要考慮經濟效益,十一黃金周的時候,北京主城區到八達嶺長城的路堵得嚴嚴實實,但不能因為黃金周的高峰,就把這段路修成長安街那樣10車道的高速公路。否則的話,花費天文數字(真的是天文數字,12306那3個億大概只夠修1-3公里)。修了一段路,黃金周是可以飆到80公里/小時了,可平時呢,拿來給兩邊的居民曬穀子?
淘寶目前的硬體和帶寬數量,已經超出日常運營的需求了,就是留了相當大的餘量給大促銷(眾所周知的是雙十一,雙十二,其實基本每個季度都有大促銷,每個月都有促銷,甚至天天都在促銷——聚劃算)。amazon當年就是為了應對黑色星期五的大促銷購置了大量的伺服器,平時訂單量沒那麼大了,amazon就把富餘的伺服器拿來搞雲計算了。順便說一下,阿里雲是當今中國第一世界數一數二的雲計算服務商,和amazon走的路也有點像。
再說動態庫存。
淘寶秒殺天貓魔盒的時候,只有一個商品(行話叫做SKU),它的庫存是15000個。有一個人秒殺到了,庫存就減1,19秒賣完的,一秒要成功產生789個訂單(下訂單的請求可能是8萬個,只是可能啊,非實際數字,也可能是1萬個,用於說明一下壯觀程度)。想像一下,你在廣場上賣火車票,一秒鍾有8萬人舉著錢對你喊:賣給我!
上過大學的人都知道,比秒小的時間單位還有毫秒、皮秒、飛秒。但交易系統登記一個交易可不像原子繞著原子核跑一圈那麼簡單,它要做這些事:檢查是否惡意訪問、取到系統時間、取到顧客默認收貨地址、核對顧客秒殺資格(當時的規定是天貓T2.T3達人)、生成訂單號、把顧客ID系統時間訂單號收貨地址寫入訂單系統、扣除顧客天貓積分、商品庫存減一、給顧客打標記(每人只能秒一個,下次不能秒了)等等,這每一件事都要花費毫秒級別的時間,這些操作加起來的時間可能是接近1秒級別的,但由於淘寶的伺服器比較強悍,而且採用了分布式和集群技術,結果比1秒理想一點。但即使有1萬台伺服器,也不能把這個時間稀釋成萬分之一秒,因為,商品只有一種,它有15000個庫存,對應的資料庫記錄只有一行,所有的交易請求都要到這里來處理。
能不能把這15000個拆分成5000個商品並分配到5000台伺服器上呢?那樣不就可以5000台伺服器同時處理了嗎?答案是不能,首先,5000個商品,意味著有5000個商品詳情頁,5000個購買按鈕,這對前期的營銷、引流是個災難。基本上就沒法做引流入口了,顯然這違背了商業管理原則,人為增加了信息混亂程度。其次,天貓魔盒秒殺也不是啥大事,即使按官方標價399元來計算,也就6百萬的交易。如果6百萬的交易要花費那麼大的配套成本,那就太不劃算了。再次,淘寶有十幾億商品,這十幾億商品的展示交易和管理,本來就是分布到上萬台伺服器上去了。沒有必要再把每個商品按庫存拆成多個商品了。
這789人搶到了,還不一定會付款(99積分換天貓魔盒還好一點,不需要去網銀,成本也極低,大部分是會付款的,3999秒殺iPhone5S就不一定,有人可能網銀有問題,有人可能改變主意不想要了),所以就又帶來訂單取消重新恢復庫存的問題。還有想要的消費者們,會認為還有機會,繼續在前台刷一會兒,最終這個秒殺會被熱情的消費者們猛刷30秒到1分鍾。
一分鍾過去了,伺服器終於可以喘口氣了吧?等等,還有超賣,原來,某兩台伺服器在同一毫秒都拿到了鎖,都去減了庫存,15000個庫存,被下了15500個訂單,又得取消一部分訂單。。。如果採用單線程獨占鎖,是可以做到同時只有一個伺服器線程減庫存的,但那樣就對並發高峰的能力就差了好多了。8萬人舉著錢,可能只有8個人能下單成功,這個擁擠狂熱的搶購就要持續10分鍾以上。平時秒個天貓魔盒,10分鍾也就10分鍾吧,雙十一就慘了,收銀台一下子減少了90%,還想做到350億,要麼做夢,要麼再加10倍伺服器和帶寬。所以,商業是不完美的,要在絕對正確和絕對的快速之間做個取捨,保證相對快速又極為正確,允許一定的庫存錯誤和超賣(具體允許多少我也不知道)。
好了,講了這半天淘寶,可以說12306了吧?
我以北京西到深圳北的G71次高鐵為例(這里只考慮南下的方向,不考慮深圳北到北京西的,那是另外一個車次,叫G72),它有17個站(北京西是01號站,深圳北是17號站),3種座位(商務、一等、二等)。表面看起來,這不就是3個商品嗎?G71商務座、G71一等座、G71二等座。大部分輕易噴12306的技術人員(包括某些中等規模公司的專家、CTO)就是在這里栽第一個跟頭的。
實際上,G71有136*3=408種商品(408個SKU),怎麼算來的?請看:
如果賣北京西始發的,有16種賣法(因為後面有16個站),北京西到:保定、石家莊、鄭州、武漢、長沙、廣州、虎門、深圳。。。。都是一個獨立的商品,
同理,石家莊上車的,有15種下車的可能,以此類推,單以上下車的站來計算,有136種票:16+15+14....+2+1=136。每種票都有3種座位,一共是408個商品。
好了,再看出票時怎麼減庫存,由於商務、一等、二等三種座位數是獨立的,庫存操作也是一樣的,下文我就不再提座位的差別的,只討論出發與到達站。另外,下文說的是理論世界的模型,不是說12306的資料庫就是這么設計的。
旅客A買了一張北京西(01號站)到保定東(02號站)的,那【北京西到保定東】這個商品的庫存就要減一,同時,北京西到石家莊、鄭州、武漢、長沙、廣州、虎門、深圳等15個站台的商品庫存也要減一,也就是說,出一張北京到保定東的票,實際上要減16個商品的庫存!
這還不是最復雜的,如果旅客B買了一張北京西(01號站)到深圳北(17號站)的票,除了【北京西到深圳北】這個商品的庫存要減一,北京西到保定東、石家莊、鄭州、武漢、長沙、廣州、虎門等15個站台的商品庫存也要減1,保定東到石家莊、鄭州、武漢、長沙、廣州、虎門、深圳北等15個站台的商品庫存要減1。。。總計要減庫存的商品數是16+15+14+……+1=120個。
當然,也不是每一張票都的庫存都完全這樣實時計算,可以根據往年的運營情況,在黃金周這樣的高峰時段,預先對票做一些分配,比如北京到武漢的長途多一點,保定到石家莊的短途少一點。我沒有證據證實鐵道部這樣做了,但我相信,在還沒有12306網站的時候,鐵道部就有這種人工預分配的策略了。
想像一下,8萬人舉著錢對你高喊:賣給我。你好不容易在錢堆里找到一隻手,拿了他的錢,轉身找120個同事,告訴他們減庫存,而這120個同事也和你一樣被8萬人圍著;也和你一樣,每賣出一個商品要找幾十個人減庫存……這就是12306動態庫存的變態之處。比你平時買東西的任何網站的庫存機制都復雜幾十上百倍。
再說一下搶票插件,機器永遠比人快,當你好不容易從8萬人里突出重圍,來到了櫃台前,你發現,我操,來了10萬根綁著錢的竹竿,而且當有退票出來的時候,你要闖過3層人肉才能接近櫃台,竹竿在8個人身後一伸,錢就到了櫃台前。你低頭看了一眼手機,票就沒了,竹竿卻永遠在那裡伸著,永不低頭,永不眨眼。如果沒有這10萬根竹竿,雖然你很可能還是搶不到票,但不至於沮喪成這樣:我TM為什麼總是手最慢的一個?!!
防機器人搶票,也不是加個圖片驗證碼那麼簡單。我寫過文章系統性分析過,圖片驗證碼有6種機器暴力破解的辦法,搶票插件用的是我說的第三種,OCR識別(光學字元識別——觀察者網注)。Google採用的Wave波形字母已經能比較好地防住機器OCR了,ems.com.cn上的驗證碼就是反面教材,機器OCR成功率接近100%,12306的比ems的圖片驗證碼強一點。不過,驗證碼設置得復雜一點吧,人們要噴:這只是便宜大學生和辦公室白領,農民工連26個字母都認不齊,怎麼搞?搞動畫驗證碼吧,也有人噴,視力不好的人怎麼辦?最後驗證碼搞得太簡單了,皆大歡喜了,其實最高興的是開發搶票插件的公司。
就算採用了機器完全不可能識別的驗證碼,也防不住社會工程學的破解辦法。招募一堆網吧打游戲的青少年朋友,每成功輸入50個驗證碼給1塊錢,或者等值的虛擬貨幣、游戲裝備,我保證想賺這個錢的人數不勝數。這點錢對轉賣車票的利潤而言,是可以接受的成本。有沒有什麼技術可以防住社會工程學的破解辦法呢?能防住網吧青少年的驗證碼只有【2克濃度為3%的U235在大亞灣核電站能發多少KW的電】。
以上討論只是把12306當成和淘寶一樣沒有歷史包袱從零起步的交易系統,實際上,它不是,它後面的票池,還有電話售票、火車站售票、代售點售票等多個傳統渠道要服務。除了客運服務,12306還有全國最大(很可能也是全球最大)的大宗物資貨運系統。
架空政策(包括定價政策、警方打擊黃牛政策、身份驗證政策)談技術,是不可能解決春運搶票困局的,要想讓春運的時候每個人在12306搶票都毫無擁擠感(但不一定能搶到票,鐵路運力擺在那),那就是逼著12306買一大堆伺服器對付春運,春運過去後,成為跟amazon一樣牛逼的雲計算服務商。和逼北京修一條10車道的高速公路去八達嶺長城一個道理。
目前的12306技術上是還有問題,比如,搶票高峰,輸入個身份證號和圖片驗證碼都卡得要死(本人親測),伺服器端繁忙,你瀏覽器端卡什麼呀。
但人家在進步。相信2014年春運的時候,技術已經不再是一票難求的主要問題。在鐵路運力不可能神速增加的情況下,要做到春運更公平地買票,需要停靠政策調整。
下文針對的是春節國慶這種非常暑期。其它時期,大部分線路保持現狀就行了,問題不大,極少部分票源緊張的線路可以按春運處理:
1、拍賣法,價高者得之
當硬座票拍出飛機票價格的時候,相信票就不難買了(可惜就是貴了),也沒有那麼多黃牛了。要說淘寶有什麼能幫12306一下子搞定技術問題的,淘寶的拍賣系統可以幫忙,浙江省高院在淘寶拍賣一年多,成交26億。
可惜這個方法不可能實行。現在的高鐵票價都被媒體和意見領袖噴成啥樣了,何況是拍賣。再說,火車票畢竟是生存之剛需,票價20年來不漲本來就有照顧補貼的成分在裡面,全拍賣可能也是不妥當。
2、抽簽法,運氣好者得之
開車前2個月開放報名,開車前7天抽簽,中途可取消。預存票款,抽不中退款。上傳身份證和正臉自拍照,機器核對。
這樣的話,攔截黃牛的成功率就高很多了,黃牛可以預存票款,可以找到大量真實身份證號,你黃牛再讓每個給你身份證號的人把身份證照片和臉部自拍也給你試試?即使有人真想找黃牛,給身份證照片還是會猶豫一下吧。而且中間手工操作多了很多,黃牛成本提高,還不一定搞得到票。反正都是碰運氣,我想真正的消費者還是會選擇自己先去碰運氣吧。
這個方法實施難度也大,無論怎麼設計抽簽規則,必然有人大叫「有黑幕,不要相信政府」。
開車前7天出抽簽結果,改變行程的人應該在7天前就能決定改還是不改了。沒抽到的也還有時間想別的辦法。當然不一定是7天,15天,10天也可以,具體幾天要有數據模型來算。
3、拍賣+抽簽
軟卧、高鐵商務座等高價位的,拍賣,反正買這個的是經濟能力相對較強的。那就拼誰經濟能力更強吧。
硬座、站票抽簽。
4、憑身份證進站,車票跟發票一樣,是報銷憑證,不是進站憑證;退票後錢進入12306賬戶,不可提現,只可該乘客下次乘車用;黃金周期間,個人賬號最多訂購10張票
這個辦法可以打擊黃牛囤票再轉賣;運行一段時間後,按賬戶余額弄個排行榜就知道誰是黃牛,可惜這個需要車站設備改造配合。
求採納為滿意回答。