安全团队每天要从防火墙日志里筛出几千个可疑IP做归属地核查,电商平台要在注册环节对每个新用户实时判断地区风控。同样是ip归属地查询,前者一天几万次,后者每秒上千次。方案选错,要么卡在限频上,要么白花一笔钱。
批量IP查询有三条路:在线工具/API、脚本调用、本地离线库。各自对应不同量级。
一、三种方案先看清差别
|------------|---------------|--------------|------------|--------------|
| 方案 | 代表 | 查询速度 | 成本 | 适用量级 |
| 在线工具/API | ip-api、IP138 | 慢,受限频 | 免费(限制额度) | 少量(<千次/天) |
| 脚本+API | Python/Shell | 中,可并发 | 按量计费 | 中量(千~万次/天) |
| 本地离线库 | ip2region、纯真库 | 快,无网络 | 免费/一次性 | 大量高频 |
差别集中在一个词:限频。免费API普遍限45次/分钟,一天也就几万次的量,批量场景下很快就撞墙。

批量IP归属地查询三种方案对比图
二、方案一:在线工具/API------少量查询够用
几百个IP以内的临时核查,打开ip-api.com或IP138就行,手动查或小脚本调用都顺手。零部署、上手快,代价是免费额度有限、数据更新不稳定。
这里有个常见的坑:免费IP库城市级准确率普遍只有55%~75%。查十个别地方对不上的IP,四五个是库本身没更新。少量查询图省事可以,别拿它做风控。
三、方案二:脚本调用------中量上脚本
量上到每天几千次,手点不现实,得上脚本。相比免费接口,专业服务不限频、精度更高。
python
import requests
def batch_query(ip_list, api_key):
"""批量查询IP归属地(IP数据云 API)"""
results = []
for ip in ip_list:
url = "https://api.ipdatacloud.com/v2/query"
params = {"ip": ip, "key": api_key}
try:
data = requests.get(url, params=params, timeout=3).json()
if data.get("code") == 200:
info = data.get("data", {})
results.append(f"{ip} → {info.get('country','')} {info.get('province','')} {info.get('city','')}")
else:
results.append(f"{ip} → 查询失败")
except Exception:
results.append(f"{ip} → 查询失败")
return results
ips = ["8.8.8.8", "114.114.114.114", "223.5.5.5"]for line in batch_query(ips, "your_api_key"):
print(line)
脚本方案的瓶颈还是限频和调用成本。真要跑每天几万次以上的量,得继续往下看。
四、方案三:离线库------大批量高频用这个
量级再往上,或者对速度有硬要求(毫秒级返回),就该上离线库。把IP数据库加载到本地内存,查询不联网、不限频。
- ip2region:10微秒级别查询,支持IPv4/IPv6,免费开源
- 纯真IP库:老牌国产库,官方版本2024年10月已停止维护,注意数据时效
- 商业离线库(企业级):如IP数据云,支持日更、精度可达区县级,适合金融风控、安全这类对数据和合规要求极高的场景
离线库还有个容易忽略的好处:数据不出内网。对合规敏感的企业(银行、政务),这点往往比速度更要紧。
五、怎么选?一张决策表
|------------------|------------------|
| 你的情况 | 选方案 |
| 偶尔查几个IP | 在线工具,够了 |
| 每天几千次,能容忍限频 | 脚本+专业API |
| 每天几万次,或要毫秒级响应 | 离线库(ip2region) |
| 金融/安全风控,要求高精度+合规 | 企业级商业离线库(日更、区县级) |
很多人先上免费API跑通业务,等量上来再迁移离线库,结果接口字段对不上,白改一轮。建议从第一天就按最终量级选型,省掉二次迁移。
选型前想清楚三件事:一天到底查多少次、要求多快返回、数据能不能出内网。这三条定了,方案自然就定了。
数据来源:
- BigDataCloud,《IP Geolocation Accuracy Report》
- 中国互联网络信息中心(CNNIC),《第57次中国互联网络发展状况统计报告》
- APNIC(亚太互联网络信息中心)