反向DNS查询与蜘蛛验证免费API接口详细教程

简介: 免费反向DNS查询API,通过PTR记录与双向验证(正向解析回查)精准识别百度、Google等搜索引擎蜘蛛IP。支持GET/POST请求,返回JSON格式数据,含`is_bot`和`verified`等核心字段,适用于日志分析、流量过滤与安全监控,助力高效区分真实用户与爬虫。

在网站运维、SEO分析或安全监控中,我们经常需要判断访问者的IP地址是否为合法的搜索引擎蜘蛛(如百度、Google等),而非恶意爬虫。一个可靠的方法就是进行反向DNS查询。本文将详细介绍由“接口盒子”提供的免费、高效的反向DNS查询与蜘蛛验证API接口。

一、接口简介

该接口的主要功能是查询指定IP地址的反向DNS记录,并基于此记录智能判断该IP是否属于已知的搜索引擎蜘蛛。其工作原理如下:

  1. 1.反向DNS查询:首先,接口会查询给定IP的PTR记录,获取其对应的域名(例如,IP 220.181.108.75可能对应 baiduspider-220-181-108-75.crawl.baidu.com)。
  2. 2.蜘蛛模式匹配:接着,接口会将获取到的域名与内置的数十种国内外蜘蛛(如Baidu、Googlebot、Bingbot等)的域名模式进行匹配。
  3. 3.双向DNS验证:为提高准确性,接口还会进行正向验证,即将匹配到的域名再次进行正向DNS解析(A记录查询),检查解析出的IP列表中是否包含最初查询的IP。这一步能有效防止伪造的PTR记录。

重要提示:并非所有蜘蛛IP都设置了反向DNS记录,且蜘蛛的域名也可能发生变化。因此,该接口的识别结果仅供参考,但结合了双向验证后,其可靠性非常高。

二、接口基本信息

三、请求参数说明

参数名

类型

是否必填

说明

id

整数

用户中心的数字ID。需要注册账号后获取。

key

字符串

用户中心的通讯秘钥,用于认证。

ip

字符串

要查询的IP地址(IPv4)。如不提供,则默认查询调用接口的客户端IP。示例:ip=220.181.108.75

四、返回参数详解

返回的JSON数据包含丰富的状态和信息字段:

参数名

类型

说明

code

整数

状态码200代表成功,400代表错误。

msg

字符串

与状态码对应的详细消息,如“查询成功”。

ip

字符串

你查询的IP地址。

reverse_dns

字符串

查询到的反向DNS记录。如果不存在则为空。

reverse_dns_exists

布尔值

是否存在反向DNS记录。

is_bot

布尔值

核心结果。是否被识别为蜘蛛。

verified

布尔值

核心结果。双向验证是否通过。true表示结果可信度极高。

query_time

浮点数

查询耗时,单位是毫秒(ms)。

timestamp

字符串

数据缓存的时间戳。接口有1天缓存期。

reverse_verification

对象

反向验证的详细数据集。

reverse_verification.match

布尔值

反向DNS是否匹配到蜘蛛模式。

reverse_verification.detected_bot

布尔值

是否检测到蜘蛛。

reverse_verification.matched_pattern

字符串

匹配到的蜘蛛域名模式(如.baidu.com)。

reverse_verification.bot_id

字符串

蜘蛛标识符(如baidu)。

reverse_verification.bot_name

字符串

蜘蛛名称(如Baidu)。

forward_verification

对象

正向验证的详细数据集。

forward_verification.performed

布尔值

是否执行了正向验证。

forward_verification.match

布尔值

正向验证是否匹配。

forward_verification.forward_ips

数组

将匹配到的域名进行正向解析得到的IP列表。

forward_verification.original_ip_in_forward_ips

布尔值

查询的原始IP是否在forward_ips列表中。

五、调用示例

重要:示例中的 idkey为公共测试凭证,调用频次受限。请务必在接口盒子官网注册账号,获取您独享的 idkey,以保证服务的稳定性。

1. 浏览器直接访问(GET请求)

最简单的方法是将参数直接拼接在URL后,在浏览器中访问即可看到结果。

复制

https://cn.apihz.cn/api/ip/fdns.php?id=88888888&key=88888888&ip=220.181.108.75
2. PHP调用示例

以下示例演示了如何使用PHP的cURL库进行GET请求,并解析返回的JSON数据。

php

复制

<?php
// 你的API凭证(请替换成你自己的)
$api_id = ‘你的用户ID‘;
$api_key = ‘你的用户KEY‘;
// 要查询的IP
$ip_to_query = ‘220.181.108.75‘;
// 构建请求URL
$api_url = ‘https://cn.apihz.cn/api/ip/fdns.php‘;
$request_url = $api_url . ‘?id=‘ . $api_id . ‘&key=‘ . $api_key . ‘&ip=‘ . $ip_to_query;
// 初始化cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应结果返回,而不是直接输出
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 简单起见,忽略SSL证书验证(生产环境建议开启)
// 执行请求
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 检查cURL错误
if (curl_error($ch)) {
    die(‘cURL请求发生错误: ‘ . curl_error($ch));
}
curl_close($ch);
// 解析JSON响应
$data = json_decode($response, true);
// 处理结果
if ($data && $data[‘code‘] == 200) {
    echo “查询IP: “ . $data[‘ip‘] . “\n”;
    echo “反向DNS: “ . $data[‘reverse_dns‘] . “\n”;
    echo “是否为蜘蛛: “ . ($data[‘is_bot‘] ? ‘是‘ : ‘否‘) . “\n”;
    echo “双向验证通过: “ . ($data[‘verified‘] ? ‘是‘ : ‘否‘) . “\n”;
    
    if ($data[‘is_bot‘]) {
        echo “蜘蛛名称: “ . $data[‘reverse_verification‘][‘bot_name‘] . “\n”;
    }
} else {
    echo “查询失败!错误信息: “ . $data[‘msg‘] . “\n”;
}
?>
3. Python调用示例

以下示例使用Python内置的 urllib库进行GET请求。

python

下载

复制

运行

import urllib.request
import urllib.parse
import json
# 你的API凭证(请替换成你自己的)
api_id = "你的用户ID"
api_key = "你的用户KEY"
ip_to_query = "220.181.108.75"
# 构建请求参数
params = {
    "id": api_id,
    "key": api_key,
    "ip": ip_to_query
}
# 将参数编码并拼接成URL
query_string = urllib.parse.urlencode(params)
url = f"https://cn.apihz.cn/api/ip/fdns.php?{query_string}"
try:
    # 发起请求
    with urllib.request.urlopen(url) as response:
        # 读取并解码响应内容
        response_data = response.read().decode('utf-8')
        # 解析JSON数据
        data = json.loads(response_data)
    # 处理结果
    if data.get('code') == 200:
        print(f"查询IP: {data['ip']}")
        print(f"反向DNS: {data['reverse_dns']}")
        print(f"是否为蜘蛛: {'是' if data['is_bot'] else '否'}")
        print(f"双向验证通过: {'是' if data['verified'] else '否'}")
        if data['is_bot']:
            print(f"蜘蛛名称: {data['reverse_verification']['bot_name']}")
    else:
        print(f"查询失败!错误信息: {data.get('msg', 'Unknown error')}")
except Exception as e:
    print(f"请求过程中发生错误: {e}")

六、成功返回示例解析

当我们使用上述示例查询百度蜘蛛IP时,会得到如下结构的JSON结果:

json

复制

{
  "code": 200,
  "msg": "查询成功",
  "ip": "220.181.108.75",
  "reverse_dns": "baiduspider-220-181-108-75.crawl.baidu.com",
  "reverse_dns_exists": true,
  "reverse_verification": {
    "match": true,
    "detected_bot": true,
    "matched_pattern": ".baidu.com",
    "bot_id": "baidu",
    "bot_name": "Baidu"
  },
  "forward_verification": {
    "performed": true,
    "match": true,
    "forward_ips": ["220.181.108.75"],
    "original_ip_in_forward_ips": true
  },
  "is_bot": true,
  "verified": true,
  "query_time": 4749.81,
  "timestamp": "2025-12-08 13:29:52"
}

结果解读

  1. 1.查询的IP 220.181.108.75存在反向DNS记录,记录值为 baiduspider-...crawl.baidu.com
  2. 2.该域名匹配到了蜘蛛模式 .baidu.com,被识别为百度蜘蛛(Baidu)。
  3. 3.接口执行了正向验证,将 baiduspider-...crawl.baidu.com解析回IP地址,得到的IP列表(["220.181.108.75"])中包含了原始查询IP。
  4. 4.因此,最终结论 is_botverified均为 true,可以确信该IP是真正的百度蜘蛛。

总结

接口盒子提供的反向DNS查询API是一个功能强大且易于使用的工具,特别适合用于:

  • 网站日志分析:自动化识别搜索引擎蜘蛛的访问记录。
  • 流量过滤:在应用程序中区分真实用户和搜索引擎爬虫。
  • 安全防护:辅助判断可疑爬虫身份。

由于其免费、返回信息详尽且带有双向验证机制,对于开发者和运维人员来说,是一个非常实用的选择。只需简单注册,即可开始集成使用。

目录
相关文章
|
3天前
|
编解码 算法 数据格式
OMPS-NPP L2 NP 臭氧 (O3) 垂直剖面条带轨道 NRT
OMPS-NPP L2 NP 臭氧垂直廓线产品提供Suomi-NPP卫星近实时全球臭氧分布数据,覆盖50–0.5 hPa大气层,含总臭氧、紫外气溶胶指数等参数,空间分辨率250km×250km,用于大气环境监测与研究。(238字符)
148 118
|
3天前
|
弹性计算 搜索推荐 应用服务中间件
阿里云服务器优惠价格表:38元1年、99元和199元收费,一个月89元和160元配置清单
阿里云爆款服务器特惠:轻量应用服务器38元/年起,ECS云服务器2核2G仅99元/年,2核4G 199元/年;4核16G 89元/月,8核32G 160元/月。香港轻量服务器25元/月起,200M带宽不限流量。GPU服务器A10/T4/V100等型号享月度优惠。更多配置及按小时计费详情,见阿里云官方活动页。
阿里云服务器优惠价格表:38元1年、99元和199元收费,一个月89元和160元配置清单
|
3天前
|
存储 运维 安全
别再把 Collector 当黑箱:OpenTelemetry Collector 拓展与自定义处理器实战指南
别再把 Collector 当黑箱:OpenTelemetry Collector 拓展与自定义处理器实战指南
66 14
|
7天前
|
安全 IDE API
Python类型提示进阶:告别“动态一时爽,重构火葬场”
Python类型提示让动态语言更可靠:通过静态类型注解提升代码可读性、重构效率与团队协作体验,结合mypy、Pydantic等工具链,实现从开发到运行时的全链路类型安全,平衡灵活性与工程化需求。(238字)
|
7天前
|
安全 API Python
Python 3.10+ 类型提示进阶:用Union与TypeGuard编写更健壮的代码
Python 3.10+ 引入 `|` 和 `TypeGuard`,让类型提示更简洁精准。用 `int | list[int]` 替代冗长 Union,结合 TypeGuard 实现智能类型推断,提升代码安全性与可读性,助力构建健壮、易维护的 Python 应用。(238 字)
|
10天前
|
人工智能 Java API
【Azure AI Search】如何通过Entra ID RBAC认证连接中国区 Azure AI Search
本文介绍如何在Java SDK中配置中国区AI Search资源访问。由于默认认证地址为全球环境(https://search.azure.com),在中国区需修改为https://search.azure.cn,并通过设置SearchAudience.AZURE_CHINA解决认证失败问题,确保资源正常获取。
99 18
|
15天前
|
存储 SQL 运维
数据湖 vs 数据仓库 vs 数据湖仓一体:何时选哪种架构?——写给正在做数据平台的你
数据湖 vs 数据仓库 vs 数据湖仓一体:何时选哪种架构?——写给正在做数据平台的你
112 12
|
3天前
|
人工智能 弹性计算 应用服务中间件
阿里云搭建网站收费标准:自建网站、云小智AI建站和云企业官网价格更新
阿里云建站三种方案:1)自购服务器,38元起/年,适合有技术者;2)万小智AI建站,698元起/年,送CN域名,零基础可操作;3)云企业官网,5480元起/年,定制设计,适合中大型企业。按需选择,性价比高。
|
3天前
|
JSON 运维 安全
云时代的身份安全:别再靠“密码123456”扛风险了
云时代的身份安全:别再靠“密码123456”扛风险了
64 17
|
12天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
577 32