严格来说不算翻译器,只是调用有道翻译的接口来当作我们的。话不多说,直接说过程
http://fanyi.youdao.com/ 首先这是本次我们要去拿的翻译接口网站
按住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://www.cnblogs.com/cyril8888/p/14053657.html