爬虫是一种模拟浏览器对网站发起请求,获取数据的方法。简单的爬虫在抓取网站数据的时候,因为对网站访问过于频繁,给服务器造成过大的压力,容易使网站崩溃,因此网站维护者会通过一些手段避免爬虫的访问,以下是几种常见的反爬虫和反反爬虫策略:
爬虫 | 网站 | |
应对策略 | 对网站发送请求,获取数据 | 监控发现某段时间访问陡增,ip相同,user-agent都是python,限制访问(不能封ip) |
模拟User-Agent,获取代理IP | 访问量仍然异常,要求登录后才能继续访问 | |
注册账号,访问时带cookie或token | 健全账号体系,即只能访问账号下的好友的信息 | |
注册多个账号,联合爬取 | 请求过于频繁,进一步限制IP访问频率 | |
模仿用户操作,限制请求速度 | 弹出验证码识别 | |
通过相应的验证码识别手段(如云打码,opencv识别等) | 动态加载网站,数据通过js加载,增加网络分析难度 | |
通过selenium和phantomjs完全模拟浏览器操作 |
关于网站动态加载的方法,还能一种反反爬虫的方法:找到其api的接口,这里有一个爬取B站视频信息的实例就是使用的这种方法,地址:https://github.com/iszoop/BilibiliSpider