概述
网络爬虫又称为“网络蜘蛛”,是一种按照一定的规则,自动抓取互联网信息的程序或者脚本。网络爬虫按照其使用用途可分为良性爬虫和恶意爬虫,良性爬虫就是通过正规途径和手段获取网站信息和数据,恶意爬虫主要用于非法盗窃数据,给网站服务器增加负担。为了提高网站的性能,保障网站安全性,降低其遭受攻击的风险,有必要对爬虫访问网站行为进行限制,因此需要进行爬虫检测,识别出爬虫行为还是普通用户行为。爬虫和普通用户的访问行为在许多方面存在差异,这些差异基于访问模式、访问频率、请求特征和并发性等因素。通过提取网站访问日志,从日志中提取访问会话,从会话中提取出不同维度的行为特征,以此来度量爬虫与普通用户会话的差异,进行后续的爬虫检测。
访问行为特征提取
1. 信息熵特征
不同类型网络爬虫访问网站内容针对性更强,要么都访问一个格式的文件,比如要么都是html,或者jpg等格式,而普通用户访问网站内容通常比较杂乱。用熵来度量访问网站内容的无序性,无序性越大,随机性越高,熵越大。无序性越小,随机性越低,熵越小。普通用户访问网站内容的熵往往比爬虫访问网站内容的熵更大。从会话的请求 uri中提取出请求文件后缀,判断请求文件类型,计算会话中请求不同类型文件的数目占总请求数的比例,从而计算信息熵值。
2. 周期性特征
爬虫访问网站比较有规律,访问的时间间隔相对固定,即频繁且具有一定的周期性,而普通用户访问网站具有突发性和随机性。如果将普通用户的访问看成是随机分布的话,那么爬虫的访问则可以看成是近似均匀分布,爬虫访问网站的周期性比普通用户访问网站的周期性更强。在一个会话中,将所有日志请求时间看成是离散时间序列,用相邻日志请求时间间隔最大重复率来度量请求周期性,如果一个会话的请求时间间隔最大重复率越大,则该会话的周期性越强。
3. 各种类型文件请求百分比
网站中包含了不同类型的文件,由于访问用途不同,爬虫用户与普通人类用户对不同类型文件的请求百分比不同。从会话的请求uri中提取出请求文件后缀,判断请求文件类型。分别计算出网页及文本文件、脚本文件、图像文件、多媒体文件、下载类文件及其他类型文件的请求数占会话总请求数的比例。
4. 请求频率
虽然存在部分爬虫模拟人类用户行为,将网站请求频率放低,但是爬虫与正常用户的请求频率仍存在一定差异。会话请求频率=会话中的总请求数/会话时间窗口。
5. 请求唯一页面数
统计一个会话中没有重复的网页及文本文件请求数。
6. 有效html请求数
统计一个会话中请求html页面类型,且响应状态码为200的请求数。
7. 有效请求总数
统计一个会话中,响应状态码为200的有效请求数。
8. 请求错误百分比
统计一个会话中,响应状态码为4xx的错误请求数占请求总数的比例。
9. 无referer请求百分比
统计一个会话中,referer字段为空的请求数占请求总数的比例。
10. 是否请求robots.txt文件
爬虫通常会访问robots.txt文件,而普通用户很少访问robots.txt文件。如果一个会话中请求了robots.txt文件,则该特征取值为1,否则为0。
11. 网页及文本文件请求总数
统计一个会话中网页及文本文件请求数。