12306模拟登录
在模擬12306登錄及購票的時候,不要登錄或者購票的次數(shù)測試頻率太高,否則直接封IP。現(xiàn)在12306驗證碼的問題很復(fù)雜,我并不會破解,所以只能做需要帶驗證的模擬登錄和購票。
在模擬的時候,在開發(fā)者工具欄中查看提交的get或者post數(shù)據(jù)。如果只是查看網(wǎng)絡(luò)提交或者接收數(shù)據(jù)用Httpfox最好,他可以把全部的請求顯示出來。用fixbug查看,發(fā)生了網(wǎng)頁跳轉(zhuǎn)的中間請求不能顯示出來。現(xiàn)在來分析登錄過程請求的先后順序以及請求參數(shù)。
驗證碼的地址 https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand 后面還有一個隨機數(shù),這個隨機數(shù)我沒添加,也是可以請求的,不會報錯,他只是為了防止緩存。
登錄過程中的請求順序
(1)第一個鏈接是檢查驗證碼是否正確
第一個參數(shù)randCode是根據(jù)驗證碼圖片來獲取的。9張小圖片,每張小圖片都有一個像素范文。第一張就是需要選中圖片的題目,后面8張就是需要選擇的答案。我在做swing時,將驗證碼圖片進(jìn)行切割,將每張小圖片按順序放入9個JButton中,作為按鈕的背景。選中哪些圖片,則就會有相應(yīng)的事件來執(zhí)行,將對應(yīng)的對象像素放入數(shù)組中,然后在登錄的時候進(jìn)行處理。圖片效果如下:
登錄前會先訪問https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn ,判斷驗證碼和參數(shù)是否正確。返回的結(jié)果為:{“validateMessagesShowId”:”_validatorMessage”,”status”:true,”httpstatus”:200,”data”:{“result”:”1”,”msg”:”TRUE”},”messages”:[],”validateMessages”:{}} ,如果有”msg”:”TRUE”,則驗證碼正確。
(2)進(jìn)行登錄,地址為https://kyfw.12306.cn/otn/login/loginAysnSuggest 參數(shù)為:
其中randCode是驗證時候發(fā)送的驗證碼,采用post方法傳遞參數(shù),鍵的名字一定要對,與表單中的大小寫都要相同。返回數(shù)據(jù):{“validateMessagesShowId”:”_validatorMessage”,”status”:true,”httpstatus”:200,”data{“otherMsg”:”“,”loginCheck”:”Y”},”messages”:[],”validateMessages”:{}} ,返回的json數(shù)據(jù)中有 “l(fā)oginCheck”:”Y”,則登錄信息正確。
(3)登錄成功的最后一步,地址https://kyfw.12306.cn/otn/login/userLogin 。發(fā)送的數(shù)據(jù)較為簡單:
值為空,不會有數(shù)據(jù)返回。
到此為止登錄就分析完畢。總體來說登錄還是很簡單的,沒有復(fù)雜的參數(shù)需要傳遞。
總結(jié)
- 上一篇: 用DrRacket写scheme语言的h
- 下一篇: 关于dsp28335移相全桥