Python破解百度翻译反爬机制---自制翻译器
2019-01-15 本文已影响105人
妄心xyx
这篇文章的主要目的还是破解JS参数加密,百度翻译的JS过程并不是很复杂,非常适合新手练手。
首先,打开百度翻译,随便输点词语,点击翻译。
![](https://img.haomeiwen.com/i14581851/26c3d29b4eb98c12.jpeg)
不断点击翻译,在network中会一直跳出框框内的内容。
![](https://img.haomeiwen.com/i14581851/45196492f2c5209e.jpeg)
打开第二个文件v2transapi,可以看到我们需要的内容。
![](https://img.haomeiwen.com/i14581851/9fa360a6c5244517.jpeg)
现在来分析一下这个文件,它的请求方式为post,下图是它post时所需的data。from是你输入词语的类型,to是需要翻译成的类型,query是翻译的词语,sign和token是通过js文件生成的;现在来找一找这两个参数。
![](https://img.haomeiwen.com/i14581851/ee5e784371f62096.jpeg)
https://fanyi.bdstatic.com/static/translation/pkg/index_9b62d56.js:formatted是JS文件的链接,打断点调试可以看到,sign是通过m(‘翻译’ )生成的,token是通过 window.common.token生成。
![](https://img.haomeiwen.com/i14581851/90c89bcc244c7033.jpeg)
其中window.common.token在页面的源代码中有出现 ‘04a7c540f2a1e1d6be3dee208d1b7525’;第二个框的参数后面会用到。
![](https://img.haomeiwen.com/i14581851/57f0d3bb22b0331a.jpeg)
![](https://img.haomeiwen.com/i14581851/050efd292215d40e.jpeg)
在来看m()函数,它的参数就是要翻译的内容,定位到5725-5727行,这三行是用来生成一个参数u,且u的值为window.gtk,也就是上一幅图第二个框框内的内容;为了使代码更加灵活,在构造js函数的时候,将参数u从定值转为m()函数的参数,这一部分进行调整。
![](https://img.haomeiwen.com/i14581851/a8105faddf1bd968.jpeg)
调整后的JS代码如下:
![](https://img.haomeiwen.com/i14581851/eea398636794ca77.jpeg)
至此整个流程就分析完了,下面来构造自己的翻译器把。顺便一说,百度翻译可以实现88种语言的互转噢。
![](https://img.haomeiwen.com/i14581851/3a44074902513cde.jpeg)
效果图如下:
![](https://img.haomeiwen.com/i14581851/8115ab02b2fe49e0.jpeg)