php禁止网页抓取(网站管理者和内容提供者来说)
优采云 发布时间: 2021-12-21 18:01php禁止网页抓取(网站管理者和内容提供者来说)
我们知道搜索引擎都有自己的“搜索机器人”(ROBOTS),通过这些机器人在互联网上沿着网页上的链接(通常是http和src链接)不断抓取信息来构建自己的
. 对于网站 管理者和内容提供者来说,有时会出现一些不想被 ROBOTS 抓取并公开的网站内容。为了解决这个问题,ROBOTS开发社区提供了两种方法:一种是robots.txt,一种是The Robots META标签。
一、 robots.txt
1、 什么是robots.txt?robots.txt 是纯文本文件。通过在该文件中声明网站中不想被robots访问的部分,这样网站的部分或全部内容将无法被搜索引擎搜索到收录,或者指定搜索引擎只收录指定的内容。搜索机器人访问站点时,首先会检查站点根目录下是否存在robots.txt。如果找到,搜索机器人将根据文件内容确定访问范围。如果该文件不存在,则搜索机器人沿链接爬行。robots.txt 必须放在站点的根目录下,文件名必须全部小写。网站 网址
对应robots.txt的URL
:80/
:80/robots.txt
:1234/
:1234/robots.txt
2、 robots.txt 的语法
“robots.txt”文件收录一个或多个记录,由空行分隔(以CR、CR/NL或NL作为终止符)。每条记录的格式如下:
“:”。在这个文件中,可以使用#进行注释,具体使用
它与 UNIX 中的约定相同。此文件中的记录通常以一行或多行 User-agent 开头,后跟几行 Disallow 行,详细信息如下:
用户代理:
此项的值用于描述搜索引擎机器人的名称。在“robots.txt”文件中,如果有多个User-agent记录,表示多个robots会被协议限制。对于这个文件,至少有一个 User-agent 记录。如果该项的值设置为*,则该协议对任何机器人都有效。在“robots.txt”文件中,只能有“User-agent:*”等一条记录。
不允许:
此项的值用于描述您不想访问的 URL。此 URL 可以是完整路径或其中的一部分。机器人不会访问任何以 Disallow 开头的 URL。例如,“禁止:/help”不允许搜索引擎访问/help.phpl和/help/index.phpl,而“不允许:/help/”允许机器人访问/help.phpl,但不允许访问/help/指数。.phpl。
如果任何 Disallow 记录为空,则表示允许访问 网站 的所有部分。“/robots.txt”文件中必须至少有一个 Disallow 记录。如果“/robots.txt”是一个空文件,这个网站 对所有搜索引擎机器人都是开放的。
以下是robots.txt的一些基本用法:
l 禁止所有搜索引擎访问网站的任何部分:
用户代理: *
Disallow: /l 允许所有机器人访问
用户代理: *
不允许:
或者您可以创建一个空文件“/robots.txt”文件 l 禁止所有搜索引擎访问网站的几个部分(下例中的cgi-bin、tmp和私有目录)
用户代理: *
禁止:/cgi-bin/
禁止:/tmp/
禁止:/private/ l 禁止访问搜索引擎(下例中的 BadBot)
用户代理:BadBot
Disallow: / l 只允许访问某个搜索引擎(下例中的WebCrawler)
用户代理:WebCrawler
禁止:用户代理:*
不允许: /
3、 常用搜索引擎机器人 机器人名称
名称搜索引擎
百度蜘蛛滑板车 ia_archiver Googlebot FAST-WebCrawler Slurp MSNBOT
4、 robots.txt 示例
以下是一些著名网站的robots.txt:
5、 常见的 robots.txt 错误
l 颠倒顺序:
错误地写为
用户代理: *
禁止:GoogleBot
正确的应该是:
用户代理:GoogleBot
不允许: *
l 将多个禁止命令放在一行:
例如,错误地写为
禁止:/css/ /cgi-bin/ /../images/
正确的应该是
禁止:/css/
禁止:/cgi-bin/
禁止:/../images/
l 行前有很多空格
例如写成
禁止:/cgi-bin/
虽然标准中没有提到这一点,但这种方法容易出现问题。
l 404重定向到另一个页面:
当Robot访问很多没有robots.txt文件的网站时,会自动404重定向到另一个Html页面。这时候,Robot 往往会像处理 robots.txt 文件一样处理 Html 页面文件。这个虽然一般没有问题,但最好在网站的根目录下放一个空白的robots.txt文件。
l 使用大写。例如
用户代理:EXCITE
不允许:
虽然标准不区分大小写,但目录和文件名应该是小写的:
用户代理:GoogleBot
不允许:
l 语法中只有Disallow,没有Allow!
错误的方法是:
用户代理:百度蜘蛛
禁止:/约翰/
允许:/简/
我忘了斜线 /
写错了:
用户代理:百度蜘蛛
禁止:css
正确的应该是
用户代理:百度蜘蛛
禁止:/css/
下面这个小工具专门检查robots.txt文件的有效性:
二、 机器人 META 标签
1、什么是机器人META标签
Robots.txt文件主要是限制搜索引擎对整个站点或目录的访问,而Robots META标签主要是针对特定页面的。与其他META标签(如使用的语言、页面描述、关键词等)一样,Robots META标签也被放置在页面上,专门告诉搜索引擎ROBOTS如何抓取页面内容。具体形式类似(见加粗部分):
Times Marketing-网络营销专业门户
…
2、Robots META 标签编写:
Robots META标签不区分大小写,name=”Robots”表示所有搜索引擎,对于特定的搜索引擎可以写成name=”BaiduSpider”。内容部分有四个命令选项:index、noindex、follow 和 nofollow。命令以“,”分隔。
INDEX指令告诉搜索机器人抓取页面;
FOLLOW指令表示搜索机器人可以继续沿着页面上的链接爬行;
Robots Meta标签默认值为INDEX和FOLLOW,inktomi除外。对于它,默认值为INDEX、NOFOLLOW。
这样,有四种组合:
在:
可以写成
;
可以写成
需要注意的是,上述robots.txt和Robots META标签限制搜索引擎机器人(ROBOTS)抓取网站内容只是一个规则,需要搜索引擎机器人的配合,并不是每个ROBOTS都遵守。
目前看来大部分搜索引擎robots都遵守robots.txt的规则,而对于Robots META标签,目前支持的并不多,但是在逐渐增加。比如知名搜索引擎GOOGLE就全面支持,GOOGLE还增加了一个命令“archive”可以限制GOOGLE是否保留网页快照。例如:
是指抓取站点中的页面并关注页面中的链接,但不要在GOOLGE上保留该页面的网页快照。