
反爬虫,是指对扫描器中的网络爬虫环节进行反制。通过一些反制策略来阻碍或干扰爬虫的正常爬行,从而间接地起到防御目的。爬虫的反制策略有很多,总体可将其归为两大类。
这样扫描器在爬取的过程中,就可以利用anti_scan_crawl.php记录和存储扫描器的IP信息,如下:
然后对这些IP进行回溯分析和跟踪确认,从而形成扫描的黑IP库,最后就可以对这些黑IP库采取相应的封禁措施。
有的扫描爬虫单纯正规买球的网站为了爬取链接,并不会对Cookie进行处理和响应。由于Cookie是浏览器必须遵循的一个机制,因此可以在Response的响应头中增加下面信息:
然后,通过对访问日志中的Cookie信息进行分析和提取,找到那些可疑的非浏览器IP。在实际应用中,需要通过关联信息进行二次分析和确认,然后再进行相应的封禁处理。
最后,计算每组数列的方差,而其中方差较小的IP地址极有可能为扫描器IP。
通过对这次实际样本分析结果,可以得出一个初步的结论:爬虫的方差阈值为50W,当方差小于50W的时候,该IP的请求极有可能是由爬虫发起的。当然,在实际的应用中,还需要进行大量的样本分析和确认工作,这里的目的只是介绍一种可行的思路。
基于爬行的反爬虫,其思路主要是在爬虫的爬行中设置爬行障碍,让其陷入死循环;或者用一些无意义的URL来填充其爬行队列,从而阻止其对正常URL进行后续的漏洞审计。
爬虫在爬行的过程中,通常需要对HTML文件进行页面解析,获取新的URL。但如果该HTML文件过大,那么在长连接模式下,HTTP协议就会采用chunked编码的方式将内容分块输出,这样就会使爬虫陷入较长时间的等待,从而影响其后续正常的爬取,举例如下。
为了保证自身的稳定性和健壮性,避免运行过程中的内存溢出,通常爬虫都会设定爬行队列的上限。因此,可以在页面中填充大量的无效URL,这样就能提前终止爬虫的后续爬行。通过下面的代码可以生成指定数量的随机链接,如下: