通过ip确定地理位置

根据请求IP确定属地

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

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

请求方式:GET

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
messagestr错误信息默认为0
ttlnum1
dataobj信息本体

data对象:

字段类型内容备注
addrstr公网IP地址
countrystr国家/地区名
provincestr省/州非必须存在项
citystr城市非必须存在项
ispstr运营商名
latitudenum纬度
longitudenum经度
zone_idnumip数据库id第二个接口无
country_codenum国家/地区代码第二个接口无

示例:

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参数:

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

JSON回复:

根对象:

字段类型内容备注
codenum返回值0: 成功
messagestr错误信息默认为空
msgstr错误信息同message
dataobj信息本体出错时为空数组

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": ""
  }
}