You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core中使用反向DNS查找检测Googlebot?

检测Googlebot的代码实现方案

你可以按照「反向解析校验→正向回查校验」的逻辑实现完整判断,ASP.NET Core场景下的完整代码示例如下:

@{
    var clientIp = Request.HttpContext.Connection.RemoteIpAddress;
    bool isGooglebot = false;
    try
    {
        // 第一步:执行反向DNS查找
        var hostEntry = System.Net.Dns.GetHostEntry(clientIp);
        var hostName = hostEntry.HostName.ToLowerInvariant();
        // 校验域名后缀是否符合Googlebot官方规则
        if (hostName.EndsWith(".googlebot.com") || hostName.EndsWith(".google.com"))
        {
            // 第二步:正向DNS回查,避免伪造反向解析记录
            var forwardResolveIps = System.Net.Dns.GetHostAddresses(hostName);
            if (forwardResolveIps.Any(ip => ip.Equals(clientIp)))
            {
                isGooglebot = true;
            }
        }
    }
    catch (System.Net.Sockets.SocketException)
    {
        // 普通IP大多没有PTR反向解析记录,解析失败直接判定非Googlebot
        isGooglebot = false;
    }

    // 后续直接通过isGooglebot变量做条件判断即可
    if (isGooglebot)
    {
        // 此处写针对Googlebot的自定义逻辑
        <p>当前访问主体为Googlebot</p>
    }
}

注意事项

  • 必须保留正向回查逻辑:仅靠反向解析后缀判断不可靠,恶意攻击者可以将自身IP的PTR记录设置为任意googlebot.com后缀域名,只有正向解析回查匹配才能确认身份
  • 必须保留异常捕获逻辑:绝大多数普通用户的IP没有配置反向解析记录,调用GetHostEntry会直接抛出SocketException,不加捕获会导致页面报错
  • 建议新增IP缓存机制:DNS解析有固定耗时,不要每个请求都重复执行解析,可以将验证通过的Googlebot IP存入缓存,过期时间可设为12~24小时降低性能损耗

内容的提问来源于stack exchange,提问作者Munchkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:36:06