如何让网站页面内容不被抓取?不让网站页面内容不被抓取的技巧
在网站运营过程中,有时候我们需要限制部分页面被搜索引擎、爬虫程序抓取,比如后台管理页面、内部测试页面、包含敏感信息的专属页面等。本文将介绍多种实现页面不被抓取的方法,涵盖不同场景下的使用技巧。
一、使用robots.txt文件限制抓取
robots.txt是网站根目录下的一个纯文本文件,用于告诉搜索引擎爬虫哪些页面可以抓取,哪些不可以抓取,是最基础也最常用的抓取限制方式。
robots.txt的规则说明:
User-agent:指定生效的爬虫类型,*表示所有爬虫
Disallow:指定禁止抓取的路径,/表示禁止抓取全站,/admin/表示禁止抓取admin目录下的所有内容
Allow:指定允许抓取的路径,优先级高于Disallow
以下是禁止所有爬虫抓取/admin/目录和/private.html页面的robots.txt示例:
User-agent: * Disallow: /admin/ Disallow: /private.html
需要注意的是,robots.txt是“君子协议”,遵守规则的搜索引擎会按照要求执行,但恶意爬虫可能不会遵守该规则,因此该方法仅能限制合规爬虫的抓取。
二、添加meta标签禁止索引和跟踪
除了robots.txt,我们还可以在页面的头部添加<meta>标签,直接告诉搜索引擎不要索引当前页面,也不要跟踪页面内的链接。
常用的meta标签属性说明:
name="robots":指定生效的爬虫类型,content中的noindex表示不索引页面,nofollow表示不跟踪页面内的链接
name="googlebot":专门针对Google爬虫的规则,优先级高于通用的robots规则
以下是禁止所有搜索引擎索引当前页面且不跟踪页面内链接的meta标签示例:
<head> <meta name="robots" content="noindex, nofollow"> </head>
如果只需要禁止索引但允许跟踪链接,可以将content改为"noindex, follow";如果只需要禁止跟踪链接但允许索引,可以改为"index, nofollow"。
三、通过HTTP响应头X-Robots-Tag控制抓取
如果页面是动态生成的,或者你无法直接修改页面的HTML内容,可以通过服务器配置添加X-Robots-Tag响应头,实现和meta标签相同的效果,该方式的优先级高于meta标签。
以Nginx服务器为例,禁止所有爬虫索引/private/目录下的页面的配置如下:
location /private/ {
add_header X-Robots-Tag "noindex, nofollow";
}以Apache服务器为例,在.htaccess文件中添加如下配置:
<FilesMatch "\.(html|php)$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch>
该方法同样可以被合规爬虫识别,但是恶意爬虫可能忽略该响应头。
四、设置访问权限限制非授权抓取
对于包含敏感信息、仅对特定用户开放的页面,最可靠的方式是设置访问权限,只有验证通过的用户才能访问内容,即使爬虫访问也会返回401、403等状态码,无法获取页面内容。
常见的权限控制方式包括:
HTTP基础认证:通过服务器配置要求输入用户名和密码才能访问页面
Session/Cookie验证:用户登录后服务器下发凭证,后续请求携带凭证才能访问
Token验证:接口类页面要求请求携带合法的Token才能返回内容
以下是PHP实现简单的Session验证,禁止未登录用户访问页面的示例:
<?php
session_start();
// 未登录则跳转到登录页,返回403状态码
if (!isset($_SESSION['user_id'])) {
http_response_code(403);
header('Location: https://www.ipipp.com/login.php');
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>内部专属页面</title>
</head>
<body>
<p>这是仅登录用户可见的内容</p>
</body>
</html>五、不同方法的适用场景对比
我们可以根据页面的实际需求选择合适的方法,以下是各方法的对比:
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| robots.txt | 批量禁止抓取公开目录/页面,对合规爬虫生效 | 配置简单,无需修改页面代码 | 恶意爬虫不遵守,无法保护敏感内容 |
| meta标签 | 单个页面禁止抓取,无需服务器配置 | 灵活控制单个页面规则,优先级高于robots.txt | 需要修改每个页面的HTML,恶意爬虫可能忽略 |
| X-Robots-Tag响应头 | 动态页面、无法修改HTML的场景 | 无需修改页面代码,服务器统一配置 | 需要服务器配置权限,恶意爬虫可能忽略 |
| 访问权限控制 | 敏感页面、内部专属页面 | 可靠性高,任何未授权请求都无法获取内容 | 配置相对复杂,需要开发权限验证逻辑 |
六、注意事项
1. 如果页面已经被搜索引擎收录,添加禁止抓取规则后,还需要通过搜索引擎的站长平台提交删除收录请求,才能彻底从搜索结果中移除。
2. 不要对网站首页、核心内容页误加禁止抓取规则,否则会导致网站在搜索引擎中无法被正常展示,影响流量。
3. 对于包含用户隐私、内部数据的页面,建议优先使用访问权限控制,结合robots.txt、meta标签等方式做多层防护,避免内容泄露。