做网站要显示访客位置、写脚本要查IP归属地、做风控要判断代理IP——免费 IP 查询接口怎么选?这个问题我们最有发言权:本站的全球库就是基于 ipinfo.io 做的,这几年踩过的坑、用过的接口都在这了。
下面按"真实使用体验"写:先讲选型前要想清楚的三个问题,再逐个对比主流免费接口,最后给可以直接跑的示例代码。
一、选接口之前,先想清楚三件事
很多人在这一步就选错了,导致后期换接口重写代码。三个问题:
- 量级:一天几百次还是几万次?免费接口几乎都限流,量级决定你能不能白嫖。
- 字段:只要国家/城市,还是需要 ASN、时区、经纬度、代理检测?字段越全的接口越少。
- 地域:主要查国内 IP 还是全球 IP?国内 IP 用国内库(纯真等)更准,全球 IP 用 ipinfo 这类更全。
二、主流免费接口对比
| 接口 | 免费额度 | 需要KEY | 特点 |
|---|---|---|---|
| ipinfo.io | 每月约5万次 | 需要(免费token) | 字段最全,含ASN/时区/运营商,本站全球库在用 |
| ip-api.com | 每分钟45次 | 不需要 | 无需注册,免费版无HTTPS,适合服务端 |
| ip.sb | 无明确限额(限速) | 不需要 | 极简,curl一行可用 |
| ip2location lite | 每月约1万次 | 需要 | 免费版字段较少 |
| 纯真库(QQWry) | 本地库免费 | 无 | 国内数据准、离线可用,需定期更新 |
⚠️ 免费额度和限流策略各厂商经常调整,上表是长期以来的普遍情况,以各官网最新说明为准。别把额度写死在代码里做容量规划。
三、逐个说:实测感受
ipinfo.io:字段最全,本站的选择
返回字段包含 IP、城市、区域、国家、坐标、时区、ASN、运营商,写日志、做展示、做风控都能用。免费版每月约 5 万次,个人站点够用。唯一要注意的是 token 只能放服务端——放前端等于公开,任何人都能盗用你的额度;浏览器直连也会把你的访客IP暴露给第三方。这也是所有靠谱实现都建议服务端转发的原因。
ip-api.com:无需注册,但注意HTTPS
免费版没有 HTTPS,浏览器里直接调用会被拦截(混合内容),所以更适合服务端用。支持 ?lang=zh-CN 返回中文,字段含 ISP、坐标,日常调试很方便。
ip.sb:一行命令查IP
最轻量的选择,curl 一下就能拿到 JSON。适合脚本里快速确认出口IP,不适合做业务依赖(没有 SLA、限速)。
纯真库(QQWry):国内数据的离线方案
本地数据库文件,查询不依赖网络、没有限流,国内省市数据维护得不错。适合高频查询和对隐私敏感的场景(IP 不出服务器)。代价:需要自己定期更新库文件,且只有国内归属地。
四、示例代码
curl 一行版
# ipinfo(把 YOUR_TOKEN 换成你的)
curl "https://ipinfo.io/8.8.8.8/json?token=YOUR_TOKEN"
# ip-api(无KEY,返回中文)
curl "http://ip-api.com/json/8.8.8.8?lang=zh-CN"
Node.js 服务端调用
// ip-api 服务端调用,Node 18+ 直接可用(免费版无HTTPS,适合服务端)
const res = await fetch("http://ip-api.com/json/8.8.8.8?lang=zh-CN");
const data = await res.json();
console.log(data.city, data.regionName, data.isp);
五、到底怎么选?
- 要全球数据、字段全 → ipinfo(配服务端代理)
- 国内为主、量大、要离线 → 纯真本地库
- 临时调试、脚本验证 → ip-api / ip.sb
- 要稳定额度 → 直接上付费套餐,免费接口别做容量规划
💡 通用原则:免费接口的 KEY 永远不要放前端。任何人在浏览器里都能看到你的 JS,KEY 放了就等于公开。要用的接口一律从服务端转发,顺便还能做限流和缓存。
六、常见问题
免费接口为什么都限流?
IP 归属数据库本身要花钱维护(商业授权),免费额度本质是"试用引流"。量大了要么付费,要么自己维护离线库。
能自建IP库吗?
可以。免费来源有 MaxMind GeoLite2、纯真库,按周/月更新,配合自己的查询服务即可。适合查询量稳定且大的场景。
接口返回的位置准吗?
城市级是常态,别指望精确到街道。为什么不准、怎么交叉验证,见这篇:为什么IP定位不准?IP归属地查询的原理、误差与真相。
调用接口报跨域错误怎么办?
免费版大多不带 Access-Control-Allow-Origin,前端直调会失败。两个解法:从自己的服务端转发(推荐),或者用支持 JSONP 的接口(腾讯位置服务等)。
七、总结
一句话选型:开发调试用 ip-api,生产环境用 ipinfo + 服务端代理,量大转本地库。最后多说一句经验:开放接口很容易被白嫖和盗用,个人站长维护不起——本站之前也开放过查询接口,后来还是决定不对外提供,专心做工具本身。KEY 永远别放前端。
🚀 立即体验:在 首页工具 直接查询任意IP的归属地与运营商,无需注册,即开即用。