批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比

安全团队每天要从防火墙日志里筛出几千个可疑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(亚太互联网络信息中心)
相关推荐
YUJIANYUE17 小时前
免费安卓手机版网络工具箱ping traceroute mtr等10+功能
网络
cts61817 小时前
FDE架构师前端选型指南
python
那年窗外下的雪.17 小时前
AIDC 学习日志|第 21 天|EVPN 多归属故障演练与中断窗口定位
网络·git·学习
幼儿园蛋小黄17 小时前
基于 TCP 的嵌入式网络通信学习总结
网络协议·学习·tcp/ip
2601_9622937917 小时前
【Python教程:自动化处理文件】
python·自动化·编程·文件处理·os模块
禹凕17 小时前
快速幂算法详解与实战
python·算法
啊阿狸不会拉杆18 小时前
《计算机网络-自顶向下方法》5.1 概述 读书笔记
网络·计算机网络·智能路由器
sylviiiiiia18 小时前
leetcode hot 100
python·算法·leetcode
半摆烂日常18 小时前
自建WMS和买成品:三年成本对比
大数据·服务器·数据库·python·深度学习·低代码·numpy
Polevne18 小时前
C# 上位机UDP/TCP连接外部设备
网络·tcp/ip·udp