要编写一个简单的PHP脚本来统计蜘蛛(网络爬虫)访问,你可以通过分析用户代理字符串(User Agent)来识别访问者的身份。以下是一个基本的实现示例:
<?php
// 定义蜘蛛的用户代理标识
$spiders = [
'Googlebot',
'Bingbot',
'Slurp', // Yahoo
'DuckDuckBot',
'Baiduspider',
'YandexBot',
'Sogou',
'Exabot',
'facebot', // Facebook
'ia_archiver' // Alexa
];
// 获取用户代理字符串
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
// 标志是否为蜘蛛访问
$isSpider = false;
// 检查用户代理是否包含蜘蛛标识
foreach ($spiders as $spider) {
if (strpos($userAgent, $spider) !== false) {
$isSpider = true;
break;
}
}
// 记录访问
if ($isSpider) {
// 这里可以记录到日志文件或数据库
$log = date('Y-m-d H:i:s') . " - Spider Detected: " . $userAgent . "\n";
file_put_contents('spider_log.txt', $log, FILE_APPEND);
// 你也可以在这里执行其他逻辑,比如增加统计计数等
} else {
// 普通用户访问逻辑(可选)
}
// 响应内容(可选)
echo "访问已被记录。";
?>
说明:
-
用户代理检测:通过检查
$_SERVER['HTTP_USER_AGENT']
,我们可以获取访问者的用户代理字符串,并判断其中是否包含已知的蜘蛛标识。 -
蜘蛛标识列表:在
$spiders
数组中列出了一些常见的蜘蛛用户代理标识。你可以根据需要添加或删除标识。 -
日志记录:如果检测到蜘蛛访问,将信息追加到
spider_log.txt
文件中。你可以根据需要修改此部分,例如将信息存储到数据库中。 -
响应内容:此示例简单地输出一条消息,实际应用中可以根据需要返回不同的内容或执行其他操作。
注意事项:
- 性能:对于高流量网站,频繁的文件写入可能会影响性能。考虑使用数据库或其他高效的日志记录机制。
- 准确性:用户代理字符串可以被伪造,因此这种方法不能保证100%准确。
- 扩展性:可以扩展此脚本以记录更多信息,例如IP地址、访问的URL等。
通过这种方式,你可以基本实现对蜘蛛访问的统计和记录。