终极反爬虫:让爬虫爬假数据或者假页面(和真的结构上几乎没有区别),让爬虫开发者意识不到自己的错误。最后爬虫开发者被离职~~
1. 请求头验证。
浏览器访问网站的时候除了会发送url,参数等内容外,还会给服务器端传递一些额外的请求头(request header)。例如User-Agent,referer,host等等。简单的爬虫不做处理发送请求相关的请求头要么为空,要么没有,要么内容不对。
反爬虫
我们可以在服务端通过请求头的验证来预防简单的爬虫
应对方法
爬虫程序设置合适的请求头来模拟浏览器的访问
2. ip访问频率限制
反爬虫
服务端可以增加对ip访问频率的限制,当超过频率就可以认为是爬虫
应对方法
我们可以设置每一次爬取的时间间隔(或者随机时间间隔更好)长一点儿。或者通过伪装ip,ip代理的方式来设置不同的ip地址。
- 伪装ip
爬虫增加x-forwarded-for请求头设置随机ip地址。
- 使用ip代理
实现准备大量的ip代理服务器组成ip池,然后每一次请求都从ip池中取一个作为ip代理服务器发送请求
反爬虫
- 针对第一种应对方法我们可以在对外的nginx反向代理中设置x-forwarded-for请求为
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#配置了这个服务端才能拿到真实的IP地址
proxy_set_header X-Forwarded-For $remote_addr;#最外层的nginx直接覆盖掉x-forwarded-for请求头内容为真实ip
3. 蜜罐技术
反爬虫
在网页中设置一些隐藏的链接,这些链接在浏览器上是看不到的,所以用户也是点击不到的。但是爬虫有可能会点击到。如果有请求点击到了,可以认为是爬虫
应对方法
需要手动去研究网页的内容了,找出这些链接的规律然后排除
4. 不同类型的源代码格式
反爬虫
相同类型的网页用不同的格式来编写页面,这样爬虫开发者在分析页面的时候可能会遇到困难
应对方法
没办法,研究页面
5. 验证码,滑动解锁之类
反爬虫
需要用户输入验证码或者滑动解锁以后才能进行登陆
应对方法
- 验证码的话,可以考虑机器学习图像识别来训练验证码识别模型
- 滑动解锁可以考虑使用selenium结合图像识别来自动滑动滑块实现滑动解锁
网友评论