数据采集:要小心爬虫的行为检测

爬虫不是真实用户,其行为模式与真实用户不同。因此,平台经常检测用户行为模式,以识别当前用户是人类还是爬虫机器。这个平台是通过哪些方式测试的?我们来看看下面的小编。
 
1.访问内容。
 
爬虫通常不抓取css、js和其他资源文件。如果是垂直爬虫,访问数据的目的往往很明显。如果某些IP访问某些数据的频率高于正常情况,而这些IP没有访问任何其他资源,那么可以断定它是一个爬虫。
 
2.访问频率。
 
频率限制:每分钟访问次数超过n次的IP被屏蔽。如果3小时内有50次以上的访问,会弹出一个验证框。如果验证内容输入不正确,将被列入黑名单。
 
做一个计数器记录一天的总次数和特定ip的每秒频率,从而达到实时拦截的目的(这个类似淘宝的TMD使用分布式缓存进行计数,超出规则,或者直接拒绝或者跳转到输入验证码的页面)。
 
 
3.港口检查。
 
检查端口80与netstat的连接:
 
sh netstat-nt | grep you hostip:80 | awk ' ' | awk-F ":" " | sort | uniq-c | sort-r-n
 
在这一行中,shell可以根据80端口连接数对源IP进行排序,从而直观地判断网络爬虫。一般来说,爬虫的并发连接非常高。封锁爬虫直接所在的C网段的地址。这是因为一般的爬虫都是在托管机房运行的,一个C段可能有多个服务器上的爬虫,但是这个C段不能是用户的宽带上网。阻塞C段可以在很大程度上解决问题。
 
4.js埋点。
 
对比apache或nginx日志分析与js埋点,当爬虫请求无法模拟浏览器请求时,js代码无法执行,页面上没有埋点,但这个请求会留在web日志中。js有一个小问题,就是当用户请求时,如果浏览器有缓存,其实并不会请求服务器,但是js确实埋了一个点,对比分析后效果会好很多。
 
5.访问间隔的规律性。
 
爬虫抓取网页的频率是相对固定的,不像人访问网页,两者之间的间隔时间是比较不规律的,所以我们可以为每个IP地址设置一个时间窗口,记录下该IP地址最近12次的访问,每条记录滑动一次窗口,将最近的访问时间与当前时间进行比较。如果间隔较长,判断不是爬虫,则清除时间窗口;如果间隔不长,追溯计算指定时间段的访问频率;如果访问频率超过阈值,请转到验证码页面,让用户填写验证码。
 
综上所述,网络爬虫毕竟不是人,会留下痕迹。因此,为了获取信息,爬虫需要先伪装数据的各个方面。对于无法伪装的数据——IP地址,可以使用IP模拟器进行IP地址的切换,使数据能够顺利采集。