製作一款屬於自己的翻譯小軟件,Python解決有道JS加密!

當我在左邊輸入蘋果的時候,右邊自動給我顯示英文。

那麼可以猜想一下如果我左邊輸入的是英文呢?右邊會不會顯示中文!(會)

結論:這個網站的api它會自動識別你的中英文

製作一款屬於自己的翻譯小軟件,Python解決有道JS加密!

抓包:

製作一款屬於自己的翻譯小軟件,Python解決有道JS加密!

很明顯觀看返回值後可以確定就是這一個包,而這個post請求所攜帶的參數非常多,大概率多參數加密!

然後經過反覆測試後發現,其中的salt,sign,ts是會發生變化的。

不難發現ts僅僅比salt少了一位,而如果你有經驗,看到ts就會知道這個是現行時間。

當然這個也只是猜測,不能當真。所以我們可以去尋找一下salt的來源,它到底是由什麼方法生成的,然後我們用python代碼去模擬。

製作一款屬於自己的翻譯小軟件,Python解決有道JS加密!

隨便一下就找到了,當然這個也是要經驗的。我們可以看到的信息量很足。比如i = r +隨機數,而r=ts,i=salt。不就驗證了我們的猜想——不難發現ts僅僅比salt少了一位,前面的都是一樣的。

而r = (new Date).getTime(),這不就是取現行時間嗎?那麼salt與ts我們都已經得到。


製作一款屬於自己的翻譯小軟件,Python解決有道JS加密!

而sign的值就是個md5摘要,裡面的只有兩個變量,e、i,而i我們已經在前面得到了。那麼如何得到e,甚至我們前面t = n.md5(navigator.appVersion),bv=t,很明顯 即使bv也是加密的,只是我們的navigator.appVersion是一個定值。

OK,到此為止所有問題都已經解決,e為我們所查詢的字符串,navigator.appVersion為我們的用戶代理。(模擬請求時,記得添加請求報文。)


分享到:


相關文章: