這篇文章的主要目的還是破解JS參數(shù)加密戏蔑,百度翻譯的JS過程并不是很復雜种蘸,非常適合新手練手。
首先,打開百度翻譯鞍爱,隨便輸點詞語伊约,點擊翻譯劈狐。
不斷點擊翻譯疙咸,在network中會一直跳出框框內(nèi)的內(nèi)容。
打開第二個文件v2transapi媳友,可以看到我們需要的內(nèi)容斯议。
現(xiàn)在來分析一下這個文件,它的請求方式為post庆锦,下圖是它post時所需的data捅位。from是你輸入詞語的類型,to是需要翻譯成的類型搂抒,query是翻譯的詞語艇搀,sign和token是通過js文件生成的;現(xiàn)在來找一找這兩個參數(shù)求晶。
https://fanyi.bdstatic.com/static/translation/pkg/index_9b62d56.js:formatted是JS文件的鏈接焰雕,打斷點調(diào)試可以看到,sign是通過m(‘翻譯’ )生成的芳杏,token是通過 window.common.token生成矩屁。
其中window.common.token在頁面的源代碼中有出現(xiàn) ‘04a7c540f2a1e1d6be3dee208d1b7525’;第二個框的參數(shù)后面會用到爵赵。
在來看m()函數(shù)吝秕,它的參數(shù)就是要翻譯的內(nèi)容,定位到5725-5727行空幻,這三行是用來生成一個參數(shù)u烁峭,且u的值為window.gtk,也就是上一幅圖第二個框框內(nèi)的內(nèi)容秕铛;為了使代碼更加靈活约郁,在構(gòu)造js函數(shù)的時候,將參數(shù)u從定值轉(zhuǎn)為m()函數(shù)的參數(shù)但两,這一部分進行調(diào)整鬓梅。
調(diào)整后的JS代碼如下:
至此整個流程就分析完了,下面來構(gòu)造自己的翻譯器把谨湘。順便一說绽快,百度翻譯可以實現(xiàn)88種語言的互轉(zhuǎn)噢芥丧。
效果圖如下: