12306模擬登陸

2022-06-12 23:51:15 字數 1777 閱讀 4423

在外漂泊的it人員,估計都有過過年買票難的問題吧。而且最近看到木魚的12306搶票神器,乙個字 牛。

想一想別人能做搶票軟體,為什麼我們就做不出來呢?(就算功能沒那麼強大,效能沒那麼好,好歹也給我把車次,聯絡人等抓取出來吧)

自己開工,提前準備:httpwatch 抓包工具,其實也可以用ie ff自帶的。只是我用習慣了懶得改了,而且可以把抓包後的儲存等以後再看。

流程分析:

a.驗證碼請求

b.驗證碼驗證

c.登陸

d.獲取聯絡人

e.提交訂單

技術難點:

1.驗證碼

2.ip限制

3.效能

大概先記錄這麼多吧。後續再補錄吧。(標準想到哪做到哪的,要不得)

先看抓包資訊吧

大概有以下流程

1.獲取驗證碼:

注:隨機字元

看看http head,沒什麼特別的,如下圖:

2.非同步驗證輸入的驗證碼是否正確: 

看看 http head,如下圖:

看看postdata,如下圖:

如圖,提交了2個引數。

第乙個引數rand 表示這個非同步驗證請求,是驗證登陸用的(提交訂單也是用這個位址,只是此引數不同)

第二個引數randcode就是重點了,是我們點選驗證碼的座標位置組合成的。注意:請將上面空白以及左邊空白位置考慮進去。如圖下圖:

去除空白部分後,將拆分成2行4列,用rectangle儲存

再分析下驗證碼響應的json,如下圖:

注意看"msg":"true".這個表示驗證碼驗證通過

驗證碼驗證通過後,就模擬登陸了:

看看 http head,如下圖:

看看postdata,如下圖:

看看返回的json,如下圖:

注意"logincheck":"y"表示登陸通過。

遇到的問題:

不知道為什麼,登陸後請求其他頁面返回的編碼亂了。後來發現,原來是12306開啟了gzip

1

using (webresponse response =request.getresponse())210

}11 }

view code

c curl模擬登陸

我們在使用一些 時,輸入使用者名稱,密碼即可登陸該 登陸原理就是將使用者輸入的使用者名稱和密碼組合成乙個特定字串,post給乙個url位址,如果使用者名稱密碼正確,就可以登陸了,如果想使用程式模擬這種登陸過程,需要下面的步驟 1 抓包工具,推薦使用httpwatch專業版,輸入使用者名稱,密碼就開始...

CURL模擬登陸

created by phpstorm.user machenike date 2016 7 8 time 13 40 header content type text html charset utf 8 set time limit 0 關閉請求時間 cookie tempnam cookie ...

Python requests 模擬登陸

本段 是為了模擬登陸教務處系統,從而實現自動預約講座的準備。cookies raw cookies forline in raw cookies.split key,value line.split 1 1代表只分一次,得到兩個資料 cookies key value testurl s reque...