IP 信息查询 API

输入 IP 地址,返回归属地信息与文化典故。国内返回诗词,国外返回景点故事。

服务正常 32 省份诗词 15+ 国家故事 24h 缓存

02API 接口

GET /?ip={ip}

查询指定 IP 的归属地信息与文化典故。不传 ip 参数则返回当前客户端 IP 的信息。

curl
curl "./?ip=114.114.114.114"

03响应示例

国内 IP
国外 IP
错误响应
json 诗词
{
    "code": 200,
    "success": true,
    "ip": "114.114.114.114",
    "location": {
        "country": "中国",
        "region": "江苏",
        "city": "南京",
        "district": null,
        "isp": "China Telecom"
    },
    "culture": {
        "type": "poem",
        "content": "姑苏城外寒山寺,夜半钟声到客船。"
    }
}
json 景点
{
    "code": 200,
    "success": true,
    "ip": "8.8.8.8",
    "location": {
        "country": "美国",
        "region": "加利福尼亚州",
        "city": "山景城",
        "district": null,
        "isp": "Google LLC"
    },
    "culture": {
        "type": "story",
        "content": "自由女神像:矗立在纽约港的巨型铜像,象征自由与民主,是法国于1886年赠送给美国的礼物。"
    }
}
json
{
    "code": 503,
    "success": false,
    "ip": "8.8.8.8",
    "error": "归属地查询失败(API超时或网络错误)",
    "location": null,
    "culture": null
}

04参数说明

参数 类型 必填 默认值 说明
ip string 选填 客户端 IP 要查询的 IP 地址,不传则返回当前客户端 IP 信息
💡
缓存机制
查询结果会缓存 24 小时,相同 IP 再次请求直接返回缓存,无需重复调用外部 API。
⚠️
数据来源
IP 归属地来自 ip-api.com,定位精度受运营商分配策略影响,移动网络可能存在省份/城市偏差。

05代码示例

JavaScript

JavaScript
async function queryIp(ip) {
  const url = `./?ip=${ip}`;
  const response = await fetch(url);
  const data = await response.json();

  if (data.success) {
    console.log(`归属地:${data.location.country} ${data.location.region}`);
    console.log(`文化:${data.culture.content}`);
  }
}

queryIp('114.114.114.114');

Python

Python
import requests

def query_ip(ip):
    url = f'./?ip={ip}'
    response = requests.get(url, timeout=10)
    data = response.json()

    if data['success']:
        loc = data['location']
        print(f"归属地:{loc['country']} {loc['region']} {loc['city']}")
        print(f"文化:{data['culture']['content']}")
    else:
        print(f"查询失败:{data['error']}")

query_ip('114.114.114.114')

PHP

PHP
<?php
function queryIp($ip) {
    $url = "./?ip=" . urlencode($ip);
    $response = file_get_contents($url);
    $data = json_decode($response, true);

    if ($data['success']) {
        $loc = $data['location'];
        echo "归属地:{$loc['country']} {$loc['region']}\n";
        echo "文化:{$data['culture']['content']}\n";
    }
}

queryIp('114.114.114.114');

Node.js

Node.js
const https = require('https');

function queryIp(ip) {
  const url = `./?ip=${encodeURIComponent(ip)}`;

  https.get(url, (res) => {
    let data = '';
    res.on('data', chunk => data += chunk);
    res.on('end', () => {
      const result = JSON.parse(data);
      if (result.success) {
        console.log(`归属地:${result.location.country} ${result.location.region}`);
        console.log(`文化:${result.culture.content}`);
      }
    });
  });
}

queryIp('114.114.114.114');
响应字段说明
location.country 国家 · location.region 省份/州 · location.city 城市
location.isp 运营商 · culture.type poem/story · culture.content 文化内容