如何避免爬虫爬取测试环境的内容?
概述
事情是这样的,上周产品突然问我,怎样可以让我们测试环境的官网不被爬虫捕获到。好家伙,打开百度、谷歌一搜索公司的关键字,结果一看官网测试环境的域名居然比生产环境的域名排名还要靠前,这不就乱套了么 (*T_T*)
感觉这个经常都会容易忘记。一不小心测试环境的网站或者管理后台就被爬虫抓到了内容,这样既影响我们生产环境的排名,也存在安全隐患。如果用户通过搜索不小心进到测试环境,恰好又发生了支付行为的话,就真是有理说不清,运营同学跳进黄河都没用 ╥﹏╥...
接下来我们有请 robot.txt 来防止上述悲剧的发生
robot.txt
What?
引用维基百科中的解释:
robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
本质上 robots.txt 只是一种约定协议,各大爬虫厂商按照“约定”,根据 robots.txt 的规定来爬取网站内容。
PS:robots.txt 只是一种“君子约定”,不能保证会不会有一些“小人”爬虫软件,不遵守这个约定,直接爬取网站的内容,所以 robots.txt 是不能保护网站的隐私。
Why?
既然 robots.txt 不能保护网站的隐私,为啥还要用呢?归根到底,还是那句老话:“防君子不防小人”,大牌搜索引擎的爬虫都是遵守这个“君子约定”。所以,当我们出现本文开头的场景时,最好还是加上 robots.txt 文件,告诉爬虫,不要爬取该网站的内容。
所以,个人建议,测试环境、不想被爬虫爬取的管理后台等网站都可以加上 robots.txt,告诉爬虫,不要爬取这些网站的内容。特别是管理后台,是最容易忘记的。
How?
位置
把 robots.txt 文件放在网站的根目录下即可
比如,可以看看百度、谷歌、Github 的 robots.txt 文件:
内容
一般来说,如果我们想要所有爬虫都不要爬取该网站的所有内容,robots.txt 里面直接写上以下两句就 ok
User-agent: *
Disallow: /
User-agent: *
标识相应规则适用于哪些抓取工具,*
代表所有爬虫Disallow: /
表示禁止爬虫爬取根目录以及其子孙目录的所有内容(即:禁止爬取该网站的所有内容)
详细字段内容可以参考:
- 禁止搜索引擎收录的方法——Robots文件设置
- Google 如何解读 robots.txt 规范
- PS:谷歌这份材料里面字段用的是小写,但百度的材料以及谷歌自己的 robots.txt 文件 都是首字母大写,暂时不确定有没有区别,不过我用的是首字母大写的格式
- PS:谷歌这份材料里面字段用的是小写,但百度的材料以及谷歌自己的 robots.txt 文件 都是首字母大写,暂时不确定有没有区别,不过我用的是首字母大写的格式
自动生成
如果要配置更复杂的规则,可以考虑借助一些在线生成 robots.txt 文件的工具,搜索引擎上直接搜索“robot.txt 在线生成器”就会有一大堆工具,或者直接使用 站长工具中的 robots 生成器
转载自:https://juejin.cn/post/7155846516383416356