# 通过ip确定地理位置 | BAC Document
社区开源的第三方哔哩哔哩 API 文档

# 通过ip确定地理位置

## 根据请求IP确定属地

> https://api.bilibili.com/x/web-interface/zone

> https://api.live.bilibili.com/xlive/web-room/v1/index/getIpInfo

> https://app.bilibili.com/x/resource/ip

请求方式：GET

json回复：

根对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0：成功
message | str | 错误信息 | 默认为0
ttl | num | 1 |
data | obj | 信息本体 |

`data`对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
addr | str | 公网IP地址 |
country | str | 国家/地区名 |
province | str | 省/州 | 非必须存在项
city | str | 城市 | 非必须存在项
isp | str | 运营商名 |
latitude | num | 纬度 |
longitude | num | 经度 |
zone_id | num | ip数据库id | 第二个接口无
country_code | num | 国家/地区代码 | 第二个接口无

示例：

    curl 'https://api.bilibili.com/x/web-interface/zone'

查看响应示例：

    {
        "code":0,
        "message":"0",
        "ttl":1,
        "data":{
                "addr":"36.40.120.145",
                "country":"中国",
                "province":"陕西",
                "city":"渭南",
                "isp":"电信",
                "latitude":34.4995,
                "longitude":109.492821,
                "zone_id":4472912,
                "country_code":86
            }
    }

## 查询任意 IP 地址的归属地

> https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr
> https://api.live.bilibili.com/client/v1/Ip/getInfoNew

注: 以上接口等效

请求方式：GET

URL参数:

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
ip | str | IP地址 | 不必要 | IPv4或IPv6地址不限, 留空与根据请求IP确定地理位置基本相同

JSON回复:

根对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0: 成功
message | str | 错误信息 | 默认为空
msg | str | 错误信息 | 同message
data | obj | 信息本体 | 出错时为空数组

`data`对象：

与根据请求IP确定地理位置回复的`data`对象基本相同, 但无 `zone_id` `country_code` 字段

示例:

查询请求IP地址的归属地:

    curl -G 'https://api.live.bilibili.com/client/v1/Ip/getInfoNew'

查看响应示例:

    {
      "code": 0,
      "msg": "",
      "message": "",
      "data": {
        "addr": "104.28.156.113",
        "country": "新加坡",
        "province": "新加坡",
        "city": "",
        "isp": "cloudflare.com",
        "latitude": "1.352083",
        "longitude": "103.819836"
      }
    }

查询IP地址`8.8.8.8`的归属地:

    curl -G 'https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr' \
    --data-urlencode 'ip=8.8.8.8'

查看响应示例:

    {
      "code": 0,
      "msg": "",
      "message": "",
      "data": {
        "addr": "8.8.8.8",
        "country": "GOOGLE.COM",
        "province": "GOOGLE.COM",
        "city": "",
        "isp": "level3.com",
        "latitude": "",
        "longitude": ""
      }
    }