JavaScript逆向学习历程一(有道翻译)

有道翻译知识总结

第一步:查看需要构造的参数,发现其中i为我们要搜索的词,其余参数可能需要计算的有salt,sign,ts,bv。

JavaScript逆向学习历程一(有道翻译)_第1张图片

第二步,寻找构造参数的javascript代码所在位置,观察构造逻辑。切换至调制器,在火狐中ctrl+shift+f进行全局搜索,比如说查找salt。

JavaScript逆向学习历程一(有道翻译)_第2张图片

依次点击寻找,查看哪段代码实现了salt的生成。最终确定要研究的部分。最后发现在salt:i,里边具由salt生成的逻辑代码。

JavaScript逆向学习历程一(有道翻译)_第3张图片

并且里边包括了其余变量的生成方法。

ts对应的值为r,r的生成逻辑为生成一个时间戳。在python中的生成方式为

bv对应的值为t,其生成逻辑为客户端app版本号的md5值。因为我们使用的为浏览器,其实就是浏览器的header里边的useragent。即Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0。

在Python中md5值的实现代码为:

md5作用,将任意长度字符串转为一定长度的16进制字符串。python中md5的实现,首先要把字符串变为‘utf-8’编码格式,最后将其转化为16进制即可。

JavaScript逆向学习历程一(有道翻译)_第4张图片

salt对应的值为i,i的生成逻辑为r的值加上int后的任意数*10,r的值即刚刚求得dets的值。

最后一个值为sign,其生成逻辑为‘fanyiweb’  + i + e + 一堆字符串的md5值,其中有两个变量一个是i,一个是e

其中i即刚刚求得的salt的值。注意因为是字符串相加,所以需要将 salt的值转为为str型再相加。

另外参数e,观察函数传输参数为e。且如果我们构造url的话,想要翻译的内容必然会在url中以某种方式体现,可以推测e即我们传入的想要翻译的内容。

最终我们所有的参数也就构造出来,将其全部对应放入data,然后去post请求即可获得相应的response。观察相应内容为json格式,所以最终我们便可以从json数据中提取出我们的结果。另外这是一个post的请求,所以需要requests.post去请求数据。

 

你可能感兴趣的:(爬虫)