破解有道翻译反爬虫机制

web端的有道翻译,在之前是直接可以爬的。也就是说只要获取到了他的接口,你就可以肆无忌惮的使用他的接口进行翻译而不需要支付任何费用。那么自从有道翻译推出他的API服务的时候,就对这个接口做一个反爬虫机制(如果大家都能免费使用到他的翻译接口,那他的API服务怎么赚钱)。这个反爬虫机制在爬虫领域算是一个非常经典的技术手段。那么他的反爬虫机制原理是什么?如何破解?接下来带大家一探究竟。

一、正常的爬虫流程:

如果你要爬取他的翻译接口,这个流程还是不能少的。首先我们打开有道翻译的链接:http://fanyi.youdao.com/。然后在页面中右键->检查->Network项。这时候就来到了网络监听窗口,以后你在这个页面中发送的所有网络请求,都会在Network这个地方显示出来。接着我们在翻译的窗口输入我们需要翻译的文字,比如输入hello。然后点击自动翻译按钮,那么接下来在下面就可以看到浏览器给有道发送的请求,这里截个图看看:

在上图,我们可以看到发送了很多的网络请求,这里我们点击第一个网络请求进行查看:

可以看到,我们在点击自动翻译的时候,发送的请求就是上图中Request URL的那个URL,然后我们再点击那个Response,我们可以看到返回的结果:

并且,现在我们再回到Headers的地方,然后滚动到最下面,可以看到有一个Form Data的地方,这个下面展示了许多的数据,这些数据就是你在点击翻译的时候浏览器给服务器发送的数据:

对其中几个比较重要的数据进行解释:

i:需要进行翻译的字符串,这个地方我们输入的是hello。

salt:加密用到的盐。这个是我们破解有道反爬虫机制的关键点,后面会讲到。

sign:签名字符串。也是破解反爬虫机制的关键点。

其他的数据类型暂时就不怎么重要了,都是固定写法,我们后面写代码的时候直接鞋子就可以了。到现在为止,我们就可以写一个简单的爬虫,去调用有道翻译的接口了。这里我们使用的网络请求库是Python3自带的urllib,相关代码如下:

我们运行这个文件后,当我们输入的是hello的时候,我们可以得到哈罗的这个正确的翻译结果。而当我们输入其他需要翻译的字符串的时候,比如输入i love you,那么就会得到一个错误代码{“errorCode”:50}。这就奇怪了,有道词典不可能只能翻译一个英文单词吧。而这个,就是有道词典的反爬虫机制。接下来我们就来破解有道词典的反爬虫机制。

二、破解反爬虫机制:

我们可以多次的进行翻译,并且每次翻译后都去查看翻译的时候发送的这个网络请求,比较每次翻译时候发送的Form Data的值。我们注意到,Form Data在每次发送网络请求的时候,只有i和salt以及sign这三个是不同的,其他的数据都是一样的,这里我用hello和world两个单词翻译时候Form Data的数据进行比较:


图中的Form Data也证实了我刚刚所说的,就是除了i、salt以及sign是不一样的。其余都是一样的。而i不一样是很正常的。因为i代表的是要翻译的字符串,这个不同是很正常。而salt和sign这两个东西不一样,是怎么产生的呢?这里我们可以分析一下,这两个值在每次请求的时候都不一样,只有两种情况:第一是每次翻译的时候,浏览器会从有道服务器获取一下这两个值。这样可以达到每次翻译的时候值不同的需求。第二是在本地,用JS代码按照一定的规则生成的。那么我们首先来看第一个情况,我们可以看到在每次发送翻译请求的时候,并没有一个请求是专门用来获取这两个值的:

所以就可以排除第一种情况。就只剩下一种可能,那就是在本地自己生成的,如果是在本地自己生成的,那么规则是什么呢?这里我们点击网页,查看网页源代码,查找所有的JS文件,我们找到那个fanyi.js:

然后点击这个文件,跳转到这个源文件中,然后全选所有的代码,复制下来,再打开站长工具:http://tool.chinaz.com/Tools/jsformat.aspx。把代码复制进去后,点击格式化:

然后把格式化后的代码,复制下来,用sublime或者pycharm打开都可以,然后搜索salt,可以找到相关的代码:

这里我们就可以发现所有的值的生成原理了。这里来做个简介:

d:代表的是需要翻译的字符串。

f:当前时间的时间戳加上0-10的随机字符串。

u:一个常量——fanyideskweb。

c:一个常量——rY0D^0’nM0}g5Mm1z%1G4。

salt:就是f变量,时间戳。

sign:使用的是u + d + f + c的md5的值。

知道salt和sign的生成原理后,我们就可以写Python代码,来对接他的接口了,以下是相关代码:

写在最后:

像以上这种,通过用JS在本地生成随机字符串的反爬虫机制,在爬虫的时候是经常会遇到的一个问题。希望通过以上的讲解,能为大家提供一种思路。以后再碰到这种问题的时候知道该如何解决。

更多干货内容,欢迎关注公众号:知了python

用Python破解有道翻译反爬虫机制相关推荐

  1. Python(4) 用Python破解有道翻译反爬虫机制

    web端的有道翻译,在之前是直接可以爬的.也就是说只要获取到了他的接口,你就可以肆无忌惮的使用他的接口进行翻译而不需要支付任何费用.那么自从有道翻译推出他的API服务的时候,就对这个接口做一个反爬虫机 ...

  2. 如何利用 C# + Python 破解猫眼电影的反爬虫机制?

    在 如何利用 C# 爬取「猫眼电影:最受期待榜」及对应影片信息! 这篇图文中可以看到猫眼电影对"本月新增想看人数" 和 "总想看人数"进行了字符集加密. 在 如 ...

  3. python实战:利用chrome抓包插件HTTP间谍分析有道翻译反爬机制

    本次实战目标站点:http://fanyi.youdao.com/?keyfrom=fanyi-new.logo ,主要利用HTTP间谍抓包插件分析有道翻译反爬机制,该抓包能帮我们过滤掉一些不需要的常 ...

  4. 从头学习爬虫(四十)高阶篇----模拟js生成Cookie中__jsl_clearance来破解加速乐的反爬虫机制

    本文主要提供中间模拟生成Cookie中__jsl_clearance字段来破解加速乐的反爬虫机制 前后通过postman模拟代替代码实现 一 需求 http://www.cyicai.com/info ...

  5. 【Python】有道翻译的爬虫实现(后篇)

    前面说到,有道翻译和百度翻译不同 (百度翻译是模拟iPhone手机,可能百度翻译用Pc端也会有类似的问题,有道翻译的User-Agent是Pc端) 每一次的salt和sign都不一样,这是什么原因产生 ...

  6. 【Python】有道翻译的爬虫实现(前篇)

    import requestsimport jsonurl ="http://fanyi.youdao.com/translate_o?smartresult=dict&smartr ...

  7. python破解网易反爬虫机制

    用python3 urllib破解有道翻译反爬虫机制 前言 最近在学习python 爬虫方面的知识,网上有一博客专栏专门写爬虫方面的,看到用urllib请求有道翻译接口获取翻译结果.发现接口变化很大, ...

  8. 【爬虫】关于企业信用信息公示系统-加速乐最新反爬虫机制

    ( ̄▽ ̄)~*又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构. 升级后网站的层次结构并没有太多变化,表面上是国家企业信用信 ...

  9. Python有道翻译爬虫,破解反爬虫机制,解决{errorCode:50}错误

    一.引言 参考网址:https://tendcode.com/article/youdao-spider/ 当前成功时间:2019-6-28 转自个人开源博客:https://my.oschina.n ...

最新文章

  1. 一个狠招|如何高效学习3D视觉
  2. 参会邀请 | “新时代与新范式:新兴交叉学科的研究议程与发展路径”——第三届全国计算社会科学高端论坛...
  3. linux c 环境变量函数 getenv putenv 简介
  4. 15 个变量和方法命名的最佳实践
  5. 2019.05.15
  6. PHP中用于精确计算的bcmath扩展
  7. 设计模式(三)--观察者模式
  8. powershell实现设置程序相关性脚本
  9. ios framework 找不到.h_找不到好看的壁纸?上万张「高清壁纸」,都在iOS捷径里...
  10. 用Crossdev安装MIPS交叉编译工具链
  11. 经典面试题(35):以下代码将输出的结果是什么?
  12. C语言学习笔记---打印函数printf()和sprintf()函数
  13. gitee创建ssh公钥
  14. 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题
  15. ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  16. 联想l430主板图纸_【有图】Thinkpad L430升级内存,点亮,成功实现双通道!附详细教程及评测!!!...
  17. RPM包安装MYSQL
  18. 【云周刊】第121期:图管够!灌篮高手、女儿国…阿里日,这帮程序员太会玩了!...
  19. 三星Galaxy之父×××网秦,网秦安全能否脱胎换骨?
  20. 微信小程序登录功能wx.login

热门文章

  1. 紫薇星“Jigsaw Puzzle”
  2. PHP_微信小程序(2)
  3. python读取批量txt文件
  4. 密码学笔记——维吉尼亚密码
  5. 有关信息安全的三个案例
  6. 数学建模_统计回归模型的梳理与总结:逐步回归,残差检验,自相关
  7. Java入门之顺序、选择、循环结构
  8. 金融量化数据接口API汇总
  9. 面试官:请你谈谈ConcurrentHashMap
  10. Excel如何删除合并单元格列后的空单元格