Java 杂谈Java

反爬虫机制与应对方法

2019-08-21  本文已影响0人  bugWriter_y
spider.jpg

终极反爬虫:让爬虫爬假数据或者假页面(和真的结构上几乎没有区别),让爬虫开发者意识不到自己的错误。最后爬虫开发者被离职~~

1. 请求头验证。

浏览器访问网站的时候除了会发送url,参数等内容外,还会给服务器端传递一些额外的请求头(request header)。例如User-Agent,referer,host等等。简单的爬虫不做处理发送请求相关的请求头要么为空,要么没有,要么内容不对。

反爬虫

我们可以在服务端通过请求头的验证来预防简单的爬虫

应对方法

爬虫程序设置合适的请求头来模拟浏览器的访问

2. ip访问频率限制

反爬虫

服务端可以增加对ip访问频率的限制,当超过频率就可以认为是爬虫

应对方法

我们可以设置每一次爬取的时间间隔(或者随机时间间隔更好)长一点儿。或者通过伪装ip,ip代理的方式来设置不同的ip地址。

爬虫增加x-forwarded-for请求头设置随机ip地址。

实现准备大量的ip代理服务器组成ip池,然后每一次请求都从ip池中取一个作为ip代理服务器发送请求

反爬虫
#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. 验证码,滑动解锁之类

反爬虫

需要用户输入验证码或者滑动解锁以后才能进行登陆

应对方法
上一篇下一篇

猜你喜欢

热点阅读