JS逆向初探之有道翻译

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

用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加密形成新字符串。

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()

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值