本文基于python和第三方requests模块,实现了在本地利用百度翻译对文本进行相关的翻译工作(ps:本文仅作技术交流, 侵权删)
准备工作及基本的分析
百度翻译官网:https://fanyi.baidu.com/, 随便查询一个单词,看下查询过程,如下(以下操作均是基于chrome浏览器)
0x01
从上图可以看到查询其实是发送到了这个url地址,https://fanyi.baidu.com/v2transapi?from=en&to=zh,通过分析,我们得出结论
我们将url分解成两个部分看:
'https://fanyi.baidu.com/v2transapi'和'from=en&to=zh',前面部分永恒不变,后面部分代表着要从哪种语言翻译成哪种语言(from/to)
0x02
请求头部分就不说了,大家都懂,确定是post请求,另外写几个必须的请求头就行了, cookies是必须要带的参数, 在Requests.headers参数中, 需要复制到本文最后的代码cookies参数中
from data里面的信息是重中之重,需要带着这些参数发送请求,这里面有很多的信息,我们需要判断哪些是必须的参数,哪些是不需要的参数,通过一波分析,我们知道了query代表了要翻译的短语,from和to就是语种,还有就是sign和token值必须带着去请求,其他几个参数没啥用
domain,simple_means_flag,transtype这几个参数带着就行了,不变化的
token:token一般都在网页中有,所以去搜索一波试试,果然搜到了(ctrl+f/command+f)
sign:这个是百度翻译的难点,这个是JS生成的,所以要找js脚本代码在哪里,全局搜索sign,通过分析,我们终于还是拿到了负责计算sign的js代码,代码如下(网站上js的脚本路径: https://fanyi-cdn.cdn.bcebos.com/static/translation/pkg/index_88a11cb.js)
# 这个变量i是怎么来的,我终究还是没搞懂, 我碰巧找到以前用的,拿过来尝试一下,竟然是对的var i = "320305.131321201"fu