百度翻译爬虫

一、简介

        小白一枚,如有不足请斧正。

        百度翻译和网易有道词典翻译算是入门级的JS逆向爬虫了,站内有很多大佬的文章,我这就简单写写了。

二、加密分析

        2.1 API分析

                不难找到返回结果的包是下面这个

百度翻译爬虫

它的参数如下

百度翻译爬虫

         多次测试后,我们可以发现这个token是固定写死的,只有这个sign在改变,这个query是查询的字符,并且中文转英文和英文转中文,这个form 和 to 是会变化的。

      2.2 参数分析

            我们可以搜索sign这个关键字,但是我这边建议搜索url中的 v2transapi。

            于是我们不难找到响应的位置,打上断点后继续调试

              百度翻译爬虫

        程序停在这二,我们发现sign是通过L(e)这个函数进行加密的,e是查询的字符。进入到加密js函数中打上断点后:

        百度翻译爬虫 

        多次调试,我们发现这个u是不变的,而这个u是和 变量i有关的 ,而 i 也是来自于 window对象。

        和token一样,这个i也是来自于window对象,并且不变化,于是我们来到百度翻译页面源文件尝试寻找值。

        百度翻译爬虫 

百度翻译爬虫

        果然,我们找到了响应的值。

    找到了相应的参数,接下来就是补全js加密的代码了,缺啥补啥,调用啥补啥,然后用nodejs测试即可。

 三、坑分析

        由于我们要先到百度翻译原网页获取token 和 i 的值,然后将这个 i 值传给js文档进行加密,因此,首先考虑session而不是普通requests。

        有个坑就是,第一次请求原网页他不会给你返回token,第二次才会返回,有趣的是,他在返回的不含token的网页中居然说了这件事。。。。

        然后由于英文转中文和中午转英文的data参数不一致,因此需要提前判断一下,否则只能当方向翻译,另外阿拉伯数字也是归结于中文。

四、运行结果

百度翻译爬虫

github : https://github.com/L2421800049/baiduTranslation.git

上一篇:Codeforces Round #284 (Div. 2)


下一篇:签到功能表的基本逻辑