网站如何禁止DotBot、AhrefsBot、SemrushBot、PetalBot等垃圾爬虫的抓取
时间:2022年03月19日
/来源:网络
/编辑:佚名
最近在维护客户网站是发现网站大量流量,看一下网站响应日志,有不明的访问来源,看下记录是
useragent为"Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)",AhrefsBot是国外的搜索引擎蜘蛛。不过对你的网站来说除了浪费资源外,没有任何好处。网站爬虫疯狂爬数据,给服务器带来不小压力,建议必要时可以禁止一些没有用的爬虫访问。
如何屏蔽一些不需要的网站爬虫或者垃圾爬虫?
方法1:通常来说,只要是遵循robots规则的蜘蛛或者爬虫,都可以使用robots.txt来禁止它爬取,可以在网站目录的robots.txt文件,通过robots.txt协议禁止;
华为花瓣搜索引擎蜘蛛:PetalBot
蜘蛛爬虫UA:"Mozilla/5.0 (compatible; PetalBot;+https://webmaster.petalsearch.com/site/petalbot)"
屏蔽规则:
User-agent: PetalBot
Disallow: /
AhrefsBot爬虫
蜘蛛爬虫UA:"Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)"
屏蔽规则:
User-agent: AhrefsBot
Disallow: /
DotBot爬虫
Moz蜘蛛爬虫UA:"Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)"
屏蔽规则:
User-Agent: DotBot
Disallow: /
MJ12bot爬虫
蜘蛛爬虫UA:"Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
屏蔽规则:
User-Agent: MJ12bot
Disallow: /
SemrushBot爬虫
蜘蛛爬虫UA:"Mozilla/5.0 (compatible; SemrushBot/3~bl; +http://www.semrush.com/bot.html)"
屏蔽规则:
#屏蔽SemrushBot
User-agent: SemrushBot
Disallow: /
User-agent: SemrushBot-SA
Disallow: /
如何降低爬虫的抓取速度?Crawl-Delay:5 延迟5秒.
方法2:直接屏蔽网站爬虫的IP段,是最简单粗暴,效果立竿见影的方法。
78模板网以AhrefsBot爬虫举个例子:
AhrefsBot的IP段
通过对一天的网站日志进行分析,你们猜猜一共有多少个不同的AhrefsBot蜘蛛ip来抓取网站数据?
ahrefs.com/robot
54.36.150.145
54.36.150.133
54.36.150.111
54.36.150.87
54.36.150.75
54.36.150.49
54.36.150.36
54.36.150.22
54.36.150.27
54.36.150.92
54.36.149.106
54.36.148.228
54.36.148.212
54.36.148.176
54.36.148.179
54.36.148.163
54.36.148.155
54.36.148.128
54.36.148.105
54.36.148.59
54.36.148.56
54.36.148.60
54.36.148.30
54.36.148.15
54.36.149.76
官方公布的AhrefsBot爬虫IP段如下:
54.36.148.0/24
54.36.149.0/24
54.36.150.0/24
195.154.122.0/24
195.154.123.0/24
195.154.126.0/24
195.154.127.0/24
如何直接封AhrefsBot ip段
被AhrefsBot蜘蛛爬取的站服务器用的是阿里云,阿里云后台有安全组可以使用,所以直接屏蔽AhrefsBot的IP段,是最简单粗暴,效果立竿见影的方法。
进入阿里云后台,进入你的服务器列表,点击服务器的安全组,配置安全组规则。
按照上图的方法配置,把下面这些ip段全部添加进去就行了。
方法3:apache通过.htaccess和Nginx通过.conf屏蔽网络爬虫访问;
Nginx屏蔽爬虫访问站点方法:
#禁止 Scrapy 等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止指定 UA 及 UA 为空的访问
if ($http_user_agent ~ "yisouspider|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
return 403;
}
#禁止非 GET|HEAD|POST 方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
在apache禁止蛛蛛访问,在修改网站目录下的.htaccess,添加如下代码即可:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|yisouspider|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]
RewriteRule ^(.*)$ - [F]