在网络开发、风控、安全、广告投放和数据分析等领域,IP 地理定位是基础能力之一。传统的 MaxMind GeoLite 等数据库对中国大陆的精度往往只到省级或市级,无法满足精细化需求。而 GeoCN正是为解决这一痛点而生的开源项目:**中国大陆高精度 IPv4 + IPv6 离线库,部分 IP 精确到区级**。

GeoCN 网站截图
GeoCN 的核心特色
- 高精度定位 项目专注于中国大陆 IP 段,仅包含 MaxMind 显示为 CN 的数据。通过二分算法扫描公开高质量 API 接口并清洗整理,IPv4 网段超过 110 万,IPv6 网段数万条。许多 IP 可精确到区/县级别,远超常规数据库。区域编码数据来源于可靠的,确保行政区划准确。
- MMDB 格式,兼容性强 提供标准的 GeoCN.mmdb 文件,可直接被 MaxMind 官方库(如 maxminddb-golang、geoip2 等)读取。支持同时集成 ASN、City 等其他数据库,轻松扩展。
- 丰富数据字段
- IPv4:主要包含 division_code(行政区划代码)和 isp(运营商)。
- IPv6:额外包含 type(宽带、基站、专线、IDC 等)。 结合内置的省份/城市/区划映射,能返回全称、简称等结构化信息,非常适合后端服务解析。
- 随缘高频更新 作者会根据上游 API 精度定期更新(最新版本如 v26.4.19)。虽然不是每日更新,但数据质量和覆盖率在同类开源项目中处于领先水平。如果你有更好的公开 API,也欢迎贡献。
- 免费开源 + 在线演示 完全开源(Go 语言实现),GitHub Star 近 500。提供多个在线查询演示站点:
适用场景
- 安全与风控:精准识别用户所在区县,防范地域性欺诈。
- 广告与推荐:实现区县级别的精准营销,提升转化。
- 日志分析 / CDN:本地化流量调度、统计。
- P2P / 下载工具:如 PeerBanHelper 等项目已集成 GeoCN 用于客户端识别。
- 自建 IP 查询服务:搭建私有化、高性能 API。
如何部署 GeoCN
GeoCN 部署非常友好,提供 Docker 一键部署 和 源码编译 两种方式。
1. 最推荐:Docker 部署(最简单)
Bash
docker run -d -p 8000:80 netart/ipapi
- 容器已内置最新数据和所有依赖。
- 映射 8000 端口(或自定义)后,即可通过 http://your-ip:8000/ 或带 IP 参数访问。
- 更新数据:docker pull netart/ipapi 重新拉取镜像即可。
2. 源码部署(灵活自定义)
- Clone 项目:
Bash
git clone https://github.com/ljxi/GeoCN.git
cd GeoCN
- 下载最新 mmdb 文件:
Bash
wget https://github.com/ljxi/GeoCN/releases/latest/download/GeoCN.mmdb -O db/GeoCN.mmdb
(同时可放置 GeoLite2-ASN.mmdb 和 GeoLite2-City.mmdb 到 db/ 目录
- 编译运行(需 Go 环境):
Bash
go build -o geoip-server main.go
./geoip-server
或使用提供的 Dockerfile 自行构建镜像。
项目支持环境变量自定义路径:
- CN_DB、CITY_DB、ASN_DB、LISTEN 等,适合不同数据库组合或端口需求。
服务返回标准的 JSON 格式,包含 IP、归属地、运营商、行政区划(全称/简称)、AS 信息等,解析友好。
总结与建议
GeoCN 的最大价值在于离线 + 高精度 + 易集成的组合。在隐私合规越来越严格的今天,本地化部署避免了频繁调用第三方在线 API 的风险和延迟。无论是个人开发者还是企业团队,都能快速将其融入现有系统中。