第三篇 12306自动刷票下单-下单
下單
進入下單界面了?
https://kyfw.12306.cn/otn/confirmPassenger/initDc?
?
還有一個請求https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs?
仔細看一下返回值,是我們常用聯系人的信息,要下單肯定得選乘客信息嘛。這也是一個post請求,這個REPEAT_SUBMIT_TOKEN=8273d204078ad491f0face93d5c878b9很奇怪,記住,肯定是在它之上的請求中獲取的,?
?
很幸運我們看它上面的那個請求initDc中就出現了,沒錯值是一樣的,又搞定一個
選乘客票種提交
https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo?
看看參數,頭暈嗎?抹掉的是姓名身份證電話信息,除了REPEAT_SUBMIT_TOKEN和空參數,其他的一頭霧水,你發現REPEAT_SUBMIT_TOKEN和上面的不一樣了是吧,其實是一樣的,因為我是寫完一部分才進行下面的操作,時間長導致登錄失效,所以提交的時候要求重新登錄,這個REPEAT_SUBMIT_TOKEN參數就不一樣了,也說明這個參數是每次都變化的。?
請求有發送的地方,這些參數也必然有填充的地方,向上找,不要放過任何一個請求,css和img請求就算了,然后我們找到了https://kyfw.12306.cn/otn/resources/merged/passengerInfo_js.js?scriptVersion=1.9053?
格式化一下,最好是找在線格式化JavaScript代碼的,效果更好?
?
前兩個參數搞定了,然后再看一下getpassengerTickets和getOldPassengers函數?
passengerTicketStr:O,0,1,xxx,1,xxxxx,xxxxx,N?
座位類型,0,票類型(成人/兒童),name,身份類型(身份證/軍官證….),身份證,電話號碼,保存狀態?
跟上面這些一一對應一下,還有一個下劃線,等你選擇兩個乘客的時候你就知道了?
oldPassengerStr自己分析一下吧
再看下面的請求https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount?
train_date時間不用解釋了,train_no好像跟車次有關哦,對于未知的參數,我們一般先看前面請求的返回值,然后才是document和js請求,從查票請求的拆分結果來看2對應的就是這個,那么下面的車次信息也有了,seatType座位類型?
起始站編號和目的地編號我們也知道,train_location可以在查票信息中找到第15個,這里主要看一下leftTicket參數,同樣的道理,在之前的請求中查找,我們發現initDc這個請求中搜到了這個值,key_check_isChange在下面用到(主要是看value值,這里為了截圖重新截的圖,所以value值不一樣,正常的情況是一樣的,不用擔心)?
https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue?
看一下請求參數,所有參數在之前都找到了,包括key_check_isChange
下一個請求?
https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?random=1512295210042&tourFlag=dc&_json_att=&REPEAT_SUBMIT_TOKEN=56d3de8fe05b24a2daa92c0351df6cd2?
請求參數非常明顯,random是隨機參數,其他的不用再說了?
下一個請求?
https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?random=1512295213365&tourFlag=dc&_json_att=&REPEAT_SUBMIT_TOKEN=56d3de8fe05b24a2daa92c0351df6cd2?
EXM?跟上面的是同一個請求?請求確實一樣,但是返回值不一樣,看到了嗎?orderId有值了,在下一個請求中用到了
https://kyfw.12306.cn/otn/confirmPassenger/resultOrderForDcQueue?
好了請求發完了,打開瀏覽器看一下訂單吧,如果出現未支付訂單,恭喜你搞定了?
?
補充一下我的執行結果,昨天訂票次數用完了,最終執行結果忘了截圖,今天重新運行一下,貼一下結果
番外:
https://kyfw.12306.cn/otn/resources/merged/queryLeftTicket_js.js?scriptVersion=1.9053?
?
寫博客的時候翻到了這個js,又在里面找到了一些參數的根源
總結
通過整篇文章想給大家提供一個思路,主要是對于請求的參數而言:?
- 首先你應該知道這個參數肯定是在當前請求之前出現的,至于是在哪個請求之后出現的這個就看情況了?
- 我們的參數無外乎就兩種情況,一種是服務器發個客戶端的,一種是客戶端動態生成的。?
- 當我們在前面的請求中去查找參數的時候,我的查找順序一般是先看xhr請求的返回值,因為這個數據是最純凈的,幾乎沒有垃圾數據。然后再從document請求中查找,這個里面一般是內嵌js數據,或者html數據,最后才從js請求中去分析數據,這是最麻煩的,也是現在很多反爬都鐘情的一種方式。
我在文中很多地方都提到了這個過程,簡單一筆帶過,最后整體的把思路說一下,大家反過來再看一下文章,就會意會很多O(∩_∩)O~
轉載于:https://www.cnblogs.com/xukun588/p/9313703.html
總結
以上是生活随笔為你收集整理的第三篇 12306自动刷票下单-下单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线协作开发工具apizza使用方法(h
- 下一篇: Jupyter Notebook 常用的