数据库文档
离线数据库与本站查询使用同一份数据,部署在你自己的服务器上本地查询,不依赖网络,也没有调用次数限制。每个版本都提供 mmdb 和 xdb 两种格式,覆盖 IPv4 和 IPv6。
- mmdb:一个文件同时包含 IPv4 和 IPv6,字段最全(含中英文名称),数据结构兼容 GeoIP2-City,可以直接使用现有的 mmdb 读取库。
- xdb:IPv4、IPv6 各一个文件,每条记录是用
|分隔的 18 段文本,体积小、查询快,适合高并发场景。 - 每月 1 号更新;同一版本的文件名固定,替换文件即可升级。
文件与版本
文件名由版本代号决定,以 ipdb-enterprise 为例:
| 文件 | 格式 | 内容 |
|---|---|---|
ipdb-enterprise.mmdb | mmdb | IPv4 + IPv6,包含该版本的全部字段 |
ipdb-enterprise-v4.xdb | xdb | IPv4,18 段区域文本 |
ipdb-enterprise-v6.xdb | xdb | IPv6,18 段区域文本 |
各版本包含的字段不同,见下方字段表的「包含于」一列;完整对比见 数据库下载。
| 版本 | 代号 | 字段数 | 格式 |
|---|---|---|---|
| 标准版 | city | 6 | mmdb xdb |
| 专业版 | district | 11 | mmdb xdb |
| ASN 路由版 | asn | 8 | mmdb xdb |
| 旗舰版 | insight | 15 | mmdb xdb |
| 企业版 | enterprise | 25 | mmdb xdb |
字段说明
mmdb 路径用点号表示层级,[0] 表示数组第一项;xdb 位置是 18 段区域文本中的第几段,「—」表示 xdb 中不包含该字段。示例来自 42.203.32.1 的真实记录。
地理位置
| 字段 | 说明 | mmdb 路径 | xdb 位置 | 包含于 |
|---|---|---|---|---|
大洲continent |
大洲中文名;mmdb 中另有两位大洲代码 continent.code 示例 亚洲 |
continent. |
1 | 全部版本 |
国家代码country_code |
国家/地区 ISO 3166-1 两位代码 示例 CN |
country. |
18 | 全部版本 |
国家country |
国家/地区中文名 示例 中国 |
country. |
2 | 全部版本 |
省份 / 州province |
省份 / 州等一级行政区中文名 示例 辽宁 |
subdivisions[0]. |
3 | 标准版专业版旗舰版企业版 |
城市city |
城市中文名 示例 鞍山 |
city. |
4 | 标准版专业版旗舰版企业版 |
区县district |
区县中文名(主要覆盖中国大陆) 示例 铁东 |
extra. |
5 | 专业版旗舰版企业版 |
行政区划代码geo_id |
行政区划代码(中国大陆为 6 位国家标准代码),精确到区县或城市 示例 210302 |
extra. |
9 | 专业版旗舰版企业版 |
经度longitude |
经度(WGS-84),为所在地区的中心点 示例 122.990852 |
location. |
7 | 专业版旗舰版企业版 |
纬度latitude |
纬度(WGS-84),为所在地区的中心点 示例 41.089748 |
location. |
8 | 专业版旗舰版企业版 |
时区timezone |
IANA 时区名 示例 Asia/Shanghai |
location. |
12 | 专业版旗舰版企业版 |
网络 / ASN
| 字段 | 说明 | mmdb 路径 | xdb 位置 | 包含于 |
|---|---|---|---|---|
运营商isp |
运营商名称 示例 中国电信 |
traits. |
6 | 全部版本 |
ASN 号asn |
自治系统号(AS 号);mmdb 中为整数,xdb 中带 AS 前缀 示例 4134 |
traits. |
14 | ASN 路由版旗舰版企业版 |
AS 名称as_name |
自治系统(AS)名称 示例 CHINANET BACKBONE |
traits. |
— | ASN 路由版旗舰版企业版 |
AS 域名as_domain |
自治系统所属机构的域名 示例 chinatelecom.com.cn |
traits. |
— | ASN 路由版旗舰版企业版 |
使用类型usage_type |
使用类型,如 Broadband(宽带)、Mobile(移动网络)、DataCenter(数据中心)、CDN;mmdb traits.user_type 为小写 示例 Broadband |
traits. |
15 | ASN 路由版旗舰版企业版 |
英文名称
| 字段 | 说明 | mmdb 路径 | xdb 位置 | 包含于 |
|---|---|---|---|---|
大洲(英文)continent_en |
大洲英文名 示例 Asia |
continent. |
— | 企业版 |
国家(英文)country_en |
国家/地区英文名 示例 China |
country. |
— | 企业版 |
省份(英文)province_en |
一级行政区英文名 示例 Liaoning |
subdivisions[0]. |
— | 企业版 |
城市(英文)city_en |
城市英文名 示例 Anshan |
city. |
— | 企业版 |
区县(英文)district_en |
区县英文名 示例 Tiedong |
extra. |
— | 企业版 |
国际化
| 字段 | 说明 | mmdb 路径 | xdb 位置 | 包含于 |
|---|---|---|---|---|
国家三位代码country_alpha3 |
国家/地区 ISO 3166-1 三位代码 示例 CHN |
extra. |
— | 企业版 |
语言languages |
当地常用语言代码,多个时用逗号分隔 示例 zh-CN |
extra. |
— | 企业版 |
货币代码currency_code |
当地货币 ISO 4217 代码 示例 CNY |
extra. |
13 | 企业版 |
电话区号phone_prefix |
国际电话区号(不含 +) 示例 86 |
extra. |
10 | 企业版 |
国旗 Emojiemoji_flag |
国旗 Emoji 示例 🇨🇳 |
extra. |
— | 企业版 |
mmdb 格式
mmdb 的数据结构兼容 GeoIP2-City:continent、country、subdivisions、city、location 与标准结构一致,名称提供 zh-CN 和 en 两种语言;运营商、ASN、使用类型放在 traits 中,区县、行政区划代码等扩展字段放在 extra 中。
以 42.203.32.1 为例,全部字段的记录如下(字段较少的版本只包含其中一部分):
{
"continent": { "code": "AS", "names": { "en": "Asia", "zh-CN": "亚洲" } },
"country": { "iso_code": "CN", "names": { "en": "China", "zh-CN": "中国" } },
"registered_country": { "iso_code": "CN", "names": { "en": "China", "zh-CN": "中国" } },
"subdivisions": [ { "names": { "en": "Liaoning", "zh-CN": "辽宁" } } ],
"city": { "names": { "en": "Anshan", "zh-CN": "鞍山" } },
"location": { "latitude": 41.089748, "longitude": 122.990852, "time_zone": "Asia/Shanghai" },
"isp": "中国电信",
"autonomous_system_number": 4134,
"autonomous_system_organization": "CHINANET BACKBONE",
"traits": {
"isp": "中国电信",
"autonomous_system_number": 4134,
"autonomous_system_organization": "CHINANET BACKBONE",
"domain": "chinatelecom.com.cn",
"user_type": "broadband"
},
"extra": {
"district": { "en": "Tiedong", "zh-CN": "铁东" },
"geo_id": "210302",
"country_alpha3": "CHN",
"currency_code": "CNY",
"phone_prefix": "86",
"languages": "zh-CN",
"emoji_flag": "🇨🇳",
"usage_type": "Broadband"
}
}文件元数据中 database_type 为 IP-City,languages 为 zh-CN 和 en,description 包含版本名称和数据月份,build_epoch 是生成时间。
xdb 格式
xdb 为 IPv4、IPv6 两个文件(v3 结构,向量索引)。每个网段对应一条用 | 分隔的 18 段区域文本,没有数据的段为空:
| 位置 | 段名 | 对应字段 |
|---|---|---|
| 1 | continent | 大洲 continent |
| 2 | country | 国家 country |
| 3 | province | 省份 / 州 province |
| 4 | city | 城市 city |
| 5 | district | 区县 district |
| 6 | isp | 运营商 isp |
| 7 | longitude | 经度 longitude |
| 8 | latitude | 纬度 latitude |
| 9 | area_code | 行政区划代码 geo_id |
| 10 | city_code | 电话区号 phone_prefix |
| 11 | zip_code | 保留,始终为空 |
| 12 | time_zone | 时区 timezone |
| 13 | currency | 货币代码 currency_code |
| 14 | asn | ASN 号 asn |
| 15 | usage_type | 使用类型 usage_type |
| 16 | elevation | 保留,始终为空 |
| 17 | weather_station | 保留,始终为空 |
| 18 | country_code | 国家代码 country_code |
示例(42.203.32.1):
亚洲|中国|辽宁|鞍山|铁东|中国电信|122.990852|41.089748|210302|86||Asia/Shanghai|CNY|AS4134|Broadband|||CN
xdb 只包含中文名称;英文名称、国家三位代码、语言、国旗、AS 名称和 AS 域名只在 mmdb 中提供。ASN 带 AS 前缀。
读取示例
以下为通用写法(伪代码),各语言的 mmdb / xdb 读取库用法类似:打开文件,按 IP 查询,再按字段路径或段号取值。请把文件名换成你下载的版本。
mmdb
用任意 mmdb 读取库打开文件,按 IP 查询返回一个嵌套的字典 / 对象,按上表的 mmdb 路径取值;没有记录时返回空。
db = open_mmdb("ipdb-enterprise.mmdb")
record = db.lookup("42.203.32.1")
country = record.country.names["zh-CN"] // 中国
province = record.subdivisions[0].names["zh-CN"] // 辽宁
city = record.city.names["zh-CN"] // 鞍山
district = record.extra.district["zh-CN"] // 铁东
isp = record.traits.isp // 中国电信
asn = record.traits.autonomous_system_number // 4134
lat, lon = record.location.latitude, record.location.longitude
xdb
用支持 v3 结构的 xdb 查询库打开对应 IP 版本的文件(IPv6 用 -v6.xdb),查询返回一条区域文本,按 | 拆成 18 段后按段号取值(下标从 0 开始,即上表位置减 1)。
db = open_xdb("ipdb-enterprise-v4.xdb")
region = db.search("42.203.32.1")
// "亚洲|中国|辽宁|鞍山|铁东|中国电信|122.990852|41.089748|210302|86||Asia/Shanghai|CNY|AS4134|Broadband|||CN"
parts = split(region, "|")
country = parts[1] // 中国
city = parts[3] // 鞍山
isp = parts[5] // 中国电信
asn = parts[13] // AS4134
下载与更新
购买套餐后,在 会员中心 下载已购版本的文件,或复制带 API Key 的 curl 命令。
在服务器上拉取(API Key 放在请求头中,支持断点续传):
/api/databases 返回已购版本的文件清单(大小、SHA-256、构建时间),可以用来校验文件和判断是否有新版本,详见 API 文档。
数据每月 1 号更新,例如每月 2 号凌晨 4 点自动拉取最新版本:
0 4 2 * * curl -sfL -o /opt/ipdb/ipdb-enterprise.mmdb.new -H "Authorization: Bearer ipk_xxx" https://bgp.cx/dl/ipdb-enterprise.mmdb && mv /opt/ipdb/ipdb-enterprise.mmdb.new /opt/ipdb/ipdb-enterprise.mmdb
注意事项
- 没有数据的字段不会出现在 mmdb 记录中,在 xdb 中为空段。
- 私有和保留地址(如 10.0.0.0/8、192.168.0.0/16)不在 mmdb 中,查询没有结果;xdb 中返回标记为保留的记录。
- 经纬度是所在行政区的中心点,只适合地区级展示,不能用于精确定位。
- 数据仅供购买账号在授权范围内使用,不得转售或公开分发。