當我在左邊輸入蘋果的時候,右邊自動給我顯示英文。
那麼可以猜想一下如果我左邊輸入的是英文呢?右邊會不會顯示中文!(會)
結論:這個網站的api它會自動識別你的中英文
抓包:
很明顯觀看返回值後可以確定就是這一個包,而這個post請求所攜帶的參數非常多,大概率多參數加密!
然後經過反覆測試後發現,其中的salt,sign,ts是會發生變化的。
不難發現ts僅僅比salt少了一位,而如果你有經驗,看到ts就會知道這個是現行時間。
當然這個也只是猜測,不能當真。所以我們可以去尋找一下salt的來源,它到底是由什麼方法生成的,然後我們用python代碼去模擬。
隨便一下就找到了,當然這個也是要經驗的。我們可以看到的信息量很足。比如i = r +隨機數,而r=ts,i=salt。不就驗證了我們的猜想——不難發現ts僅僅比salt少了一位,前面的都是一樣的。
而r = (new Date).getTime(),這不就是取現行時間嗎?那麼salt與ts我們都已經得到。
而sign的值就是個md5摘要,裡面的只有兩個變量,e、i,而i我們已經在前面得到了。那麼如何得到e,甚至我們前面t = n.md5(navigator.appVersion),bv=t,很明顯 即使bv也是加密的,只是我們的navigator.appVersion是一個定值。
OK,到此為止所有問題都已經解決,e為我們所查詢的字符串,navigator.appVersion為我們的用戶代理。(模擬請求時,記得添加請求報文。)
閱讀更多 青燈教育Python學院 的文章