有道翻译逆向破解
Posted ccdjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有道翻译逆向破解相关的知识,希望对你有一定的参考价值。
很久没发文章了,最近都在研究JS逆向、验证码以及签名认证。有道翻译是个很好的例子本文就围绕它进行讲解。
首先进入有道翻译url https://fanyi.youdao.com/ 打开抓包工具,输入所查询的单词,观察接口信息。
然后在发一个请求。对比Date所携带的参数。可以发现只有i、salt、sign、its是不同的。i是所查询的单词,有经验的小伙伴一眼就可以看出salt、its很像时间戳。salt只比its多了一位,而sign是加密的参数,这时可以采用全局搜索定位到sign实现的js代码,然后打上断点。
打上断点之后再输入查询单词验证猜想是否正确。
可以发现成功定位到该断点,然后我们观察实现加密的代码。
sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@") 。这里发现sign加密参数是经过md5加密的,e是所查询的单词,i就是salt也就是时间戳加上随机一位数。然后我们搜索md5加密代码将其复制到js改写工具中调试,运行后即可得出加密参数。
所有参数都明白其生成过程之后我们就可编写Python脚本了
首先将改写好的js代码复制到Pycharm中。然后开始编写脚本。
import requests import execjs import time import random headers = { \'User-Agent\':\'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/72.0.3626.81 Safari/537.36\', \'Cookie\': \'OUTFOX_SEARCH_USER_ID=1457050721@10.108.160.101; JSESSIONID=aaa6b_mnOADvV8pGtGcNx; OUTFOX_SEARCH_USER_ID_NCOO=1369537425.868482; ___rl__test__cookies=1622472066802\', \'Referer\': \'https://fanyi.youdao.com/\' } url = \'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule\' word = input(\'enter a word:\') its = str(int(time.time()*1000)) #实现its salt = its + str(int(random.random()*10)) #实现salt print(its) print(salt)
#得到加密参数sign def get_sign(): node = execjs.get() ctx = node.compile(open(\'youdao.js\',encoding=\'utf-8\').read()) funcName = \'getSign("{0}","{1}")\'.format(word,salt) sign = ctx.eval(funcName) print(sign) return sign sign = get_sign() data = { \'i\':word, \'from\':\'AUTO\', \'to\':\'AUTO\', \'smartresult\':\'dict\', \'client\':\'fanyideskweb\', \'salt\':salt, \'sign\':sign, \'lts\':its, \'bv\':\'588ae7f945d3b2cb2b828726d4a0c2db\', \'doctype\':\'json\', \'version\':\'2.1\', \'keyfrom\':\'fanyi.web\', \'action\':\'FY_BY_REALTlME\', } resp = requests.post(url,headers=headers,data=data).json() #发起请求 print(resp)
结果如下:
headers里面加上了Cookies和Referer不然接口不给我们返回结果。
以上是关于有道翻译逆向破解的主要内容,如果未能解决你的问题,请参考以下文章