爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔...

Day 1

小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进自己的数据库。

这个站点的运维小黎发现某个时间段请求量陡增,分析日志发现都是 IP(1.1.1.1)这个用户,并且 useragent 还是 JavaClient1.6 ,基于这两点判断非人类后直接在Nginx 服务器上封杀。

Day 2

小莫电影只爬了一半,于是也针对性的变换了下策略:1. useragent 模仿百度("Baiduspider..."),2. IP每爬半个小时就换一个IP代理。

小黎也发现了对应的变化,于是在 Nginx 上设置了一个频率限制,每分钟超过120次请求的再屏蔽IP。 同时考虑到百度家的爬虫有可能会被误伤,想想市场部门每月几十万的投放,于是写了个脚本,通过 hostname 检查下这个 ip 是不是真的百度家的,对这些 ip 设置一个白名单。

Day 3

小莫发现了新的限制后,想着我也不急着要这些数据,留给服务器慢慢爬吧,于是修改了代码,随机1-3秒爬一次,爬10次休息10秒,每天只在8-12,18-20点爬,隔几天还休息一下。

小黎看着新的日志头都大了,再设定规则不小心会误伤真实用户,于是准备换了一个思路,当3个小时的总请求超过50次的时候弹出一个验证码弹框,没有准确正确输入的话就把 IP 记录进黑名单。

Day 4

小莫看到验证码有些傻脸了,不过也不是没有办法,先去学习了图像识别(关键词 PIL,tesseract),再对验证码进行了二值化,分词,模式训练之后,识别了小黎的验证码(关于验证码,验证码的识别,验证码的反识别也是一个恢弘壮丽的斗争史,这里先不展开....),之后爬虫又跑了起来。

小黎是个不折不挠的好同学,看到验证码被攻破后,和开发同学商量了变化下开发模式,数据并不再直接渲染,而是由前端同学异步获取,并且通过 js 的加密库生成动态的 token,同时加密库再进行混淆(比较重要的步骤的确有网站这样做,参见微博的登陆流程)。

Day5

混淆过的加密库就没有办法了么?当然不是,可以慢慢调试,找到加密原理,不过小莫不准备用这么耗时耗力的方法,他放弃了基于 HttpClient的爬虫,选择了内置浏览器引擎的爬虫(关键词:PhantomJS,Selenium),在浏览器引擎中js 加密脚本算出了正确的结果,又一次拿到了对方的数据。

小黎:.....

爬虫与发爬虫的斗争还在继续。

不过实际应用时候,一般大家做到根据 IP 限制频次就结束了,除非很核心的数据,不会再进行更多的验证,毕竟工程的问题一半是成本的问题。

至于高效部分,一些 Tips:

1.尽量减少请求次数,能抓列表页就不抓详情页

2.不要只看 Web 网站,还有 App 和 H5,他们的反爬虫措施一般比较少

3.如果真的对性能要求很高,可以考虑多线程(一些成熟的框架如 scrapy都已支持),甚至分布式

另外,想深入研究爬虫/反爬虫的同学,可以把简历发过来: shenyubaosouche.com ,本广告长期有效。

====

2016.1.3 修改几处 spider 拼写错误,感谢 @Danilo

python 反爬策略_如何应对网站反爬虫策略?如何高效地爬大量数据?相关推荐

  1. python应对反爬虫策略_如何应对网站反爬虫策略?如何高效地爬大量数据?

    看了回答区,基本的反爬虫策略都提到了,下面说几个作为补充. 1.对于处理验证码,爬虫爬久了通常网站的处理策略就是让你输入验证码验证是否机器人,此时有三种解决方法:第一种把验证码down到本地之后,手动 ...

  2. python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCl ...

  3. python爬虫可以爬取哪些有用的东西_有哪些网站用爬虫爬取能得到很有价值的数据?...

    有哪些网站用爬虫爬取能得到很有价值的数据? 题主是个web程序员,最近想转去做数据分析,先练习的爬虫(python),各种爬取技巧以及多网站爬取等已经掌握,但发现转方向最无奈的是方向(要抓什么数据来干 ...

  4. 【华为云技术分享】云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫

    反爬虫是一个复杂的过程,针对爬虫常见的行为特征,WAF反爬虫三板斧--Robot检测(识别User-Agent).网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)可以全方位帮您解决业务网站 ...

  5. gpo 软件限制策略_什么是GPO(组策略对象)? 如何在Microsoft Windows中使用,更改GPO?...

    gpo 软件限制策略 Group Policy is a feature provided by Windows operating systems in order to manage the di ...

  6. python爬取豆瓣电影信息可行性分析_Python爬虫实现的根据分类爬取豆瓣电影信息功能示例...

    本文实例讲述了Python爬虫实现的根据分类爬取豆瓣电影信息功能.分享给大家供大家参考,具体如下: 代码的入口:if __name__ == '__main__': main()#! /usr/bin ...

  7. python json提取器_【编号0004】爬虫中常用到的数据提取手段

    使用爬虫抓取网上公开的网页数据时,经常需要使用各种技能去解析到手的响应. 本篇文章,重点介绍下,数据提取时,有哪些常见的方法 0. 背景交代 编程语言:Python 提取方式:Python库 1. X ...

  8. 金蝶专业版怎么反过账当月_金蝶专业版怎么反过账

    金蝶专业版怎么反过账 1.进入主界面 2.同时按下ctrl+F11键-勾选"部分凭证反过账",如果是要全部反过账就可以不选 3.设置要反过账凭证字号,日期-完成 4.完成反过账后, ...

  9. python爬虫反爬策略_抖音字体反爬,爬虫字体反爬策略——每周一个爬虫小教程系列...

    在B站上看到一个关于抖音字体反爬的视频,看完之后,精神抖擞,不禁感觉,我又行了,于是在模拟器上下载了一个抖音,打开了我尘封已久的抖音号. 可以看见显示的数字是正常的,但是查看源码就是错误的. 既然是字 ...

最新文章

  1. Java项目:实现个人博客系统(java+springboot+mybatis+redis+vue+elementui+Mysql)
  2. boost::hana::first用法的测试程序
  3. 【工具】switchhost
  4. z-index的取值范围
  5. VS 2019 for Mac 第 3 个预览版发布,新编辑器、Xamarin 开发改进
  6. Java学习笔记基础(中)
  7. XmlHelpers
  8. 【React Native 安卓开发】----(mac下开发环境配置)【第一篇】
  9. 首席架构师是怎样炼成的?今晚直播!
  10. 打了两分钟国际长途,我又得给手机充话费了
  11. sap的清账是什么意思_sap F-30 什么时候会用到 过账并清帐是什么意思
  12. 企业经营核心要素框架
  13. matlab怎样编程形成软件_Matlab编程笔记之GUI程序转exe
  14. # 胡昌泽day2笔记
  15. 软考论文分享--论项目的沟通管理
  16. 工具说明书 - 英语语法检查工具Grammarly
  17. 数字电路基础知识——乘法器的设计(二)( 串行、流水线、有符号数八位乘法器)
  18. yandex 浏览器 linux,细致比拼 六大Android手机浏览器实测
  19. Unlabeled Samples Generated by GAN Improve the Person Re-identification Baseline in vitro 论文阅读
  20. css实现弧线,CSS3 彩虹弧线太极波动图

热门文章

  1. <select> 表单元素
  2. python读取log文件_python之文件的读写(文本文档,log文件)
  3. ps -ef | grep java
  4. Linux系统管理——系统启动和内核管理
  5. windows进程管理问题
  6. Springmvc Get请求Tomcat、WebLogic中文乱码问题
  7. FPGA实现VGA显示(一)——————屏幕驱动及color_bar显示
  8. 计算机通过逻辑电路实现运算,计算机组成与体系结构数据表示与运算算法和逻辑电路实现.ppt...
  9. c语言数字代码,小O的数字 (C语言代码)
  10. n维数组的操作-04-p2