前言
应公司要求,需要让服务器的异常消息能及时通知管理员,所以最近加了服务器异常会通知钉钉群的功能。问题就要从加了这个提示开始讲起。自从加了这个提示后,就收到了不同ip对本服务器发起的对robots.txt的请求。
一、robots.txt是什么?
robots.txt
概念:指robots协议
描述:位于网站根目录,是一个很小的文本文件
作用:告诉爬虫工具是否要抓取网站的某些部分
生成robots.txt的网站:https://robots.bmcx.com/
(说句题外话:蜘蛛就是爬虫的意思)
二、基本指令
1.User-agent
指定爬虫遵守的规则集,可以是通配符,表示适用于所有的爬虫
User-agent:*
也可以指定爬虫的名字:
User-agent:Baiduspider
下面是百度可参考的爬虫名称(可忽略):
2.Disallow
禁止指令,可以指定有哪些路径禁止访问
Disallow:/admin
只能禁止访问域名之后以“/admin”开头的所有路径
禁止访问的路径:
http://localhost:8080/admin
http://localhost:8080/admin/login
http://localhost:8080/admin/logout?userId=123
无法禁止访问的路径:
http://localhost:8080/article/admin
路径里可以加通配符,通配符的使用很简单,比如
*的使用:
Disallow:http://localhost:8080/article/*/list
中间的*号可以匹配任意文本,类似
http://localhost:8080/article/page/list
http://localhost:8080/article/common/list
这种url都会被拦截
$的使用:
结束符,表示以某个路径为结尾
Disallow:http://localhost:8080/article$
则会阻止爬虫爬取的url:
http://localhost:8080/article
不会阻止的url:
http://localhost:8080/article/page/list
http://localhost:8080/article/common/list
如果你要禁止你的网站的所有地址被爬虫,则可以这么写:
Disallow:/
3.Allow
允许指令,很少使用,可以使用该指令来允许禁止规则的例外。
例如禁止了/admin开头的路径,但是不想禁止/admin/login和/admin/logout的路径的话,可以在Allow里面允许,如:
Allow:/admin/login
Allow:/admin/logout
这样配置之后,会阻止对/admin/login、/admin/logout以及所有以/admin/login、/admin/logout开头的路径。
4.Sitemap
个人感觉这个配置应该不会用到,就是配置你的XML网站地图。主要是用来搜索引擎可以快速访问到网站的某个页面,你需要的话就配置一下。sitemap的值的格式就是一个xml文件的地址。
配置是这样:
Sitemap:https://www.domain.com/sitemap.xml
sitemap.xml的内容大概长下面这样:
<!-- Generated by Screaming Frog SEO Spider 12.4 -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.domain.com/wordpress-hosting</loc>
<lastmod>2020-01-06</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.domain.com/hosting/app-vault</loc>
<lastmod>2020-01-06</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.domain.com/about/sitemap</loc>
<lastmod>2020-01-06</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.domain.com/domains/tlds/tech</loc>
<lastmod>2020-01-06</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
</urlset>
这个xml文件的语法:
sitemap.xml必须:
- 以 开始标记作为开始,以 结束标记作为结束。
- 在 标记中指定命名空间(协议标准)。
- 每个网址包含一个 条目作为 XML 父标记。
- 在每个 父标记中包含一个 子标记条目。
属性讲解:
属性名 | 是否必填 | 属性含义 |
---|---|---|
loc | 是 | 该页的网址。如果您的网络服务器需要网址的话,此网址应以协议开始(例如:http)并以斜杠结尾。该值必须少于 2,048 个字符。 |
lastmod | 否 | 该文件上次修改的日期。此日期应采用 W3C Datetime 格式。如果需要,此格式允许省略时间部分,并使用 YYYY-MM-DD。 |
changefreq | 否 | 页面可能发生更改的频率。此值为搜索引擎提供一般性信息,可能与搜索引擎抓取页面的频率不完全相关。有效值为: always、 hourly、daily、 weekly、mothly、 yearly、never。always值应当用于描述随每次访问而改变的文档。而never值则应当用于描述存档的网址。请注意,抓取工具会将此标记的值视为提示而不是命令。尽管搜索引擎抓取工具在做决定时会考虑此信息,但对于标记为“hourly”页面的抓取频率可能低于每小时一次,而对于标记为“yearly”页面的抓取频率可能高于每年一次。抓取工具也可能会定期抓取标记为“never”的网页,以便能够处理对这些网页的未预期更改。 |
priority | 否 | 此网址的优先级是相对于您网站上其他网址的优先级而言的。有效值范围从 0.0 到 1.0。该值不会影响您的网页与其他网站上网页的比较结果,而只是告知搜索引擎您认为哪些网页对抓取工具来说最为重要。一个网页的默认优先级为 0.5。 |
sitemap文件必须以UTF-8编码。
三、注意事项
- 如果你要阻止/admin开头的路径,却不小心阻止了/adminserver开头的路径,则可以这样配置:
Disallow:/admin$
Disallow:/admin/
- robots.txt必须放置在网站的根目录下,而不能放置在子目录下,那样的话robots文件会被忽视。
- robots.txt文件中的路径是区分大小写的。
- User-agent只能配置一次,如果配置多次,会采取最后一行配置的值。
- Disallow和Allow的路径必须以斜杆开头
- 如果要阻止含有某参数的路径的话,用以下方法:
Disallow:/*?id =
Disallow:/*&id =
- 如果路径中带有<等特殊字符,需要转码
四、总结
记住不要妄图使用robots.txt实现复杂的功能,他只是用来限制你的项目被爬虫爬取的路径。