日常生活中,我们或多或少的会需要一些网络资源。如果通过传统的方式去获取,可能就会耗去很大的人力成本。而利用自动爬取的方式获取资源可以给我们省去很多事。不过当你定期去爬取一些资源,尤其是在同类网站上爬取的次数比较多的时候,你可能就会遇到两方面的问题。即爬取资源后有无被起诉风险和代理是否容易被封禁。
网站如何识别和封禁爬虫机器人
为了防止代理服务器被封禁或被列入黑名单,首先我们需要了解网站如何识别并封禁爬虫机器人,
其实,网站和那些资源爬取者之间的关系有点类似于猫鼠游戏关系,而基于大家都在不断改变策略,使得这场猫鼠游戏变得越来越复杂。当网站采用新方法来防爬虫,那些爬取资源者也会通过新方法来隐藏足迹。
区分真实用户和爬虫机器人然后封禁爬虫机器人,这整个过程并不像看上去那么简单。
其实这个里面包含有三个必不可少的步骤:
- 1. 把一些看似可疑的行为检测出来,并进行标记。
- 2. 将这些标记储存在服务器里,看看后续这些用户是否还有类似行为。
- 3. 一旦发现多次出现类似的爬取行为,就进行封禁处理或直接将其加入黑名单。
作为ForNova的联合创始人兼首席科学家和Oxycon的客座嘉宾,Dmitry Babitsky告诉我们,下面这些是网站用来识别爬虫机器人的最常见途径:
- 大量异常请求和URL。
- 缺少Cookie – 如果不使用Cookie进行连接,则看起来非常可疑。但是,如果有Cookie,网站可以使用它们来跟踪大家线上的一些行为和活动。
- 不同请求属性之间的不匹配 – 一定要确保IP的位置与语言和时区匹配。
- 网络实时时钟泄漏了真实IP地址。
- 可疑的浏览器配置 – 例如,禁用的JavaScript。不同的浏览器具有不同的JavaScript版本。根据特定版本支持的功能和其他条件,该网站可以轻松识别您的浏览器。
- 非人工操作行为 – 网站跟踪很难真实模拟的鼠标和键盘事件。与机器人不同,人类是不可预测的。
- 浏览器性能分析以及与类似配置的比较。
不过,识别只是第一步。网站变得可疑之后,它们可能会采用不同的方法,进一步跟踪和评估,比如显示一个可以被抓数据的404错误页面,甚至是向用户发送一些假数据以用来检测用户是否用了爬虫。
如何确保代理不被封禁?
想要确保代理不被封禁,可以遵循以下原则:
1.尊重网站通常友善可以解决不少问题。尊重网站的爬网策略将确保获得最佳结果。大多数网站都有一个robots.txt文件(存储在根目录中),其中详细说明了一些规则,例如哪些内容可以被抓取,哪些内容不能被抓取以及爬取资源的频率。
另外就是要注意看站点的服务条款(ToS)。这个里面会列出哪些数据是公开的,哪些是受版权保护的,以及获取目标服务器资源的方式。
2.使用多个真实用户代理用户代理的HTTP请求会通过header文件将信息(例如应用程序类型,操作系统,软件及其版本)传递给目标服务器,并允许目标服务器判断用户使用的是电脑还是移动设备,以匹配设备,用兼容的视图显示出来。
如果使用空的或异常的用户代理,就很有可能被站点标记,因此要确保使用常用配置这样不容易被识别。此外,从单个用户代理发出太多请求也不是什么好事,很容易被侦测出来,所以要通过切换header文件来模拟多个自然用户。 这样不容易被识别。此外,从单个用户代理发出太多请求也不是什么好事,很容易被侦测出来,所以要通过切换header文件来模拟多个自然用户
3. IP地址轮换在爬取资源时,如果从同一个IP地址发出大量请求,这个IP肯定会被封禁。因此,就需要多个代理。爬取的数据越多,需要使用的代理也就越多。使用多个代理爬取资源就需要用到代理轮换解决方案。
4.放慢抓取频率,调整抓取间隔为随机时间爬虫机器人从目标网站爬取数据的速度要比人手动去拿数据快很多倍。所以一看就是机器行为,立即就引起了怀疑。实际上,请求数太多会造成目标服务器过载,就会出现不响应的情况。
解决方案就是为请求配置随机休眠间隔(例如3-10秒),抓取资源多了后,这个时间间隔就要配置的更长一点,以免被网站侦测出来。并发请求越少越好。
5.偶尔更改爬取模式嵌入在目标网站中的反机器人系统可以通过发现爬虫在网站上的疑似行为和导航方式来检测到爬虫工具。所以为了防止被封禁,其他行为也要设置为随机,例如鼠标移动,单击或滚动。行为越不可预测,在目标站点的角度上看起来就越人性化。
总结
本文概述的技巧只是那些在数据收集方面经验丰富的人为了防止其代理被列入黑名单所用的方法。事实是,在所有的目标网站上,没有任何一种策略可以100%地起作用,并且能一直确保平稳运行。想要一直稳定爬取资源,就需要不断进行更改和试验。尽管如此,本文中提供的建议还是有参考价值。至少对绝大多数人来说,是一个好的开始。