資料庫文件

離線資料庫與本站查詢使用同一份資料,部署在你自己的伺服器上本地查詢,不依賴網路,也沒有呼叫次數限制。每個版本都提供 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 中回傳標記為保留的記錄。
  • 經緯度是所在行政區的中心點,只適合地區級顯示,不能用於精確定位。
  • 資料僅供購買帳號在授權範圍內使用,不得轉售或公開散布。