欢迎光临
我们一直在努力

隐藏robots文件禁止浏览器访问

对于robots.txt文件来说是我们网站根目录下必不可少的文件,没有之一,文件对支持robots协议的蜘蛛定义了N多的规则,充许蜘蛛爬行那些目录及文件,不充许蜘蛛爬行那些目录及文件,像像百度,谷哥,360,bing这些蜘蛛全支持这一规则的。

有了robots文件中定义的这些规则,蜘蛛便能看明白充许他抓取那些页面,不充许他抓取那些页面了,非常的方便蜘蛛去对一个网站进行判断,不过有好的一面也有坏的一面,一些别有用心的人,比如想盗取你的模板,他就会查看你网站的robots.txt文件去简单的分析你的网站的目录架构,通过架构就可以看出来你是用的那个开源内核程序搭建的网站,比如我的网站,大家可以访问:https://www.rsyncd.net/robots.txt

User-agent: *
Allow: / 
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://www.rsyncd.net/sitemap.xml

User-agent: DotBot
Disallow: /

User-agent: MJ12bot
Disallow: /

通过上面分析,基本对于经常做站的人来说,一眼就可以看出我的这个网站内核是用的wordpress,这样就可以知道我网站目录中都有那些文件了,就会造成我的网站及服务器存在不安全的问题,那有啥方法隐藏掉这个文件让用户不是那么轻易的简单去访问这个文件吗,答案是必须有的,且办法非常的简单,我用的是nginx,下面我们就简单的配置一下nginx让用户无法简单的直接用浏览器去访问,在配置前我们首先要明确这么一个问题,不让用户浏览器访问,但我们必须要做到让各大搜索蜘蛛正常的访问才可以,因此首先我们先看下各大蜘蛛访问我们网站的日志。

220.181.108.116 - - [01/Sep/2020:11:39:23 +0800] "GET /tag/wordpress HTTP/1.1" 200 40309 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" "-"
157.55.39.131 - - [01/Sep/2020:14:58:10 +0800] "GET /1238.html HTTP/1.1" 200 10906 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
42.120.161.83 - - [01/Sep/2020:15:03:37 +0800] "GET /1307.html HTTP/1.1" 200 46973 "-" "YisouSpider" "-"
203.208.60.8 - - [01/Sep/2020:15:14:44 +0800] "GET /1074.html HTTP/1.1" 200 10796 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"

通过上面的蜘蛛日志信息我们可以分析出,蜘蛛的UA信息中存在着相同的字符串,百度和YisouSpider的蜘蛛UA信息中相同的字符串是spider(这里大小字可以忽悠掉),而谷哥和bing蜘蛛的UA信息中相同的字符串而是bot,我上面只是举例了几个比较常见的蜘蛛,经过分析发现蜘蛛UA信息中基本上不包括spider字符串就包括bot。

到这里,我们再次明确我们的目的是不让用户浏览器去访问,而是让蜘蛛正常访问,那就简单了,我们在nginx中加个判断通过UA信息来判断来访者是不是蜘蛛,如果是蜘蛛需要访问robots.txt,我们就直接让nginx返回真正的robots协议文件,如果是用户浏览器访问那就返回一个假的robots就可以了,在这里默认的根目录下面的robots我们可以放一个假的协议文件,而蜘蛛来访问我们可以利用伪静态转发到另一个我们自定义的文件上面,就可以非常简单的实现了,代码实现在nginx配置文件的location中直接加入以下代码。

        ……………………………………………………
        ……………………………………………………
	location / {
		if ( $http_user_agent ~* "(spider|bot)" )
                {
                        rewrite ^\/robots\.txt$  /sitemap/robots.txt last;
                }
        ……………………………………………………
        ……………………………………………………
        ……………………………………………………

这里我真实的想让蜘蛛访问的robots文件放在了sitemap文件夹中,你可以随便放到任意文件夹中,文件名也可以定义成,只要路径这里别写错就可以,实现原理很简单,同样,我们也可以通过此方法判断UA信息,来做别的一些功能。

通过UA信息来引导蜘蛛访问真实robots的这个判断不太适用于百度蜘蛛,通过观察发现百度蜘蛛访问robots好多时候根本就不带百度的UA信息,这点感觉有点坑。

赞(0) 打赏
原创文章转载请注明出处:爱编程 » 隐藏robots文件禁止浏览器访问
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

爱编程、一个运维兼程序员的博客!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏