干掉各搜索引擎的爬虫

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

国内国外爬虫一览

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

国内爬虫名称国外爬虫名称
头条爬虫Bytespider谷歌蜘蛛Googlebot
百度蜘蛛BaiduSpiderYandexYandexBot
360蜘蛛360SpiderAlexaia_archiver
搜狗蜘蛛Sogou News SpiderTwitterTwitterbot
SOSO蜘蛛SosospiderAhrefsAhrefsBot
一搜蜘蛛YisouSpiderFacebookFacebot
宜搜蜘蛛EasouSpiderezoomsezooms.bot
即刻蜘蛛JikeSpider雅虎英文Yahoo! Slurp
有道蜘蛛YodaoBotYandexMobileYandexMobileBot
雅虎中文Yahoo! Slurp ChinaMajesticMJ12bot
必应蜘蛛bingbotMozDotBot
MSN蜘蛛msnbotSEMrushSemrushBot
MSN蜘蛛2msnbot-mediaDuckDuckGoDuckDuckGo-Favicons-Bot

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

阻止爬虫爬取

本来,使用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://www.yeahwu.com/robots.txt

1
2
User-agent: *
Disallow: /

由于上面的方法不是很凑效,于是俺们还是简单粗暴地使用 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,强制关闭服务器与客户端的连接而不返回任何响应信息给客户端。

Bitcoin:1MQ3DJHnEdkP9scCiA1pGXTe9wyBmDtrvv