Python爬蟲之12306-分析請求總概述


 

 

 

 

python爬蟲也學了一段時間了。也爬過不少網站,最后我想用12306搶票器這個項目做一個對之前的學習的效果成見也是一個目標(開始學爬蟲的時候,看到說,會爬12306,就會爬80%的網站),本人純自學。可以彎路走了不少,爬的網站也沒有什么實質的價值(不是老師的作業,也不是老板的需求,就是自己的練習),所以嘛,不是有句話說的,人活着,就是為了搞事情。

12306,真的是特別厲害的反爬,請求太難分析了。一些隱藏的參數,被轉碼的參數。不過分析成功后,你真的會感覺別的網站也就那么回事。

----------------------------登陸

 

 來到登陸頁面。有驗證碼和登陸框。--登陸成功后就跳轉了,用Mozilla Firefox瀏覽器也可以看到跳轉以前的請求,但是我的Mozilla Firefox有BUG 別的都可以就是登陸不行。

先看看驗證碼,點擊刷新驗證碼

 

鏈接找到了

 

 

 

 下面4個參數呢 前面3個事固定的也不懂代表什么意思。就看到一個 login 我想可能是代表登陸的驗證碼吧。第4個是個隨機數。可是我反復刷新后,覺得不帶那個也可以。沒難度‘

驗證碼驗證:

 選擇正確以后,多了:https://kyfw.12306.cn/passport/captcha/captcha-check 這個POST請求 3個參數

answer 這個呢就是代表 你點的坐標,我這里點了3下 恰好有6個坐標。

后面2個 不知道 應該是固定的

看看返回的

驗證成功

登陸

 

 

我輸入錯的 返回就是這個  對的就返回正確。

總結:登陸沒難度

 

 

----------------------------查票

 

查票鏈接:https://kyfw.12306.cn/otn/leftTicket/init

 

 

 

 

 

 輸入 出發地,目的地 ,時間后。點擊查詢 

多出了這個請求

 

 

 

 

看看返回

 

這不就是列車余票嗎

但是CBN 為什么是赤壁呢

看看這個JS文件 就知道了

 

 

 所有的車站名都用英文大寫表示了

 

 

----------------------------產生訂單

 

在沒有登陸的時候點擊預定。會彈出需要登陸的頁面

 

 

 

還會多出這個請求

 

 

 

 

 

看到LOGIN這個單詞,肯定和登陸有關        就是驗證登陸狀態吧,

 

 用Mozilla Firefox瀏覽器的就會發現當flag為 true的時候也就你成功登陸之后 才會跳轉

 

成功登陸后來到訂單頁面

https://kyfw.12306.cn/otn/confirmPassenger/initDc

 

看到了聯系人的請求

有個參數

REPEAT_SUBMIT_TOKEN 

這個參數是什么意思  我也不知道。。。

要找這個對應的值,可就找的好苦

 

在這里 

 

選擇一個聯系人后 點擊提交

來分析第一個

 

 

 

 

 

返回的什么 我不知道 我們看看請求的參數

 

第一個 第二個是固定的

第3個   第4個是乘客信息 第4個 

tour_flag:dc 我開始以為是動車的意思 ,結果我想多了 是購票類型 dc為單程

REPEAT_SUBMIT_TOKEN這個都知道在哪里了吧

 

 2張就用,隔開吧 這是我想的。最好就買1張

 

 

下一個請求

 

 

 

 count 好像是表示座位類型 多試試就知道 余票是29張。

 

 看看請求參數

 

 train_date

train_no #火車編號

stationTrainCode  #火車列號

seatType #座位類型 1是硬座,2是軟座,3是硬卧,4是軟卧,O是高鐵二等座,M是高鐵一等座,

fromStationTelecode #出發站

toStationTelecode #目的站

leftTicket #也是和REPEAT_SUBMIT_TOKEN一樣或得

purpose_codes = 00

train_location = PB

_json_att

 

 

 就差最后一步了

 

點擊提交訂單 

 

分析這些 

剛剛下了個迷你的火狐

 

返回"data":{"submitStatus":true}說明請求成功,出票成功,如果為其他就是扣票失敗

 

 這些參數 除了聯系人信息都可以和REPEAT_SUBMIT_TOKEN這個參數一樣獲得。

 

寫博客也是不易

 這個沒用任何語言    純分析 一些細致的參數 在JS里面有聲明。

最后 告訴大家 也給自己打氣

 

加油  

 

 做生活里的小強

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM