Nginx网站屏蔽百度搜索引擎蜘蛛方法

2019年4月14日19:50:29Nginx网站屏蔽百度搜索引擎蜘蛛方法已关闭评论 97 views

因为博客偶尔发一些翻墙相关的文章,所以不想让墙内的搜索引擎蜘蛛比如百度、360、搜狗、神马、有道等爬取到不和谐的内容,只想低调不出众的安安分分分享自己的喜欢东西。

通常的做法是使用robots.txt来限定搜索引擎的可收录范围,但这个仅仅是个规约并不能保证所有网络爬虫都会遵循它,所以除了给出明确的robots.txt协议,我们还需要通过User-Agent进一步的做限制。

Robots.txt的方式禁止爬取目录

前提是那些蜘蛛遵守规约,但不是所有蜘蛛都会遵守规约的。

比如小冷博客目前使用禁止所有蜘蛛爬取以下目录内容。我这样只是禁止爬取某些目录和页面,并不是所有文章都禁止。

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /*/comment-page-*
Disallow: /*?replytocom=*
Disallow: /*/*page/*
Disallow: /category/*/page/
Disallow: /tag/*/page/
Disallow: /*/trackback
Disallow: /feed
Disallow: /*/feed
Disallow: /comments/feed
Disallow: /?s=*
Disallow: /*/?s=*
Disallow: /attachment/
Disallow: /demo/

或者可以对不同蜘蛛分别对待

User-agent: Baiduspider
Disallow: /
User-agent: YoudaoBot
Disallow: /
User-agent: *
Disallow: /admin/

Nginx UA禁止

在nginx的server字段中配置下面内容 保存即可

#屏蔽国内搜索引擎蜘蛛抓取收录网站
if ($http_user_agent ~* (baiduspider|360spider|haosouspider|soso|sogou|sohu-search|yodao|YoudaoBot|yisouspider)) {
 return 403;
 }

如果只想单独屏蔽百度

#屏蔽百度蜘蛛
if ($http_user_agent ~* baiduspider){
return 403;
}

return 403可以改成503、500、444或者指定一个跳转到页面链接

Nginx网站屏蔽百度搜索引擎蜘蛛方法

这里分享一个收集到的比较全的蜘蛛列表 搜索引擎蜘蛛代码大全,其他需要请自己搜索。如果你只是想屏蔽一些垃圾蜘蛛爬取占用网站资源,这里有一份列表Nginx 屏蔽垃圾網頁蜘蛛配置文件

if ($http_user_agent ~* "baiduspider|360spider|haosouspider|googlebot|soso|bingbot|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler|Googlebot-Mobile|Googlebot-Image|yisouspider") 
{ 
return 403; 
}

最后我们也可以封禁蜘蛛的IP 禁止它的爬取。

淘宝robots.txt屏蔽百度蜘蛛实例

https://item.taobao.com/robots.txt

看了一下淘宝商品域名下的 robots.txt ,其实完全没有必要刻意指出屏蔽百度爬虫,因为在允许Google、Bing和Yahoo的爬虫后,最后一个 User-Agent: * 已经屏蔽掉剩下的爬虫了。这么刻意的将百度的爬虫指出来单独Disallow,看来两家积怨很深啊……@chenshaoju

User-agent: Baiduspider
Disallow: /

User-agent: baiduspider
Disallow: /

User-Agent: Googlebot
Allow: /item.htm
User-agent: Bingbot
Allow: /item.htm
User-Agent: Yahoo! ?Slurp
Allow: /item.htm
User-Agent: *
Disallow: /

Nginx网站屏蔽百度搜索引擎蜘蛛方法