IPv4 归属地查询接口

引言:为什么需要 IP 归属地查询?

在互联网应用开发中,「知道用户从哪里来」往往是很多功能的基础:

  • 你想统计用户地域分布,为运营决策提供数据支撑;
  • 你想在用户异地登录时给出风险提示,保障账号安全;
  • 你想根据访客所在地区展示对应的语言、货币或本地化内容;
  • 你想限制某些地区的访问,或者为不同地区分配不同的 CDN 节点……

这一切,都离不开 IP 归属地查询

传统做法是接入第三方付费 IP 库或在线 API,但普遍存在两个痛点:(按次计费)和(外网请求有延迟、有被限流的风险)。

为此,大米API 新增了 IPv4 归属地查询接口(dm-ipquery),它使用本地离线数据库,毫秒级响应,免费开放给平台用户,帮助开发者用最少的成本完成地域相关的业务逻辑。

请求示例

https://www.qqsuu.cn/api/dm-ipquery?ip=123.55.6.12&key=你的API密钥

⚠️ 注意:平台所有接口请求必须携带密钥 key(在平台「获取 APIKEY」页面申请),否则请求将会失败。ip 参数可以不传,不传时接口会自动查询当前访客(本机)的 IP

代码调用示例

curl(命令行)

# 指定 IP 查询
curl -X GET "https://www.qqsuu.cn/api/dm-ipquery?ip=123.55.6.12&key=你的API密钥"
# 查询本机 IP
curl -X GET "https://www.qqsuu.cn/api/dm-ipquery?key=你的API密钥"

Python(requests)

import requests

API_URL = "https://www.qqsuu.cn/api/dm-ipquery"
KEY = "你的API密钥"          # 替换为你的密钥

def query_ip(ip: str = "") -> dict:
    """查询 IP 归属地;ip 传空串则查询本机"""
    params = {"key": KEY}
    if ip:
        params["ip"] = ip
    resp = requests.get(API_URL, params=params, timeout=10)
    resp.raise_for_status()
    return resp.json()

if __name__ == "__main__":
    # 指定 IP
    result = query_ip("123.55.6.12")
    print(result)

    if result.get("code") == 0:
        data = result["data"]
        print(f"{data['ip']} -> {data['country']} {data['province']} {data['city']} {data['district']} {data['isp']}")

    # 本机 IP
    me = query_ip()
    if me.get("code") == 0:
        d = me["data"]
        print("我的 IP 归属地:", d["country"], d["province"], d["city"], d["district"], d["isp"])

PHP(file_get_contents)

<?php
$key = '你的API密钥';
$ip  = '123.55.6.12';

$url = "https://www.qqsuu.cn/api/dm-ipquery?ip=" . urlencode($ip) . "&key=" . $key;
$json = file_get_contents($url);
$data = json_decode($json, true);

if ($data['code'] === 0) {
    $d = $data['data'];
    echo $d['ip'] . ' 归属:' . $d['country'] . $d['province'] . $d['city'] . ' ' . $d['isp'] . PHP_EOL;
} else {
    echo '查询失败:' . $data['msg'] . PHP_EOL;
}

常见问题排查:

  1. 请求返回失败 / 提示缺少密钥 → 检查是否携带了 key 参数,密钥是否正确(在平台「获取 APIKEY」页面查看)。
  1. 返回 404 → 先确认 IP 格式正确(如 123.55.6.12),再换一个常见 IP(如 114.114.114.114)对比测试,排除个例。
  1. 返回的字段是空字符串 → 该 IP 在数据源中缺少对应字段(如部分海外 IP 没有邮编),业务上做好空值处理即可。
  1. 中文乱码 → 接口返回为 UTF-8 编码 JSON,请确认你的开发环境/终端使用 UTF-8。

应用场景

  • 用户地域统计:访问日志中记录访客 IP,批量查询归属地,生成用户分布报表,指导运营与投放。
  • 登录风控:检测到账号在短时间内于不同省份/城市登录时,触发二次验证或风险提示,提升账号安全性。
  • 内容本地化:根据访客所在地区自动切换语言、币种、时区显示,提升用户体验。
  • 访问限制与合规:按地区对特定内容/服务做开放或限制(如部分地区功能灰度)。
  • 广告投放分析:结合地域信息做精准广告定向与效果分析。
  • CDN / 节点调度:作为简单的地域判断依据,辅助选择就近节点。

总结

dm-ipquery(IPv4 归属地查询) 是平台新增的免费、轻量、毫秒级接口:

  • 本地离线数据库:不依赖第三方在线服务,稳定快速,无外部请求成本;
  • 覆盖广:支持全球全量及国内外主流 IP,返回大洲、国家、省份、城市、区县、运营商、经纬度等 15+ 个字段;
  • 接入简单:GET/POST 一行 URL 即可调用,携带 key 鉴权;
  • 两种用法:指定 IP 查询 / 不传参数自动查本机,灵活满足不同场景。

建议开发者:优先使用语义化字段(如 provincecityisp)做业务逻辑,避免对「完整地域字符串」做 | 拆分解析(其格式与数据库版本强耦合,升级后可能变化);对可能为空的字段做好兜底。现在就带上你的密钥,体验一下吧!

上一篇 久等了!大米 API 接口管理系统正式上线
下一篇 大米API接口简介及购买说明
文章列表
1 重要通知!
重要通知!
2
阿里、360、腾讯DNS over TLS (DoT) - 加密(私有)DNS服务器
阿里、360、腾讯DNS over TLS (DoT) - 加密(私有)DNS服务器
3
ChatGPT PHP源码版 搭建属于你自己的AI智能对话网站
ChatGPT PHP源码版 搭建属于你自己的AI智能对话网站
4
快乐二级域名分发系统源码
快乐二级域名分发系统源码
5
晨熙云支付
晨熙云支付
大米酱

大米酱管理员

三百六十行,行行出BUG。

本月创作热力图

最新评论
学习一下
学习一下
6月29日
学习一下
ziaowan
ziaowan
6月11日
OK
ziaowan
ziaowan
6月8日
阿洋
阿洋
6月2日
感谢作者分享
2067608730
2067608730
4月11日
加油大米!quantou
评论于APINEXT