Python爬虫、反爬虫和反反爬虫

我主要对反爬虫和反反爬虫作一个简单的总结html

我想补充一下关于爬虫和反爬虫,以及为何要爬虫,为何要反爬虫,也就是从技术和技术带来的影响的角度来看待爬虫。发现一个颇有意思的连接,前端

爬虫、反爬虫、反反爬虫python

 

1 爬虫、反爬虫、反反爬虫

爬虫 —— 使用任何技术手段批量获取网站信息的一种方式,关键在批量。数据库

反爬虫 —— 使用任何技术手段,阻止别人批量获取本身网站信息的一种方式。关键也在于批量。浏览器

误伤 —— 在反爬虫的过程当中,错误的将普通用户识别为爬虫。误伤率高的反爬虫策略,效果再好也不能用。安全

拦截 —— 成功地阻止爬虫访问。一般来讲,拦截率越高的策略,误伤率就越高,所以要作权衡。cookie

资源 —— 机器成本与人力成本的总和。分布式

2 常见的爬虫、反爬虫、反反爬虫手段

爬虫、反反爬虫 反爬虫
对某个网站或者APP的数据感兴趣。 [1]  
首先分析网站/APP [2]的请求与返回数据,而后用python,或Java,或网上免费的抓取软件,不断遍历某列表抓取数据存数据库。  
  zabbix等监控显示某时间段请求陡增,ip相同,useragent仍是JavaClient,直接Nginx封杀这个ip
useragent模仿谷歌或者百度浏览器,再获取十几个代理ip,爬的过程当中不断轮询替换ip  
  发现ip不断变化,直接每次请求添加用户是否登陆的校验
经过注册等各类方法,获取一个真实帐号,模拟登陆,每次请求携带登陆产生的cookie或者token  
  健全帐号权限体系,即拥有A的帐号,没法获取帐号B的数据访问权限。
设置定时器,简单粗暴的直接爬取全部能爬取的数据  
  针对多IP的高频访问,Nginx设置频率限制,如某个ip短期访问超过必定次数就直接屏蔽,必定程度增长爬虫方获取有效IP的成本
写代码爬取ip代理网站,或者批量购买高匿代理ip,几千IP轮询爬  
  在访问频率上继续作文章,升级ip限制策略,加大ip限制的成功率。
ip大量被封,为了解决这问题,开始模拟人类请求特征,好比每半小时爬取改成随机1-3秒爬一次,爬10次休息10秒,天天只在8-1218-0点爬,隔几天还休息一下。再好比为了减小请求,能只抓列表页就不抓详情页  
  此刻再在访问频率上作限制,可能会误伤真实用户。若是网站类型不太注重用户体验,能够访问必定次数强制弹框要求输入验证码
简单的验证码,彻底能够自学图像识别的教程(关键词PILtesseract),对验证码进行二值化预处理,分割,模式训练后,识别验证码  
  针对具备用户行为的爬虫,首先要明白,爬虫与人类在访问特征上最大的不同在于,人不会长时间持续访问一个网站,而爬虫的访问数量会随着时间增加而线性增加。根据这特征,分析请求日志,设置ip黑名单
因为各类限制,单个爬虫轮询ip模拟用户行为进行爬取,效率已经大大下降。这个时候有条件,能够考虑分布式,跨省跨机房,利用ADSL进行长期爬取  
  既然没法避免被爬,那就继续加大对方爬取成本
若是死磕到底。。  
  只能硬着头皮和他继续死磕,直到一方由于机器成本与人力成本问题放弃。

3 为何须要反爬虫?

l  公司的重要资源被批量爬取,丧失竞争力。网站

l  爬虫占总PV比例过高,由于高访问量浪费了太多钱。加密

l  爬虫拖垮了站点,严重影响了用户体验。

l  资源被爬取难以起诉成功,对方能够肆意爬取

4 反爬虫的一些措施

反爬虫的关键在于阻止被批量爬取,重点在批量。反爬虫技术的核心在于不断变动规则,好比不断变动验证码。咱们在内容上能够作以下文章:

l  网站不一样地方的文本内容添加不一样的自带标签,增长对方数据清理难度。

l  关键数据由文本转图片,甚至添加水印等。目前市场上图片ocr识别没法有效转文字,让对方即便获取了图片也没法有效使用。

l  网站相关页面的列表查询,限制总页数的展现。好比数据一共1K页,相关接口却只对外展现前十页。对方找不到入口最多爬取10页数据。

l  间接关闭网站核心数据查看入口,好比内容的查看像百度文库同样改成word、pdf或者ppt下载模式,高频下载须要验证码或者帐号积分。

l  网站不提供注册入口,或者注册须要内部推荐或者评审,加大爬虫方获取帐号的难度。

l  网站的请求url复杂化,好比弄的像淘宝同样没有规律,id改成UUID等。

l  前端页面尽量不暴露数据的惟一键,对惟一键如主键id等进行假装,能够增长对方爬取后的去重成本。由于对方爬数据多是在你的多个模块页面进行多维度爬取,会有大量的重复数据。

l  前端html页面别一次性加载列表,根据用户点击js动态加载。即查询页面源码时,只能看到列表的第一条数据。

l  当肯定访问异常时,大量返回虚假数据。爬虫几乎没有判断数据真假的能力,只有人才有。对方发现的越晚,咱们的处理应对时间就越充裕。

l  核心数据提升安全等级,单独加密等。