12306自動購票 ,抓包分析

我是在文本編輯工具裏寫的,然後複製到CSDN格式有點亂,你們可以粘貼到文本編輯工具中慢慢分析



9 首頁:   https://kyfw.12306.cn/otn/login/init



12 沒有參數
https://kyfw.12306.cn/otn/dynamicJs/lzuhkeb


13 沒有參數
https://kyfw.12306.cn/otn/HttpZF/GetJS


16 提交參數json   appid=otn   提交方式post
   返回格式json   {"result_message":"用戶未登錄","result_code":1}
https://kyfw.12306.cn/passport/web/auth/uamtk


17 請求js 提交參數 _ 時間戳 提交方式get
   返回值:js 頁面,暫時不知道幹啥用的
https://kyfw.12306.cn/otn/resources/js/newpasscode/captcha_js.js?_=1517557036153


19 請求驗證碼 get  提交方式par
提交參數:login_site =E
          module=login
          rand=sjrand
          0.3361067676459024   看js發現這是 js生成的一串隨機數

返回值:驗證碼
https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.3361067676459024


28 驗證驗證碼  提交方式post  提交參數 data類型的
answer= 46,40,123,43  (點擊座標)    login_site='E'   rand='sjrand'

返回值:{"result_message":"驗證碼校驗成功","result_code":"4"}

https://kyfw.12306.cn/passport/captcha/captcha-check


29 驗證密碼 post data=
username='用戶名'
password='密碼'
appid='otn'

返回值:{
"result_message":"登錄成功",
"result_code":0,
"uamtk":"TO9jaUjO_U3G8Hai2kwqMCXdem-_8uUX8VNVZEHaODUga8280"
}

https://kyfw.12306.cn/passport/web/login

30  post  提交參數 json  _json_att=   302 做了一次轉發,轉發到

https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin   建議取消自動轉發,改爲手動轉發

無返回值
https://kyfw.12306.cn/otn/login/userLogin


31 get  提交參數:redirect='/otn/login/userLogin'
返回值:一個頁面 不知道夾雜的有沒有用的信息
<script>
/*<![CDATA[*/
 var ctx='/otn/';
 var globalRepeatSubmitToken = null;
 var global_lang = 'zh_CN';
 var sessionInit = '';
 var isShowNotice = null;
 var CLeftTicketUrl = null;
 var isTestFlow = null;
 var isMobileCheck = null;
 var passport_appId = 'otn';
 var passport_login = 'https://kyfw.12306.cn/passport/web/login';
 var passport_captcha = 'https://kyfw.12306.cn/passport/captcha/captcha-image';
 var passport_authuam = 'https://kyfw.12306.cn/passport/web/auth/uamtk';
 var passport_captcha_check = 'https://kyfw.12306.cn/passport/captcha/captcha-check';
 var passport_authclient = 'uamauthclient';
 var passport_loginPage = 'login/init';
 var passport_okPage = 'index/initMy12306';
 var passport_proxy_captcha =  'login/init';
 /*]]>*/
</script>

https://kyfw.12306.cn/otn/passport?redirect=/otn/login/userLogin



32 再一次請求了這個 網址,無返回值,無參數 提交方式get

https://kyfw.12306.cn/otn/HttpZF/GetJS


33 驗證通頁面:提交方式 post  提交參數  appid=otn
返回值:json  {
"result_message":"驗證通過"
,"result_code":0
,"apptk":null,
"newapptk":"rk3L9wKOtg0j33K_b4GY4fAZlFByJWbvXuNhH7KSdcg928280"  
}
https://kyfw.12306.cn/passport/web/auth/uamtk


34 json 上傳 33 得到newapptk

tk=rk3L9wKOtg0j33K_b4GY4fAZlFByJWbvXuNhH7KSdcg928280

返回值:{"apptk":"rk3L9wKOtg0j33K_b4GY4fAZlFByJWbvXuNhH7KSdcg928280","result_code":0,"result_message":"驗證通過","username":"保密"}

https://kyfw.12306.cn/otn/uamauthclient

35,轉發 無提交參數,無返回值,建議自動轉發  get
https://kyfw.12306.cn/otn/login/userLogin

36,無提交參數,有返回值,不用請求,由35轉發
返回值:是一個頁面,
<script>
/*<![CDATA[*/
 var ctx='/otn/';
 var globalRepeatSubmitToken = null;
 var global_lang = 'zh_CN';
 var sessionInit = '\u8D75\u97F6\u6656';
 var isShowNotice = null;
 var CLeftTicketUrl = null;
 var isTestFlow = null;
 var isMobileCheck = null;
 var passport_appId = null;
 var passport_login = null;
 var passport_captcha = null;
 var passport_authuam = null;
 var passport_captcha_check = null;
 var passport_authclient = null;
 var passport_loginPage = null;
 var passport_okPage = null;
 var passport_proxy_captcha =  null;
 /*]]>*/
</script>

https://kyfw.12306.cn/otn/index/initMy12306


38,又請求了一次這個,無返回值,無參數,get
https://kyfw.12306.cn/otn/HttpZF/GetJS


40登錄成功之後頁面的一個二維碼,要不要都行,get方式提交的
編號36的返回數據中存在該值
ticket=gQFK7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyeV94QUJfb0M5RFQxampvUWhxY3AAAgRPFXRaAwSEAwAA';

參數:ticket=gQFK7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyeV94QUJfb0M5RFQxampvUWhxY3AAAgRPFXRaAwSEAwAA
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQFK7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyeV94QUJfb0M5RFQxampvUWhxY3AAAgRPFXRaAwSEAwAA

41 登錄成功之後的歡迎頁面:無參數 get 方式提交
返回值
<script>
/*<![CDATA[*/
 var ctx='/otn/';
 var globalRepeatSubmitToken = null;
 var global_lang = 'zh_CN';
 var sessionInit = '\u8D75\u97F6\u6656';
 var isShowNotice = null;
 var CLeftTicketUrl = 'leftTicket/queryZ';
 var isTestFlow = null;
 var isMobileCheck = 'N';
 var passport_appId = 'otn';
 var passport_login = 'https://kyfw.12306.cn/passport/web/login';
 var passport_captcha = 'https://kyfw.12306.cn/passport/captcha/captcha-image';
 var passport_authuam = 'https://kyfw.12306.cn/passport/web/auth/uamtk';
 var passport_captcha_check = 'https://kyfw.12306.cn/passport/captcha/captcha-check';
 var passport_authclient = 'uamauthclient';
 var passport_loginPage = 'login/init';
 var passport_okPage = 'index/initMy12306';
 var passport_proxy_captcha =  'login/init';
 /*]]>*/
</script>

https://kyfw.12306.cn/otn/leftTicket/init


42 又又又請求了一次這個,無返回值,無參數,get,建議把這個js 下載下來 研究一下

https://kyfw.12306.cn/otn/HttpZF/GetJS



43,無返回值,無參數
https://kyfw.12306.cn/otn/dynamicJs/qxsjdcd



44  據我分析,這個一個側邊的廣告
https://ad.12306.cn/res/0004.html



49,返回值json ,這個頁面超級重要 , 提交方式get  參數   (什麼鬼,這居然也是個廣告,現在我要把超級重要幾個字去掉了,但是也先請求着,看看有沒有需要的返回值)

placementNo=0004  
clientType=2
billMaterialsId=170b890cf8f24c569644092ef827e993  (發現這個值是上一個廣告頁面裏存在的,所以 44號的側邊廣告必須請求)果然12306連個廣告都有坑

https://ad.12306.cn/sdk/webservice/rest/appService/getAdAppInfo.json?placementNo=0004&clientType=2&billMaterialsId=170b890cf8f24c569644092ef827e993


返回值json類型

{"code":"00",
"message":"獲取成功",
"materialsList":
[
{"billId":"28475bc01d85417d9f04df530f355b81"
,"billMaterialsId":"170b890cf8f24c569644092ef827e993"
,"filePath":"https://ad.12306.cn/res/delivery/0004/2018/01/29/201801291712188110.jpg"
,"title":"中鐵聯名卡"
,"placementPattern":"jpg"
,"linkUri":"https://creditcard.bankcomm.com/content/dam/pc/activity/ztcard/zhongtieka4.html"
,"marginBottom":"0"
,"skipTime":"5000"
,"linkType":"1"
,"showSkipBtn":"0"
,"btnhui":"https://ad.12306.cn/sdk/webservice/rest/appService/btnhui.json?placementNo=0004&billMaterialsId=170b890cf8f24c569644092ef827e993"
,"btnview":"https://ad.12306.cn/sdk/webservice/rest/appService/btnview.json?placementNo=0004&billMaterialsId=170b890cf8f24c569644092ef827e993"
,"thirdViewUrlList":[],
"thirdClickUrlList":[],
"skipTimeAgain":"0",

"fileList":
[{"filePath":"https://ad.12306.cn/res/delivery/0004/2018/01/29/201801291712188110.jpg",   
"fileHeight":"360",
"marginBottom":"0"}]}],

"getType":"1",
"serviceUrl":"https://ad.12306.cn/sdk/webservice/rest/appService/getAdAppInfo.json",
"isDefault":"0",
"btnhui":"https://ad.12306.cn/sdk/webservice/rest/appService/btnhui.json"
}


50,什麼鬼,怎麼又請求了一次驗證碼,比較一下 這個的驗證碼和編號19的有什麼區別

編號19
https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.3361067676459024

編號50
https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=passenger&rand=randp&0.9681090452847763

果然還是有區別的,不管了,先把提交的參數和返回值保存下來
編號50 驗證碼提交的參數
module=passenger
rand=randp
0.9681090452847763   (這個應該也是一個隨機數,到時候測試一下)



53,終於到正主了,這個頁面時提交 購票信息,返回的是查詢車量信息,提交的參數是
leftTicketDTO.train_date 出發日期
leftTicketDTO.from_station   BJP (代號北京)
leftTicketDTO.to_station     ZDN  (代號駐馬店)
purpose_codes   ADULT(不知道是什麼?沒關係,我們往前查看這個參數在哪裏出現過。好吧,我承認沒找到,先這樣提交試一下)

返回值是查詢的車輛信息 json 類型的,數據到手了怎麼處理就不說了
{"data":{"flag":"1","map":{"BJP":"北京","BXP":"北京西","ZDN":"駐馬店","ZLN":"駐馬店西"},"result":["SrRaidpHwIsnGTBWAkUu%2FepYkIMI7CzHy%2FIkNnrT3cerfSiH8bXKHyfBY%2F9QBo%2B7tgMuK9SaO1gl%0AF5%2Fs%2BMzj5IYouLVPF2n6unu9baxgenDF4G4CLlrhO%2B%2FVD1wxTRd2zFBYGSSz3qsbnM9SgCSyQx%2FW%0AYSSCMLhd0P%2BQCXKUTiI0e8eXbOX69hQrNAsqDTzSVc2CGgoidc%2FZFTL986ymRvkzn%2Frs8KXg0dhU%0AiYPFUXA4lNwmOByrfhLn36pUQQ6e|預訂|24000K460109|K4601|BXP|HKN|BXP|ZDN|02:38|14:26|11:48|Y|7ZWqE1balF8uzWEZSW0%2FYYh1j77OGWXuTNhs4K7wNOnd%2B%2F%2Fa|20180210|3|PC|01|08|0|0|||||無||有|||無|||||101020|112|0","|預訂|24000T303901|T3039|BXP|HKN|BXP|ZDN|03:35|12:50|09:15|N|YcXLEyKoj4zNjfnHCihQXvd%2Ftm1r04aUNTdsNtIfL1QUKcIRhBlJL3bvI2o%3D|20180210|3|PC|01|08|0|0||||無|||無||無|無|||||10401030|1413|0","Zp%2FYpzUGmmQzk%2BA8hltQcfvHaxGOqmLNG1Fd0oyFCdIiRw8oyRUoRyv7Al7UPvh4wCuVROdKWdvY%0Agw4dOErMONBQj%2B1yje3bLsnCDrqg5vRHHpI15duSCMXr%2FUZojyg22IZOV4SkyCcRRNn6ObSDGigM%0AO7TXB2968rNcgSN0%2FCksPW1lEcy1Yo%2F113r7AflZIJZKAH%2FF%2BPktq%2FQRo9%2FqfX2ZffN4bc7rMKbc%0AdNlW%2FJLso0%2FWdbjW%2F4JPbztYXudwcFAdlRhADqWw2FG4|預訂|330000K5980X|K599|BTC|GZQ|BXP|ZDN|05:14|16:36|11:22|Y|OASN3HdgM4uZD5tdr1eQebZtO9NSFZ%2Fij61rMA%2B0NO56wfWKlQSMT9uP2Og%3D|20180209|3|C1|09|23|0|0||||無|||有||無|無|||||10401030|1413|1","|預訂|240000G48508|G485|BXP|NXG|BXP|ZLN|07:03|11:12|04:09|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P4|01|09|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G5290H|G529|BXP|NFZ|BXP|ZLN|07:08|11:36|04:28|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P4|01|11|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|2400000G710H|G71|BXP|NZQ|BXP|ZLN|07:27|11:52|04:25|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P2|01|10|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|2400000K2117|K21|BXP|NNZ|BXP|ZDN|08:18|20:43|12:25|N|YcXLEyKoj4zNjfnHCihQXvd%2Ftm1r04aUNTdsNtIfL1QUKcIRhBlJL3bvI2o%3D|20180210|3|PB|01|14|0|0||||無|||無||無|無|||||10401030|1413|0","|預訂|240000K96714|K967|BJP|HHQ|BJP|ZDN|08:37|20:56|12:19|N|wQ%2BpSmPQZ8dgJ0lK4UaHmyKBfXh8YFe%2BcjEMqJvOGWVo%2BoWyE0CkXbx6FhU%3D|20180210|3|PA|01|16|0|0||||無|||無||無|無|||||10401030|1413|0","|預訂|240000K43304|K433|BXP|AXM|BXP|ZDN|08:42|20:00|11:18|N|YcXLEyKoj4zNjfnHCihQXvd%2Ftm1r04aUNTdsNtIfL1QUKcIRhBlJL3bvI2o%3D|20180210|3|P3|01|13|0|0||||無|||無||無|無|||||10401030|1413|0","|預訂|240000G4210E|G421|BXP|NFZ|BXP|ZLN|09:05|13:23|04:18|N|6xvTEGx43CMlsHaPGw6M7BtXdiK7jKfJAjq5PrTC%2BykW2%2FLx|20180210|3|P3|01|08|1|0|||||||||||無|無|無||O090M0|O9M|0","|預訂|240000G5570I|G557|BXP|WHN|BXP|ZLN|11:07|15:23|04:16|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P3|01|10|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G40107|G401|BXP|KQW|BXP|ZLN|11:43|15:56|04:13|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P2|01|08|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G51713|G517|BXP|WHN|BXP|ZLN|12:19|16:28|04:09|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P3|01|07|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|2400000G6909|G69|BXP|IZQ|BXP|ZLN|13:07|17:09|04:02|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P4|01|07|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G51915|G519|BXP|WHN|BXP|ZLN|14:05|18:16|04:11|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P4|01|09|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G50506|G505|BXP|CWQ|BXP|ZLN|15:40|19:43|04:03|N|AOLpYQokAKA%2BgQBdTMWiSfo52ZrE0ZWt5gyqzCg3bJ9tuCInvQgmQSvQQBA%3D|20180210|3|P4|01|08|1|0||||||無|||||無|無|無||O090M0P0|O9MP|0","|預訂|240000G5730O|G573|BXP|KAN|BXP|ZLN|16:18|20:15|03:57|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P3|01|07|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000G52507|G525|BXP|HKN|BXP|ZLN|17:14|21:29|04:15|N|NFWR18%2FAH8fkkS5qIccRzBvusOdBg5wvhJBO5NIfOXbYURzL|20180210|3|P4|01|10|1|0|||||||||||無|無|無||O0M090|OM9|0","|預訂|240000K1571D|K157|BXP|ZJZ|BXP|ZDN|18:12|05:35|11:23|N|YcXLEyKoj4zNjfnHCihQXvd%2Ftm1r04aUNTdsNtIfL1QUKcIRhBlJL3bvI2o%3D|20180210|3|PB|01|10|0|0||||無|||無||無|無|||||10401030|1413|0","|預訂|240000T2890E|T289|BXP|NNZ|BXP|ZDN|22:08|06:59|08:51|N|fTaYYc3zlaDeHVYuLyhVxUi%2BAqTHqhdgjollq8W4eP%2FvCaVVuRLpgwPkcc6QAhnkwBHTBbDVrH4%3D|20180210|3|P4|01|08|0|0||無||無|||無||無|無|||||1040106030|14163|0","|預訂|24000Z417707|Z4177|BXP|WCN|BXP|ZDN|23:50|08:32|08:42|N|2vX%2BO37WGI835%2BwfN4JtT%2FRTftl48EKe|20180210|3|PC|01|07|0|0||||無|無||||||||||4020|42|0"]},"httpstatus":200,"messages":"","status":true}

https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2018-02-10&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=ZDN&purpose_codes=ADULT


54 post  提交參數_json_att=
返回值:
{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"flag":true},"messages":[],"validateMessages":{}}
https://kyfw.12306.cn/otn/login/checkUser


55  點擊預定該車輛

提交參數如下: (這些個參數都比較簡單,就secretStr 容易讓人有點蒙逼。給各位留個小坑,哈哈)
secretStr=SrRaidpHwIsnGTBWAkUu%2FepYkIMI7CzHy%2FIkNnrT3cerfSiH8bXKHyfBY%2F9QBo%2B7tgMuK9SaO1gl%0AF5%2Fs%2BMzj5IYouLVPF2n6unu9baxgenDF4G4CLlrhO%2B%2FVD1wxTRd2zFBYGSSz3qsbnM9SgCSyQx%2FW%0AYSSCMLhd0P%2BQCXKUTiI0e8eXbOX69hQrNAsqDTzSVc2CGgoidc%2FZFTL986ymRvkzn%2Frs8KXg0dhU%0AiYPFUXA4lNwmOByrfhLn36pUQQ6e&train_date=2018-02-10&back_train_date=2018-02-02&tour_flag=dc&purpose_codes=ADULT&query_from_station_name=北京&query_to_station_name=駐馬店&undefined

提交方法 post https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
返回值:{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":"N","messages":[],"validateMessages":{}}


因爲我不需要買票所以我沒有提交訂單所以到這裏也就差不多結束了















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章