日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分享12306抢票心得-终极秒杀思路篇

發布時間:2023/12/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分享12306抢票心得-终极秒杀思路篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
12306搶票的關鍵拼的就是整點出票的速度,快的幾秒鐘,慢的幾分鐘,本文提供終極搶票攻略,通過多線程掃描上萬個CDN,來大幅度提升出票速度。 準備一:需要了解CDN和切站的機制,請參考:
  • 分享12306秒票殺手锏源碼:http://www.cnblogs.com/guozili/p/3512490.html
  • 分享12306搶票心得最終篇:http://www.cnblogs.com/guozili/p/4166675.html
準備二:需要熟悉12306最重要的查詢接口和下單接口及傳入的參數規范
  • /otn/leftTicket/queryX 和 /otn/leftTicket/submitOrderRequest
  • 具體流程請參考:解析12306訂票流程
    • http://blog.csdn.net/lzqwebsoft/article/details/18674635
12306 CDN研究機制一
  • 12306對kyfw.12306.cn用到了全站CDN緩存,至少上萬的CDN IP
  • 對于90%的子頁面使用了CDN緩存
  • 部分動態內容如個人中心,CDN將充當代理去12306實際服務器讀寫數據,請百度“cdn回源”
12306 CDN研究機制二
  • 官方網站的自動查詢,每次都會命中同一臺CDN
  • 拿到的都是CDN緩存數據,緩存時間2分鐘
  • 所以運氣好的話,整點放票較快就能刷出票,一般情況下要等幾十秒才能看到出票
  • 參考下圖:

12306 CDN研究機制三
  • 360搶票王每次查詢使用不同的CDN,通過內置dll插件實現,每次查詢映射不同的IP
  • 參考下圖:
12306 頻繁刷票容易被踢的猜測
  • 每次查詢,都會AJAX Log一下,請參考上面截圖
  • 如果登錄狀態下,cookie的token就被記錄上傳了
  • 所以登錄狀態下刷票容易被踢
  • 所以查詢時動態修改hosts,切CDN,切站點,也容易被踢
12306 關于secretStr
  • 查詢返回的每個車次結果,都會有個secretStr
  • 加密了此車次的所有相關信息,后續用于提交訂單用
  • 此secretStr幾分鐘后會過期
  • 所以關鍵就是放票整點后能快速刷出這個secretStr
  • 參考下圖:
  • ?

12306 查詢設計思路
  • 啟用匿名查詢,查詢結果后返回的secretStr,交給登錄的帳號做訂單提交
  • 目前市面上的搶票神器或收費軟件,都是采用了此機制:
    • 啟用多個線程,主線程帳號登錄;
    • 其他線程并發匿名作業:輪詢請求不同的CDN查詢票源;
    • 查到有票的secretStr,塞給主線程進行訂單提交;
    • 集成收費打碼API,自動化點觸驗證碼,實現多開無人值守搶票
終極設計思路:
  • 做Winform及界面工作量太大,這里提供簡單的定制方案和一些設計思路
  • 服務端:自己建個本地的IIS Web站點,去匿名輪詢請求不同的CDN查詢票源,返回secretStr
  • 客戶端:瀏覽器登錄狀態,12306任何一個頁面,控制臺或插件植入js腳本,AJAX長輪詢去請求服務端,請求到secretStr做訂單提交
終極設計思路之服務端:
  • 自己建個本地的IIS Web站點或在公網上建,或商業化做云服務器分布式的查詢
  • 此網站提供接口如:http://127.0.0.1/GetSecretStr...
  • 此接口的實現:啟動多線程去上萬個CDN去查詢指定車次日期的票源
  • 查到secretStr,馬上返回給客戶端

?

  幫助:獲取kyfw.12306.cn的CDN ip,可以去chinaz上去獲取,大概有上千個

  幫助:實在不夠,我能提供fishlee的一個IP列表,有上萬個

終極設計思路之服務端的關鍵技術:
  • http://www.cnblogs.com/dudu/archive/2012/07/18/webrequest_dns.html
  • 這個技術,不用修改hosts,使用WebRequest能映射不同的IP
  • 參考下圖:
  • ?

?

終極設計思路之客戶端:
  • 瀏覽器登錄狀態,控制臺或插件植入js腳本
  • AJAX長輪詢去請求服務端,請求到secretStr做訂單提交
  • 到最后的訂單提交頁,用插件自動勾選人,座位,自己手動輸入驗證碼提交
  • 參考下圖:
  • ?

測試結果:整點出票秒數,根據自己以前的N次經驗
  • 3-10秒:此文思路,多線程在10秒內對1萬個CDN進行查詢
  • 5-20秒:某收費軟件,采用了后臺多線程查詢CDN
  • 10-30秒:fishlee的NET訂票助手,單線程,每隔1秒嘗試不同CDN
  • 15-60秒:360搶票王,也是單線程,但CDN數量不夠
  • 20-120秒:官方網站,CDN一般1分鐘內不會變,緩存嚴重
最終實現效果圖,并附上測試代碼:12306.zip??????? 更多平臺插件

?

最新更新!
  • 驗證碼問題 參考:http://bbs.fishlee.net/thread-10058-1-1.html
  • 現在沒時間研究 工具 加入驗證碼輸入功能,
  • 工具源代碼在:https://github.com/guozili/12306
  • 基本思路可以實現下: console工具 要輸入驗證碼時,發送驗證碼圖片二進制(socket)到 verifycodeWPFInput.exe(實現一個WPF程序彈出來)去點擊,然后返回驗證碼坐標給console

轉載于:https://www.cnblogs.com/guozili/p/6144561.html

總結

以上是生活随笔為你收集整理的分享12306抢票心得-终极秒杀思路篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。