Nginx禁止GoogleBot抓取
   点滴记录   0 评论   130 浏览

Nginx禁止GoogleBot抓取

   点滴记录   0 评论   130 浏览

起因

打开宝塔监控面板,看到储存容量从6天前的14G上升到26G(我一般设定的计划是每周清理一次日志和tv.rawchen.com的影视资料缓存),好家伙,我又分析了下日志,也才2G多,另外的10G文件根据之前经验应该全是那个影视站的缓存了。接着查看带宽情况时发现下载速度400k/s,好家伙,我这1M带宽服务器速度都跑满了。也就是说有大流量持续访问我的几个站点,根据经验我再次查看影视站点响应日志。

好家伙,每秒4-5次的请求量,查询ip发现还大部分流量来自中国-北京-北京-谷歌云,而且User-Agent大部分为Googlebot,那就有意思了。

Googlebot

根据百科来看,它是谷歌的网页抓取机器人,类似于中国的Baiduspider(百度蜘蛛),一般Google会让不同的Googlebot来对你的网页内容进行处理,例如有普通的抓取文字内容的,获取内容来保存于Google网页搜索和新闻搜索的数据库;有抓取网页中的文字内容来让手机用户搜索的Googlebot-mobile;有抓取网页内的图片内容,保存入Google 图片搜索数据库的Googlebot-Image等。

不过普通人为爬虫也可以伪装User-Agent,但是我们看到的ip是来自多个连续的北京谷歌云服务器,因此断定就是谷歌官方的抓取机器人。

解决方案

既然问题出现了就要解决,不然爬虫的流量完全占用了我这仅仅1Mbps带宽的学生云服务器,给其它站点带来的很大的流量负载。尽管每周定时清理,但是日志频繁写入容易造成io堵塞,因此解决这一问题便尤为重要。

方案很多,大概可以分为限流、防盗链、限制ip、使用robots.txt、Nginx配置。
那很显然,Nginx是很强大且便捷的,很容易通过配置来限制网络以及流量,因此便去到站点下的Nginx配置,刚才分析到大部分流量都是谷歌官方爬虫爬取的数据,因此简单使用User-Agent判断来重定向页面就可以解决了,因此给出以下配置代码。

if ($http_user_agent ~* "Googlebot|SemrushBot|BLEXBot|AhrefsBot"){
    return 403;
}

可以看到效果很好,之前400kb/s瞬间下降到40kb/s,其它站点也可用其方法限制一些网站爬虫,其它方法可自行测试使用。
最近还发现有BLEXBotSemrushBot的爬虫,配置代码已变更。

本文由 RawChen 发表, 最后编辑时间为:2021-09-27 17:58
如果你觉得我的文章不错,不妨鼓励我继续写作。

发表评论
选择表情
Top