有道翻译逆向破解

Posted ccdjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有道翻译逆向破解相关的知识,希望对你有一定的参考价值。

很久没发文章了,最近都在研究JS逆向、验证码以及签名认证。有道翻译是个很好的例子本文就围绕它进行讲解。

 

首先进入有道翻译url https://fanyi.youdao.com/ 打开抓包工具,输入所查询的单词,观察接口信息。

 

 

然后在发一个请求。对比Date所携带的参数。可以发现只有i、salt、sign、its是不同的。i是所查询的单词,有经验的小伙伴一眼就可以看出salt、its很像时间戳。salt只比its多了一位,而sign是加密的参数,这时可以采用全局搜索定位到sign实现的js代码,然后打上断点。

  1. salt:
    16224744937907
  2. sign:
    b6f903cbafb6d0738857adb0dcdb0ca5
  3. lts:
    1622474493790

 

 

打上断点之后再输入查询单词验证猜想是否正确。

 

 

可以发现成功定位到该断点,然后我们观察实现加密的代码。

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不然接口不给我们返回结果。

 

以上是关于有道翻译逆向破解的主要内容,如果未能解决你的问题,请参考以下文章

爬虫案例之网易有道翻译Python代码改写

JS逆向--有道翻译

爬虫案例之网易有道翻译JS代码复杂版

Python爬虫实战,破解有道翻译JS加密,制作桌面翻译工具更新版

Python爬虫破解有道翻译

Python爬虫破解有道翻译