要让PHP向访客和爬虫显示不同的内容,一般可以通过识别访问者的User-Agent字符串来实现。User-Agent是HTTP请求头部的一个字段,包含浏览器或爬虫发送请求的相关信息。使用PHP可以获取这个字段,然后根据不同的User-Agent字符串,返回不同的内容。
下面是实现的基本流程:
-
获取访问者的User-Agent字符串,可以使用 $_SERVER['HTTP_USER_AGENT'] 获取;
-
判断User-Agent字符串是否包含爬虫的关键字,例如"spider", "bot", "crawler"等。
-
如果User-Agent是爬虫的,则返回针对爬虫的内容;如果是访客,则返回针对访客的内容。
下面给出两个示例:
示例1:向爬虫返回空白页面
假设一个网站的首页有很多的视频和图片,占用了很多的带宽和资源;而爬虫通常对这些内容不感兴趣,只关心网页的文字内容。所以我们可以设置:
当User-Agent字符串包含爬虫的关键字时,返回一个空白的HTML页面,只有网页的标题和一些关键字,其他内容为空。
具体实现可以使用以下代码:
if (preg_match('/bot|crawler|spider|googlebot|msnbot/i', $_SERVER['HTTP_USER_AGENT'])) {
header('Content-type: text/html; charset=utf-8');
echo '<html><head><title>网站标题</title><meta name="keywords" content="关键字1, 关键字2"></head><body></body></html>';
exit;
}
示例2:网页正常显示,但限制搜索引擎爬取链接
有些网站不希望所有的链接都被搜索引擎爬取,例如个人博客中的标签、作者信息等页面。那么可以设置:
在网页中插入一个不可见的meta标签,告诉搜索引擎不要爬取此页面,而对于访客则不做任何限制。
具体实现可以使用以下代码:
if (preg_match('/bot|crawler|spider|googlebot|msnbot/i', $_SERVER['HTTP_USER_AGENT'])) {
echo '<html><head><meta name="robots" content="noindex, nofollow"></head><body></body></html>';
exit;
}
注意:当使用此方法限制搜索引擎爬取页面时,不能完全信任用户的User-Agent字符串,因为有些恶意爬虫会伪造User-Agent字符串,用来隐藏自己的身份。因此需要结合其他方法,例如限制IP地址、设置验证码等方式来增强防护。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 向访客和爬虫显示不同的内容 - Python技术站