前言

相信大家在做爬虫或者自动化脚本时或多或少的都能遇到反爬机制(或者说反脚本机制),最常见的反脚本机制都是在登录时进行验证,据本人大量实战(帮粉丝写脚本)发现,基本上只要有点水平的网站都会有反脚本的机制,如果是大型网站那么他的反脚本机制将更加的强大和复杂。比如淘宝、12306这些,如果策略不够强大。那么在秒杀或者抢票时,正常的用户将毫无体验可言。本文将讲解如何突破一般的反爬机制。通过阅读本文,网络上80%的网站任你的脚本程序随意操作

反脚本机制

看得见的反脚本机制

1.低难度

图形验证码、有干扰线的图形验证码、计算图形验证码的结果、请求参数简单加密(每次加密结果相同)等。

2.中等难度

请求参数AES加密(每次加密结果不同)、boss的点击验证、拉勾的滑动验证、按顺序点击图片中的文字验证等。

3.高难度

百度的将图片旋转为正确角度验证、谷歌的点击存在某样东西的图片验证等。

看不见的反脚本机制

如果你觉得各大网站只用上面那些反脚本机制那你就太天真了。上面那些只是劝退一般的爬虫工程师,真正要拦住他们的还是这些。
1.比如一些秒杀商品,等到秒杀时间时才会生成该商品的参数,你不能提前得到该商品的参数就不能够狂刷数据包下单,时间一到等你获取这个参数的时间,正常用户已经秒杀完了,这就能达到反脚本的目的。
2.当你的访问速度过快或者脚本程序爬取数据的时候不像人类的行为,这时弹出一些验证方法或者给你返回错误或者无用的数据,甚至给出循环链接,让脚本程序进入死循环,从而达到反脚本的目的。
这只是列举一些常用的反脚本策略,实际上大型网站会比这些强得多

突破反脚本机制

1.低难度

1.对于简单的图形验证码,python的第三方库pytesseract就可以进行识别。
2.有干扰线的的网上也有对应的去除干扰线的算法,不过干扰线恶心一点的那些算法也不好使。
3.去除干扰线也没法识别的、需要计算图形验证码的。你可以将图片保存下来,手动输入通过验证。
4.对于请求参数简单加密的。直接抓包取出加密后的参数就可以了。
大部分网站都是没有反脚本机制,就算有,大部分也都是这种简单的。能突破这种低难度的,60%的网站你都可以用脚本程序去达到某种目的。

2.中难度

今天的重点:请求参数AES加密(每次加密结果不同)
该反脚本机制一般有以下特征:
1.输入框中输入相同的账号密码,但是每次发出去的请求参数都不一样。
2.除了我们输入的参数外,还会有一些不停变化的参数。
下面是某网站登录的请求参数,账号密码都是20001111。
第一次请求
第二次请求
当然,有一些简单一点的不是用AES加密,可能是随机生成的字符串加密等奇奇怪怪的算法。但是这都不影响,解决思路是一样的。

解决思路

解决这种反脚本策略需要一定的前端基础,该过程也被称之为前端逆向。

1.找到前端的加密算法

1.缩小范围
通过浏览器的调试器,查看前端代码,通过搜索关键字查找缩小范围。关键字一般就是加密、编码等词语的英文或者拼音,一般是英文,拼音还没遇到过。如encrypt、encode等。
2.通过调试或者理解代码逻辑找到算法
一般会存在这很多关键字,有些地方一看就不是加密算法,然后不确定的在浏览器打上断点,跑一遍,继续缩小范围。因为有些代码是其他功能的,并不会执行。这时候基本上就能找到了。如果代码执行了,你也不确定的地方有多个,那就只能仔细阅读他的源码判断是不是加密了。
这是加密算法的部分截图

2.写出相同的算法

通过理解他的算法后写出相同的算法

3.获取算法所需要的参数

还记得前面提到的一直变化的参数吗?在该网站中那个参数是lt。但是经过调试后发现并不是,而是另外的参数pwdDefaultEncryptSalt。
既然找到参数了,那把pwdDefaultEncryptSalt和lt的值拿到就可以了,lt用来发送,pwdDefaultEncryptSalt用来加密。
至此,脚本程序已经突破了反脚本策略,掌握以上的方法,80%的网站都不是问题

其他中难度和高难度

其他的我没动手实践过,但是应该是配合着selenium突破,因为这种他的请求参数往往很复杂,如果还坚持使用上一种方法那成本太高了。用selenium只需要模拟移动鼠标点击就可以了,滑动的就找缺口,然后模拟人类的行为进行滑动,滑动速度先快后慢。至于百度和谷歌那种太变态了,没思路。

结语

其实如果不是爬虫工程师的话能够突破低等和中等难度的已经够用了。对于低难度的可能我写的比较简单,但是有些基础的看了思路应该都能懂。对于中等难度的例子,说的也不是很详细。怎么说呢,个人经验吧,看到他我就想到这个机制可能是这样做的,然后就去验证自己的想法,然后就能突破他。毕竟你都知道他是怎么做的了,那基本也能知道怎么突破。可能我也是做开发的吧,换位思考一下如果是自己,自己怎么开发这个反脚本功能。就跟网络安全一样,如果你懂攻击那么自然懂怎么防御;你懂防御自然也懂怎么攻击,都是相通的。

python爬虫进阶,突破反脚本机制(反爬机制)相关推荐

  1. Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析

    上一篇:Python 爬虫入门篇-如何获取网页中的图片.我们了解到了 urllib 获取图片的原理,urllib.request.urlretrieve() 就是用来获取图片的. 这一篇,我们用正则表 ...

  2. Python爬虫进阶之起点中文网字体反扒保姆级教程!!!

    文章目录 1.网页查看 2.网页爬取代码 3.字体反扒研究 4.完整代码 本次字体反扒实验的网站是起点中文网 GlidedSky字体反扒详解 建议先看完本章 1.网页查看

  3. python爬虫进阶:异步请求几秒钟爬光网站的全部美女图片

    aiohttp模块 参考aiohttp库简单教程 - 简书 什么是aiohttp aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio的异步库.asyncio可以 ...

  4. python爬虫进阶-每日一学(字体反爬-移花接木)

    目的 分析与学习更多的字体反爬套路 详细需求 url:http://glidedsky.com/level/web/crawler-font-puzzle-2 思路解析 一.审查 二.分析 impor ...

  5. Python爬虫进阶——urllib模块使用案例【淘宝】

    Python爬虫基础--HTML.CSS.JavaScript.JQuery网页前端技术 Python爬虫基础--正则表达式 Python爬虫基础--re模块的提取.匹配和替换 Python爬虫基础- ...

  6. python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)

    爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...

  7. Python爬虫进阶五之多线程的用法

    前言 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理. 首先声明一点! 多线程和多进程是不一样的!一个是 thread ...

  8. 大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频

    大家好,我是辣条. 现在短视频可谓是一骑绝尘,吃饭的时候.休息的时候.躺在床上都在刷短视频,今天给大家带来python爬虫进阶 :美拍视频地址加密解析. 短视频js逆向解析 抓取目标 工具使用 重点学 ...

  9. Python 爬虫进阶篇——diskcache缓存

    在之前的python爬虫系列中介绍了几种爬取网页内容的方法以及request模块的相关内容,本次推文给大家介绍缓存相关的内容,选择的是diskcache即基于磁盘的缓存. 一.简介 DiskCache ...

  10. 一文看懂Python 爬虫 进阶(三)

    一文看懂Python 爬虫 进阶(三) 文章目录 一文看懂Python 爬虫 进阶(三) **猫眼电影(xpath)** **链家二手房案例(xpath)** **百度贴吧图片抓取** 这篇几乎都是代 ...

最新文章

  1. CVPR 2021 更好的Backbone,伯克利谷歌提出BoTNet,精度达84.7%
  2. 如何修改SAP标准数据元素文本
  3. 手把手带你复现ICCV 2017经典论文—PyraNet
  4. PHP进行生成并且导出CSV文件
  5. 无盘机服务器,无盘服务器操作系统
  6. linux线程基础篇----线程同步与互斥
  7. python列索引行的数据公式_用列和行索引函数填充dataframe缺失元素的最有效方法...
  8. 1290 the mysql_ERROR 1290:The MySQL server is running with the --secure-file-priv option
  9. execjs执行报: ‘gbk‘ codec can‘t decode byte 0xac in position 62: illegal multibyte sequence
  10. 测试总结该怎么写...
  11. vscode 使用技巧(持续更新)
  12. 向量函数具有固定模的充要条件
  13. 同济第七版高数资料(教材+习题解答)
  14. 单片机(STM32)内部RC振荡器误差时间到底有多少
  15. jmeter使用.jmx脚本
  16. ubuntn下串口工具minicom ,kermit的使用
  17. 诸葛新增快应用SDK,满足客户更多数据采集方案支持!
  18. 大华视频实时调用视频
  19. 华为鸿蒙亮利剑,华为亮利剑,超级主镜头+鸿蒙OS,所有期许或将如愿以偿
  20. matplotlib绘图颜色大全

热门文章

  1. linux 命令行视频播放器,linux下的命令行播放器moc
  2. (详细)分层强化学习-Random Network Distillation(RND)
  3. 鸿蒙系统手机开机,华为6月2日正式发布鸿蒙手机:鸿蒙系统开机界面放出!
  4. 图片如何清除杂物?这几款软件或许可以帮助你
  5. HTML5 | 实用Tips - 4 - 超链接样式大全
  6. 潭州课堂25班:Ph201805201 mongo数据 库 第八课 (课堂笔记)
  7. Cmake参数修改之CFLAGS和CXXFLAGS
  8. 求直线(线段)与直线(线段)的交点
  9. 计算直线与平面的交点
  10. charles mock数据