制作一个简单的中翻英翻译器

严格来说不算翻译器,只是调用有道翻译的接口来当作我们的。话不多说,直接说过程

http://fanyi.youdao.com/ 首先这是本次我们要去拿的翻译接口网站,有点小js解密吧。(目前大概就四种:无脑型,post传参型,js加密型,还有就是服务器加密型,类似微信。前三种都还可以,很多人听到js就害怕,其实没那么难,就是找到js加密文件,然后去理解它的写法,转成python的写法,或者使用第三方库调动js代码(这里我倾向自己写自己模拟),就是这么一回事)

 

 

 

 

按住f12,观察有道传参格式,经过观察,确定链接为: http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule   POST请求  ,  发现只有五个值是变动的,如下图所示:

 

 

 观察上图红色指标,i 是我们要输入的翻译词,  salt 和 lts 一看就像时间戳(最近在自定义写钉钉的机器人,发现大部分时间戳都喜欢写成 int(time.time() * 1000)格式),现在就是sign和bv不知道是什么,怎么办呢,直接点击search搜索这两个参数,发现在js里有东西:

 

 

如上图,经过调试后发现了这四个参数的生成方式,(这里如何search和如何调试我就不详细解释了,上网找找就知道了)  分析这段js代码,ts的话肯定是时间戳,而且转换成python写法肯定是 int(time.time() * 1000),然后salt就是在时间戳的后面给了它一个随机数random,然后bv是把请求头进行md5加密, sign也是MD5加密,不过格式必须按照它后面写的那样,(这里我分析js代码可能比较快,因为自己会看点js而且也做过,如果觉得分析太快,不能理解,可以一个参数一个参数打印到console里面去看,然后去猜他的写法)

 

 

 这里的改写不是很复杂,就是要明白点基础,然后模仿js写法生成加密信息,然后传参进去就可以了,请求头随便什么都可以,get_md5是我写好的一个MD5加密函数,python 如何MD5加密,可以去百度。

然后就是熟悉的传参,这边我使用的是requests模块,最终效果如下图:

 

简单的翻译接口就拿到了,如果想看详细代码,可以访问:https://github.com/cyrilchans/myspider/blob/main/有道翻译/youdao.py,如果感兴趣,想练手类似的,可以去自己去抓下:http://vendor.heneng.cn:16790/bid_notice,这个和有道类似一样,可以当个简单的js练手,相关教程这边就不写了,直接看代码可以去:https://github.com/cyrilchans/myspider/blob/main/合能/heneng.py

posted @ 2020-11-28 19:17  努力努力z  阅读(548)  评论(0)    收藏  举报