爬虫原理及反爬虫机制以及反爬虫方法的应对策略

关于爬虫

爬虫原理

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,

沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;
在这里插入图片描述
爬虫的基本流程:
模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中
在这里插入图片描述

反爬虫机制

1.检验数据头User-Agent反爬虫机制解析:

当我们使用浏览器访问网站的时候,浏览器会发送一小段信息给网站,我们称为Request Headers,在这个头部信息里面包含了本次访问的一些信息,例如编码方式,当前地址,将要访问的地址等等。这些信息一般来说是不必要的,但是现在很多网站会把这些信息利用起来。其中最常被用到的一个信息,叫做“User-Agent”。网站可以通过User-Agent来判断用户是使用什么浏览器访问。不同浏览器的User-Agent是不一样的,但都有遵循一定的规则。
但是如果我们使用Python的Requests直接访问网站,除了网址不提供其他的信息,那么网站收到的User-Agent是空。这个时候网站就知道我们不是使用浏览器访问的,于是它于是它就可以拒绝我们的访问。

2.访问频率限制或检验

大多数情况下,我们遇到的是访问频率限制。如果你访问太快了,网站就会认为你不是一个人。这种情况下需要设定好频率的阈值,否则有可能误伤。如果大家考过托福,或者在12306上面买过火车票,你应该会有这样的体会,有时候即便你是真的用手在操作页面,但是因为你鼠标点得太快了,它都会提示你: “操作频率太快…”。
另外,还可以检验访问频率是否每一次都相同,如果都相同,那么一定是爬虫了.

3.蜜罐技术

蜜罐这个词,最早是来自于网络攻防中。一方会故意设置一个或者几个服务器,故意留下漏洞,让另一方轻易的入侵进来。这些被故意设置的服务器,就叫做蜜罐。里面可能安装了监控软件,用来监控入侵者。同时,蜜罐还可以拖延入侵者的时间。

在反爬虫的机制中,也有一种蜜罐技术。网页上会故意留下一些人类看不到或者绝对不会点击的链接。由于爬虫会从源代码中获取内容,所以爬虫可能会访问这样的链接。这个时候,只要网站发现了有IP访问这个链接,立刻永久封禁该IP + User-Agent + Mac地址等等可以用于识别访问者身份的所有信息。这个时候,访问者即便是把IP换了,也没有办法访问这个网站了。给爬虫造成了非常大的访问障碍。

反爬虫机制的应对方法

1.设定Request Headers中的User-Agent

检查User-Agent是一种最简单的反爬虫机制,而通过设定Request Headers中的User-Agent,可以突破这种机制。

2.设定随机访问频率

遇到访问频率限制可以采用设定随机访问频率的方式来突破.

3.代理IP或者分布式爬虫

另外,如果对页的爬虫的效率有要求,那就不能通过设定访问时间间隔的方法来绕过频率检查了,可以采用代理IP或者分布式爬虫:
代理IP访问可以解决这个问题。如果用100个代理IP访问100个页面,可以给网站造成一种有100个人,每个人访问了1页的错觉。这样自然而然就不会限制你的访问了。
分布式爬虫会部署在多台服务器上,每个服务器上的爬虫统一从一个地方拿网址。这样平均下来每个服务器访问网站的频率也就降低了。由于服务器是掌握在我们手上的,因此实现的爬虫会更加的稳定和高效。

3.对于蜜罐技术可以采用定向爬虫

由于定向爬虫的爬行轨迹是由我们来决定的,爬虫会访问哪些网址我们都是知道的。因此即使网站有蜜罐,定向爬虫也不一定会中招。

参考博客:
https://www.cnblogs.com/sss4/p/7809821.html
https://blog.csdn.net/lujuntong/article/details/81952519

  • 13
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Selenium是一款非常强大的Web自动化测试工具,它可以模拟真实用户对网站的访问行为,因此被广泛应用于爬虫领域。当然,由于爬虫会对网站造成一定程度的压力,许多网站都会采取爬虫策略,Selenium也不例外。以下是Selenium常见的爬虫策略: 1. 检测浏览器类型:许多网站会检测你使用的是哪种浏览器,如果发现你使用的是Selenium中的webdriver,则会将你识别为爬虫并拒绝访问。 2. 检测浏览器驱动版本:与浏览器类型类似,有些网站会检测你使用的浏览器驱动版本是否符合要求,如果不符合,则会拒绝访问。 3. 检测JavaScript执行:大部分网站都会依赖JavaScript来渲染页面和执行某些操作,因此如果检测到你的Selenium没有启用JavaScript,则会拒绝访问。 4. 检测窗口尺寸:有些网站会检测你的窗口尺寸是否符合要求,如果不符合,则会拒绝访问。 5. 检测访问频率:过于频繁的访问同一个页面会被认为是爬虫行为,因此有些网站会设置访问频率限制。 为了规避这些爬虫策略,我们可以采取以下方法: 1. 设置随机的User-Agent和代理IP,以避免被检测到Selenium中的webdriver。 2. 定期更新浏览器驱动版本,并且设置随机的驱动路径。 3. 启用JavaScript执行,并且模拟真实用户的鼠标点击、滚动等操作。 4. 设置随机的窗口尺寸,并且在操作之前先最小化窗口。 5. 控制访问频率,并且设置随机的访问间隔时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值