前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS逆向初探之有道翻译

JS逆向初探之有道翻译

作者头像
老肥码码码
发布2020-01-17 11:20:22
1.1K0
发布2020-01-17 11:20:22
举报

有道翻译在咱们的日常学习工作中也是经常被用到,有道翻译提供即时免费的中文、英语、日语、韩语等多种语言的翻译,今天我们就来研究一下有道翻译的网页版,是否能通过对网页的爬取做一个简易的翻译小工具呢,一起来看看吧!

用Chrome浏览器打开有道的在线翻译,按下F12并在框中输入任意中文来观察其网页变化。

该页面被我们轻松找到,可以看到tgt对应的内容就是我们的爬取目标。观察其Headers,发现这是一个post请求,我们都知道post需要提交表单数据,从下图中的Form Data可以看到我们需要的信息,乍一看竟有如此多的参数,我们换个输入重新看看,哪些参数是固定的,哪些是随着输入而发生改变的。

可以多尝试几次,观察其参数变化,显然这些参数之中只有i、salt、sign、ts、bv这几个是发生变化的,那我们就重点来关注这些参数是如何发生变化的。打开其js代码,观察其代码是如何来得到这些变量的。在搜索框内输入salt。

data构造的字典,我们需要的参数尽数都在其中,继续查看js代码,想要找到其加密的函数,想知道其如何生成的,就需要用到JS调试了。

给代码打上断点之后,发现其e就是我们输入的文字,这和Form Data也是一致的,其中t也就是bv是代理的md5值,这里navigator.appVersion的值是5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36,鼠标悬停在该变量上就会显示。ts表示时间戳(timestamp),而i也就是salt则是构造出来的一个字符串,具体方法也在下面代码中给出了。sign也是一个构造出来的参数,前后两端加入固定字符串,中间拼接了e和i,通过md5加密形成新字符串。

代码语言:javascript
复制
ts = str(int(time.time()*10000))
salt = str(int(time.time()*10000) + random.random()*10 + 10)
sign = 'fanyideskweb' + word + salt + '97_3(jkMYg@T[KZQmqjTK'
sign = hashlib.md5(sign.encode('utf-8')).hexdigest()
bv = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
bv = hashlib.md5(bv.encode('utf-8')).hexdigest()

上述代码是整个解密的关键,有了他们我们就有了所有需要发送请求的参数,编写剩余部分代码,下面来看看实现结果吧!

输入中英文都能够互相转换,其他语种也支持翻译查询喔!

全部代码后台回复“有道”,即刻送达喔~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档