数据库文档

离线数据库与本站查询使用同一份数据,部署在你自己的服务器上本地查询,不依赖网络,也没有调用次数限制。每个版本都提供 mmdb 和 xdb 两种格式,覆盖 IPv4 和 IPv6。

  • mmdb:一个文件同时包含 IPv4 和 IPv6,字段最全(含中英文名称),数据结构兼容 GeoIP2-City,可以直接使用现有的 mmdb 读取库。
  • xdb:IPv4、IPv6 各一个文件,每条记录是用 | 分隔的 18 段文本,体积小、查询快,适合高并发场景。
  • 每月 1 号更新;同一版本的文件名固定,替换文件即可升级。

文件与版本

文件名由版本代号决定,以 ipdb-enterprise 为例:

文件格式内容
ipdb-enterprise.mmdbmmdbIPv4 + IPv6,包含该版本的全部字段
ipdb-enterprise-v4.xdbxdbIPv4,18 段区域文本
ipdb-enterprise-v6.xdbxdbIPv6,18 段区域文本

各版本包含的字段不同,见下方字段表的「包含于」一列;完整对比见 数据库下载。

版本代号字段数格式
标准版city6mmdb xdb
专业版district11mmdb xdb
ASN 路由版asn8mmdb xdb
旗舰版insight15mmdb xdb
企业版enterprise25mmdb xdb

字段说明

mmdb 路径用点号表示层级,[0] 表示数组第一项;xdb 位置是 18 段区域文本中的第几段,「—」表示 xdb 中不包含该字段。示例来自 42.203.32.1 的真实记录。

地理位置

字段说明mmdb 路径xdb 位置包含于
大洲
continent
大洲中文名;mmdb 中另有两位大洲代码 continent.code
示例 亚洲
continent.names.zh-CN 1 全部版本
国家代码
country_code
国家/地区 ISO 3166-1 两位代码
示例 CN
country.iso_code 18 全部版本
国家
country
国家/地区中文名
示例 中国
country.names.zh-CN 2 全部版本
省份 / 州
province
省份 / 州等一级行政区中文名
示例 辽宁
subdivisions[0].names.zh-CN 3 标准版专业版旗舰版企业版
城市
city
城市中文名
示例 鞍山
city.names.zh-CN 4 标准版专业版旗舰版企业版
区县
district
区县中文名(主要覆盖中国大陆)
示例 铁东
extra.district.zh-CN 5 专业版旗舰版企业版
行政区划代码
geo_id
行政区划代码(中国大陆为 6 位国家标准代码),精确到区县或城市
示例 210302
extra.geo_id 9 专业版旗舰版企业版
经度
longitude
经度(WGS-84),为所在地区的中心点
示例 122.990852
location.longitude 7 专业版旗舰版企业版
纬度
latitude
纬度(WGS-84),为所在地区的中心点
示例 41.089748
location.latitude 8 专业版旗舰版企业版
时区
timezone
IANA 时区名
示例 Asia/Shanghai
location.time_zone 12 专业版旗舰版企业版

网络 / ASN

字段说明mmdb 路径xdb 位置包含于
运营商
isp
运营商名称
示例 中国电信
traits.isp 6 全部版本
ASN 号
asn
自治系统号(AS 号);mmdb 中为整数,xdb 中带 AS 前缀
示例 4134
traits.autonomous_system_number 14 ASN 路由版旗舰版企业版
AS 名称
as_name
自治系统(AS)名称
示例 CHINANET BACKBONE
traits.autonomous_system_organization — ASN 路由版旗舰版企业版
AS 域名
as_domain
自治系统所属机构的域名
示例 chinatelecom.com.cn
traits.domain — ASN 路由版旗舰版企业版
使用类型
usage_type
使用类型,如 Broadband(宽带)、Mobile(移动网络)、DataCenter(数据中心)、CDN;mmdb traits.user_type 为小写
示例 Broadband
traits.user_type 15 ASN 路由版旗舰版企业版

英文名称

字段说明mmdb 路径xdb 位置包含于
大洲(英文)
continent_en
大洲英文名
示例 Asia
continent.names.en — 企业版
国家(英文)
country_en
国家/地区英文名
示例 China
country.names.en — 企业版
省份(英文)
province_en
一级行政区英文名
示例 Liaoning
subdivisions[0].names.en — 企业版
城市(英文)
city_en
城市英文名
示例 Anshan
city.names.en — 企业版
区县(英文)
district_en
区县英文名
示例 Tiedong
extra.district.en — 企业版

国际化

字段说明mmdb 路径xdb 位置包含于
国家三位代码
country_alpha3
国家/地区 ISO 3166-1 三位代码
示例 CHN
extra.country_alpha3 — 企业版
语言
languages
当地常用语言代码,多个时用逗号分隔
示例 zh-CN
extra.languages — 企业版
货币代码
currency_code
当地货币 ISO 4217 代码
示例 CNY
extra.currency_code 13 企业版
电话区号
phone_prefix
国际电话区号(不含 +)
示例 86
extra.phone_prefix 10 企业版
国旗 Emoji
emoji_flag
国旗 Emoji
示例 🇨🇳
extra.emoji_flag — 企业版

mmdb 格式

mmdb 的数据结构兼容 GeoIP2-City:continent、country、subdivisions、city、location 与标准结构一致,名称提供 zh-CN 和 en 两种语言;运营商、ASN、使用类型放在 traits 中,区县、行政区划代码等扩展字段放在 extra 中。

以 42.203.32.1 为例,全部字段的记录如下(字段较少的版本只包含其中一部分):

ipdb-enterprise.mmdb
{
  "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 段区域文本,没有数据的段为空:

位置段名对应字段
1continent大洲 continent
2country国家 country
3province省份 / 州 province
4city城市 city
5district区县 district
6isp运营商 isp
7longitude经度 longitude
8latitude纬度 latitude
9area_code行政区划代码 geo_id
10city_code电话区号 phone_prefix
11zip_code保留,始终为空
12time_zone时区 timezone
13currency货币代码 currency_code
14asnASN 号 asn
15usage_type使用类型 usage_type
16elevation保留,始终为空
17weather_station保留,始终为空
18country_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 放在请求头中,支持断点续传):

curl -LOJ -C - -H "Authorization: Bearer ipk_xxx" https://bgp.cx/dl/ipdb-enterprise.mmdb

/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 中返回标记为保留的记录。
  • 经纬度是所在行政区的中心点,只适合地区级展示,不能用于精确定位。
  • 数据仅供购买账号在授权范围内使用,不得转售或公开分发。