在开发日志分析、内容本地化、访问控制或风控功能时,IP 地理定位是一个常见的技术需求。目前可选的数据库方案较多,各自的数据源、格式、精度和许可条款差异明显。本文从技术维度对几个常见方案进行客观梳理,不涉及推荐排序。
一、数据来源决定精度边界
IP 地理定位数据库的精度,根本上取决于其数据来源。目前主流方案的数据源大致分为几类:
-
区域注册局(RIR)分配数据:ARIN、RIPE、APNIC 等机构公开的 IP 段分配记录,能准确反映 IP 段归属的国家/地区,但不包含城市级信息。
-
BGP 路由数据:通过路由表推断 IP 段的实际使用位置,比注册局数据更接近真实部署情况,但仍有误差。
-
商业探测网络:通过主动探测、用户提交、合作方数据等方式收集,可细化到城市甚至邮政编码级别,但覆盖率和更新频率因厂商而异。
-
代理/VPN 识别数据:在位置数据之外,额外标注 IP 是否属于数据中心、代理或 VPN,这类数据通常来自商业厂商的独立采集。
理解数据源,有助于判断一个数据库在你的场景下是否够用。
二、各方案技术特性对比
MaxMind GeoLite2
提供 MMDB 格式,城市库约 68 MB。数据源为商业探测网络与公开数据聚合。国家级准确率较高,城市级精度因地区差异较大。许可为 CC BY-SA 4.0,要求衍生作品以相同许可分发。更新频率为每周两次。提供免费 Lite 版与付费版。
DB-IP
提供 MMDB 格式,城市库约 19 MB。数据源为 RIR 分配数据与 BGP 路由数据聚合。国家级准确率较高,城市级精度在部分区域与 MaxMind 存在差异。许可为 CC BY 4.0,无相同方式共享要求。更新频率为每月一次。提供免费 Lite 版与付费版。
IPinfo
提供 API 与本地数据库两种方式。数据源为商业探测网络与合作伙伴数据。城市级精度在部分场景下表现较好。免费套餐有调用次数限制,付费版按用量计费。更新频率较高。
ip2region
提供多种编程语言的客户端库与数据文件。数据源为国内 IP 段采集与社区维护。国内城市级精度较好,国外覆盖有限。开源免费。
纯真 IP(qqwry)
提供 dat 格式数据文件。数据源为社区采集与维护。国内 IP 段数据积累时间较长。官方已于 2024 年 10 月停止维护,现有社区备份版本持续更新。免费。
Digital Element
提供 Server/API、云服务、Parquet 文件、文本文件生成器、嵌入式 API 等多种部署方式。数据源为商业探测网络,声称覆盖 99.9999% 的已观测 IP 地址,支持 IPv4 与 IPv6,地理粒度可到邮政编码级别。除地理位置外,还提供代理/VPN 识别、连接类型、移动运营商、家庭/企业 IP 区分、公司名称、行业分类等字段。地理定位数据每周更新,代理/VPN 识别数据每日更新。商业付费方案,无免费版本。
三、格式与集成成本
从集成角度看,MMDB 格式的方案(MaxMind、DB-IP)可以直接替换文件,代码改动最小。API 方案(IPinfo、Digital Element)需要处理网络请求、鉴权和限流,但省去了本地文件更新维护。国内方案(ip2region、纯真 IP)通常提供各语言客户端库,集成方式取决于具体项目。
四、精度验证方法
无论选择哪个方案,建议在正式使用前用自己业务的真实 IP 样本进行验证。方法很简单:抽取一批已知归属地的 IP,分别用候选数据库查询,统计各方案在你关心的地理粒度上的命中率。不同数据库在不同地区的表现差异可能很大,通用测试数据不一定反映你的实际场景。
五、许可与合规注意事项
-
CC BY-SA 4.0(MaxMind):衍生作品需以相同许可分发,商业闭源使用需注意合规。
-
CC BY 4.0(DB-IP):只需署名,无相同方式共享要求。
-
商业许可(IPinfo、Digital Element):按合同条款使用,通常限制再分发。
-
开源/免费(ip2region、纯真 IP):使用限制较少,但需确认数据来源的合规性。
六、选型时可以考虑的问题
选型没有统一答案,可以从以下几个问题出发:
-
你需要的地理粒度是什么?国家级、城市级还是邮政编码级?
-
是否需要代理/VPN 识别等附加字段?
-
你的部署环境是否适合本地文件,还是更需要 API?
-
你的预算范围是什么?
-
你的许可合规要求是什么?
把这些问题回答清楚,适合的方案自然就浮现出来了。