引言:为什么需要 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;
}
常见问题排查:
- 请求返回失败 / 提示缺少密钥 → 检查是否携带了
key参数,密钥是否正确(在平台「获取 APIKEY」页面查看)。
- 返回
404→ 先确认 IP 格式正确(如123.55.6.12),再换一个常见 IP(如114.114.114.114)对比测试,排除个例。
- 返回的字段是空字符串 → 该 IP 在数据源中缺少对应字段(如部分海外 IP 没有邮编),业务上做好空值处理即可。
- 中文乱码 → 接口返回为 UTF-8 编码 JSON,请确认你的开发环境/终端使用 UTF-8。
应用场景
- 用户地域统计:访问日志中记录访客 IP,批量查询归属地,生成用户分布报表,指导运营与投放。
- 登录风控:检测到账号在短时间内于不同省份/城市登录时,触发二次验证或风险提示,提升账号安全性。
- 内容本地化:根据访客所在地区自动切换语言、币种、时区显示,提升用户体验。
- 访问限制与合规:按地区对特定内容/服务做开放或限制(如部分地区功能灰度)。
- 广告投放分析:结合地域信息做精准广告定向与效果分析。
- CDN / 节点调度:作为简单的地域判断依据,辅助选择就近节点。
总结
dm-ipquery(IPv4 归属地查询) 是平台新增的免费、轻量、毫秒级接口:
- ✅ 本地离线数据库:不依赖第三方在线服务,稳定快速,无外部请求成本;
- ✅ 覆盖广:支持全球全量及国内外主流 IP,返回大洲、国家、省份、城市、区县、运营商、经纬度等 15+ 个字段;
- ✅ 接入简单:GET/POST 一行 URL 即可调用,携带
key鉴权;
- ✅ 两种用法:指定 IP 查询 / 不传参数自动查本机,灵活满足不同场景。
建议开发者:优先使用语义化字段(如 province、city、isp)做业务逻辑,避免对「完整地域字符串」做 | 拆分解析(其格式与数据库版本强耦合,升级后可能变化);对可能为空的字段做好兜底。现在就带上你的密钥,体验一下吧!





好