IP地理位置数据(JSON / CSV)

作者名:Lisa Farrell · 2025-07-29

IP 地理位置数据库 将连续的 IP 区间(ip_from~ip_to)映射到 国家/地区行政区城市经纬度。用于 地域分流合规风控就近调度运营分析 等场景。 数据按 IPv6IPv4 分为两套独立导出,字段一致、文件格式一致。

数据结构(列说明)

  • ip_from VARCHAR(39) NOT NULL:起始 IP(兼容 IPv4/IPv6)。
  • ip_to VARCHAR(39) NOT NULL:结束 IP(兼容 IPv4/IPv6)。
  • country_code CHAR(2):ISO 3166-1 Alpha-2(如 USCN)。
  • region VARCHAR(100):省/州/一级行政区。
  • city VARCHAR(100):城市名称。
  • latitude DECIMAL(9,5):纬度。
  • longitude DECIMAL(9,5):经度。
建表 SQL(MySQL 示例)
CREATE TABLE geoip_ranges (
  ip_from      VARCHAR(39)  NOT NULL,
  ip_to        VARCHAR(39)  NOT NULL,
  country_code CHAR(2),
  region       VARCHAR(100),
  city         VARCHAR(100),
  latitude     DECIMAL(9,5),
  longitude    DECIMAL(9,5),
  PRIMARY KEY (ip_from, ip_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在线下载

每种协议栈(IPv6 / IPv4)均提供三种格式:JSON (.gz)CSV (.gz)SQL (.gz)

来源 类型 格式 下载 说明
IPIN IPv6 JSON (.gz) 下载 IPv6 区间 → 地理信息(JSON 数组)。
IPIN IPv6 CSV (.gz) 下载 标准逗号分隔,含表头,便于 ETL/表格。
IPIN IPv6 SQL (.gz) 下载 含建表与批量 INSERT,直导 MySQL。
IPIN IPv4 JSON (.gz) 下载 IPv4 区间 → 地理信息(JSON 数组)。
IPIN IPv4 CSV (.gz) 下载 标准逗号分隔,含表头,便于 ETL/表格。
IPIN IPv4 SQL (.gz) 下载 含建表与批量 INSERT,直导 MySQL。

注:所有下载均为 .gz 压缩包。可使用 gunzip 解压,或在程序中直接流式处理。

命令行快速下载

curl

# IPv6
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

wget

# 自动采用服务端文件名(--content-disposition)
# IPv6
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

# 指定保存名 + 断点续传
wget -c -O ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget -c -O ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget -c -O ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
wget -c -O ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget -c -O ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget -c -O ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

aria2c(多线程)

# IPv6
aria2c -x16 -s16 -k1M -o ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
aria2c -x16 -s16 -k1M -o ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

PowerShell

# IPv6
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz" -OutFile "ipv6_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz"  -OutFile "ipv6_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz"  -OutFile "ipv6_ip_location.sql.gz"

# IPv4
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz" -OutFile "ipv4_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz"  -OutFile "ipv4_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz"  -OutFile "ipv4_ip_location.sql.gz"

提示:下载得到的是 .gz 压缩文件,可使用 gunzip 或解压工具进行解压;也可在程序中直接以流方式读取。

格式说明

JSON

数组形式;每项包含 ip_fromip_tocountry_coderegioncitylatitudelongitude

[
  {
    "ip_from": "2400:cb00::",
    "ip_to":   "2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff",
    "country_code": "US",
    "region": "California",
    "city": "Los Angeles",
    "latitude": 34.05460,
    "longitude": -118.24400
  }
]
CSV

首行表头;含逗号/引号的字段按 RFC 4180 转义。

ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700
SQL

包含建表与批量 INSERT 语句,适合直接导入 MySQL。

-- 建表见上文
INSERT INTO geoip_ranges
(ip_from, ip_to, country_code, region, city, latitude, longitude) VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);

如何使用(快速上手)

  1. 根据需要选择 IPv6IPv4 的 JSON / CSV / SQL 文件并下载。
  2. 解压并导入数据库(或在程序内直接解析)。
  3. 按国家/地区、区域、城市或经纬度实施分流与合规策略;可结合距离进行就近调度(粗粒度)。
  4. 建立定时任务(如每日/每周)覆盖式更新,保持库新鲜度。

补充说明

  • IPv6/IPv4 均使用相同列定义;仅数据覆盖的地址空间不同。
  • 经纬度和行政区用于近似定位,不代表精确地址;请遵循隐私与合规要求。
  • 如需高性能查询,可将 IPv4 转换为 32 位整数区间,IPv6 使用前缀树/区间树或专用索引。