PHP 实现 Googlebot 访问日志记录与通知

Finn
Finn
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍如何使用 PHP 代码自动检测 Google 爬虫(Googlebot)对网站的访问,并通过电子邮件实时发送包含 URL、时间及查询参数的访问通知,便于站长监控搜索收录情况。

核心逻辑与原理

在 Web 服务器环境中,每个 HTTP 请求都会携带特定的请求头信息。其中 HTTP_USER_AGENT 字段标识了发起请求的客户端软件类型。Google 爬虫在访问网站时,其 User-Agent 字符串中通常包含 googlebot 关键字。通过 PHP 解析该变量并进行正则匹配,即可判断当前访客是否为 Google 爬虫。

一旦确认是 Googlebot 访问,脚本即可捕获当前的环境参数(如 URL、时间),并利用 PHP 内置的邮件函数将这一关键事件记录下来发送给管理员。

完整实现代码

以下是一段经过整理的 PHP 代码示例,用于实现上述功能。请将其放置在你希望监控的文件顶部,或引入到公共配置文件中。

<?php
// 设置接收通知的管理员邮箱
$email = "admin@example.com";

// 检查 User-Agent 是否包含 googlebot (不区分大小写)
if(eregi("googlebot", $HTTP_USER_AGENT)) {
    // 构建完整的当前页面 URL
    if ($QUERY_STRING != "") {
        $url = "http://" . $SERVER_NAME . $PHP_SELF . "?" . $QUERY_STRING;
    } else {
        $url = "http://" . $SERVER_NAME . $PHP_SELF;
    }

    // 获取当前访问时间
    $date = date("F j, Y, g:i a");

    // 发送通知邮件
    // 标题格式:[Googlebot] 被访问的URL
    // 内容格式:访问时间 - Google 抓取了某URL
    mail($email, "[Googlebot] $url", "$date - Google crawled $url");
}
?>

注意事项与现代兼容性修正

虽然上述代码展示了核心逻辑,但在现代 PHP 环境(PHP 7.0+ 及 PHP 8.x)中,直接使用全局变量(如 $HTTP_USER_AGENT, $SERVER_NAME, $PHP_SELF)或旧版函数(eregi)可能已不再兼容或被弃用。为了确保代码在现代服务器上正常运行,建议采用以下更标准的写法:

<?php
// 1. 使用超全局数组 $_SERVER 获取用户代理
$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';

// 2. 使用 preg_match 替代已移除的 eregi (现代表示法)
if (stripos($user_agent, 'googlebot') !== false) {

    // 3. 构建标准 URL
    $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
    $host     = $_SERVER['HTTP_HOST'];
    $uri      = $_SERVER['REQUEST_URI'];
    $full_url = $protocol . '://' . $host . $uri;

    // 4. 定义接收邮箱
    $admin_email = 'admin@example.com';

    // 5. 构造邮件主题与内容
    $subject = '[Googlebot Access] ' . $full_url;
    $message = sprintf(
        "%s\n\nGoogle Crawler visited: %s",
        date('Y-m-d H:i:s'),
        $full_url
    );

    // 6. 发送邮件 (确保服务器已配置 SMTP 或 Mail function)
    // 注意:mail() 需要服务器环境支持,否则无法发送
    @mail($admin_email, $subject, $message);
}
?>

部署与应用场景

  • 监控索引状态: 当你更新重要页面但发现未被收录时,通过此脚本可以验证 Googlebot 是否真的来过,以及它看到的是否为最新版本。
  • 排查收录延迟: 如果频繁收到邮件但页面未收录,可能需要检查robots.txt或页面质量。
  • 安全提醒: 对于特定敏感页面,可以知道搜索引擎何时进行了爬行。

常见问题排错

Q: 为什么没有收到邮件?
A: 首先检查服务器的 mail() 函数是否正常配置(Linux 通常需要 Postfix/sendmail,Windows 需要配置 SMTP)。其次,检查垃圾邮件文件夹。最后,确认 $admin_email 是否正确且拥有写入权限。

Q: 如何区分不同类型的 Google 爬虫?
A: Google 有多个爬虫,如 Googlebot (网页), Googlebot-Image (图片), AdSense/AdsBot (广告)。可以通过扩展正则表达式来分别处理不同爬虫的报警策略。

Q: 性能影响大吗?
A: 极小。这段代码仅在命中条件时才执行数据库操作或网络 IO,正常用户访问几乎无额外开销。

以上就是利用 PHP 获取 Google 机器人访问足迹并发送邮件通知的详细内容,更多关于 PHP 服务器端爬虫监控的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表