整個小項目下來,涉及了app反編譯,http協議,JavaScript,fiddler等等的基礎小知識
在接到這個任務之後,我首先熟悉了一下流程.發現他是http協議的
馬上就打開fiddler打開端口用模擬器監測一下
一波操作之後發現他的登錄完全沒有加密,直接輸入賬號密碼 POST一下就可以登錄進去返回賬號臨時ID
以爲項目就此大功告成
在獲取搶號數據的時候發現不是這樣
每個請求都帶着不規律的 noticeStr,sign在cookie中
timestamp一看就知道是時間戳
其他訪問也沒有返回這兩個參數,是忽然有的
然後就想到會不會是APP內部有加密函數
這時候打開了androidkiller找到了訪問的接口鏈接,但是無論如何也搜不到noticeStr,sign這些關鍵字,我甚至換了個反編譯工具,升級了版本,也無濟於事
後來我看回來fiddler,發現在每次點擊之前,都會打開一個html,裏面有一段js
明明白白地寫到了這兩個參數生成的具體流程(參數拆分->隨機生成關鍵字->排序->再來個他們自己寫的MD5)..是我把他想得太複雜了
這時候就有兩個方法,一個是直接用自己的語言裏面選個js解析庫解析,我用的是python,試過js2py之類的庫,解析就要按秒算,這樣不划算,那就要把js轉換到py語言,這時候py有個庫我要推薦一下,jiphy點進去有使用教程.
轉換之後大概修改了一下.期間遇到的坑就不說了(js跟py位運算有一點不一樣)
搞定之後就可以自己生成簽名了,置入cookie,獲取成功