干掉各搜索引擎的爬虫

对于个人小站,经不起各大seo引擎搜索的蜘蛛一次又一次访问爬取,耗费站点流量先不谈,主要是这些爬虫像一堆苍蝇,把俺的站点当成了公共厕所,这就恶心了。点名头条家的爬虫,太尼玛不要脸了,俺站点的流量它家占了一大半。

国内国外爬虫一览

首先,来晒一下这些流氓们:

国内爬虫 名称 国外爬虫 名称
头条爬虫 Bytespider 谷歌蜘蛛 Googlebot
百度蜘蛛 BaiduSpider Yandex YandexBot
360蜘蛛 360Spider Alexa ia_archiver
搜狗蜘蛛 Sogou News Spider Twitter Twitterbot
SOSO蜘蛛 Sosospider Ahrefs AhrefsBot
一搜蜘蛛 YisouSpider Facebook Facebot
宜搜蜘蛛 EasouSpider ezooms ezooms.bot
即刻蜘蛛 JikeSpider 雅虎英文 Yahoo! Slurp
有道蜘蛛 YodaoBot YandexMobile YandexMobileBot
雅虎中文 Yahoo! Slurp China Majestic MJ12bot
必应蜘蛛 bingbot Moz DotBot
MSN蜘蛛 msnbot SEMrush SemrushBot
MSN蜘蛛2 msnbot-media DuckDuckGo DuckDuckGo-Favicons-Bot

这些大部分是俺从日志文件里扒出来的,可能有误伤,遗漏,大家将就着看,下面来说说怎么干掉这些流氓。

阻止爬虫爬取

有三种方法可以阻止这些爬虫爬取,效果不一。

1:server段添加add_header头,阻止爬虫爬取,效果不是很理想,如下:

add_header X-Robots-Tag "noindex, nofollow";

2:使用robots.txt文件可以阻止爬虫爬取,但是有些流氓不遵守robots规则,这种方法几乎无效,还是把方法写下来。

打开nginx.conf文件,server段添加如下内容:

1
2
3
4
location /robots.txt {
default_type text/plain;
return 200 "User-agent: *\nDisallow: /";
}

保存,重启nginx后,浏览器在主域名后添加 /robots.txt 显示如下,即为成功。参考:https://hostalk.net/robots.txt

1
2
User-agent: *
Disallow: /

3:由于上面的方法不是很凑效,于是俺们还是简单粗暴地使用 http_user_agent 来屏蔽。方法如下,

打开nginx.conf文件,server段添加如下内容:

1
2
3
4
5
if 
($http_user_agent ~* "Bytespider|SEMrushBot|DuckDuckGo-Favicons-Bot|dark_NeXus_Qbot|360Spider|YisouSpider|YodaoBot|Sosospider|Sogou web spider|msnbot-media|msnbot|ia_archiver|EasouSpider|JikeSpider|ezooms.bot|Twitterbot|Facebot|AhrefsBot|SemrushBot|Baiduspider|YandexBot|YandexMobileBot|DotBot|MJ12bot|bingbot|Java|perl|Python|Wget|Xenu|^$")
{
return 444;
}

直接返回444,强制关闭服务器与客户端的连接而不返回任何响应信息给客户端。