免费 IP 查询 API

完全免费,无需注册即可调用(匿名有频率限制);注册后凭 API Key 可提升额度。返回 JSON,支持跨域。

1. 查询本机 IP

GET /api/myip

返回调用方公网 IP 及归属地。

2. 查询指定 IP

GET /api/ip?ip=8.8.8.8

可选参数 &key=你的APIKEY 提升调用额度。

3. 查询域名(解析并逐 IP 归属)

GET /api/ip?domain=baidu.com

返回域名解析出的各 IP 及归属地列表。

4. 命令行纯文本查询

GET /ip

专为 curl / shell 脚本设计,返回一行纯文本而非 JSON,方便直接用在脚本里。

$ curl https://www.i5p.com/ip
103.118.252.70 | 中国 香港 港岛 | 阿里云
$ curl "https://www.i5p.com/ip?ip=8.8.8.8"
8.8.8.8 | 美国 加利福尼亚州 山景城 | Google Cloud/DNS/DoH/DoT

不带参数查自己;?ip= 查指定地址;?lang=enja 切换语言。

# 通过代理查询,看到的就是代理的出口 IP(无账号密码)
curl -x http://127.0.0.1:8080 https://www.i5p.com/ip

# 代理需要账号密码时
curl -x http://user:password@127.0.0.1:8080 https://www.i5p.com/ip

socks5 代理把 http:// 换成 socks5:// 即可。这是确认代理有没有生效、出口落在哪里最快的办法。

返回示例

{
  "code": 0,
  "msg": "ok",
  "data": {
    "ip": "8.8.8.8",
    "country": "美国",
    "province": "加利福尼亚州",
    "city": "山景城",
    "zip": "",
    "isp": "Google Cloud/DNS/DoH/DoT"
  }
}

5. 二维码生成

GET /qr/?data=内容&size=300&p=82

GET 请求直接返回 image/png 图片,可直接用在 <img> 标签里。

data 二维码内容(必填,需 URL 编码);size 边长 80–1200,默认 320;p 样式编号 1–120,或登录后生成的专属编号;format=base64 返回 JSON 的 data URI。

<img src="https://www.i5p.com/qr/?data=https%3A%2F%2Fwww.i5p.com&size=300&p=82">

QR

完整参数与在线调试见 二维码

6. 条形码生成

GET /bar/?data=内容&type=ean13

GET 请求直接返回 image/png 图片,支持 7 种一维码制。

data 条码内容(必填);type 码制 code128 / ean13 / ean8 / upca / code39 / itf / codabar,默认 code128;w 单元宽度 1–8;h 高度 20–400;fg/bg 颜色;text=0 隐藏文字。

<img src="https://www.i5p.com/bar/?data=6901234567892&type=ean13&w=3&h=140">

Barcode

完整参数与在线调试见 条形码

请求签名

key 的请求必须签名,api_secret 永远不出现在 URL 里。即使链接被日志或浏览器历史记录下来,也无法伪造后续请求。

key API Key;ts Unix 时间戳(秒,容差 300 秒);nonce 6–64 位随机串(300 秒内不可重复);sign 签名值。四个参数也可改用 X-Api-Key / X-Api-Ts / X-Api-Nonce / X-Api-Sign 请求头传递。

算法:取除 signcallback 外的全部参数,按参数名字典序升序,拼成 k1=v1&k2=v2(值用原始值,不做 URL 编码),再用 api_secret 做 HMAC-SHA256,输出小写十六进制。

// PHP
$key    = 'a1b2c3d4e5';
$secret = '你的secret';
$p = ['ip' => '8.8.8.8', 'key' => $key, 'ts' => time(), 'nonce' => bin2hex(random_bytes(6))];
ksort($p);
$base = [];
foreach ($p as $k => $v) { $base[] = "$k=$v"; }
$p['sign'] = hash_hmac('sha256', implode('&', $base), $secret);
echo file_get_contents('https://www.i5p.com/api/ip?' . http_build_query($p));
// Node.js
const crypto = require('crypto');
const key = 'a1b2c3d4e5', secret = '你的secret';
const p = { ip: '8.8.8.8', key, ts: Math.floor(Date.now() / 1000),
            nonce: crypto.randomBytes(6).toString('hex') };
const base = Object.keys(p).sort().map(k => `${k}=${p[k]}`).join('&');
p.sign = crypto.createHmac('sha256', secret).update(base).digest('hex');
const url = 'https://www.i5p.com/api/ip?' + new URLSearchParams(p);
fetch(url).then(r => r.json()).then(console.log);
#!/bin/bash
KEY="a1b2c3d4e5"; SECRET="你的api_secret"
IP="8.8.8.8"; TS=$(date +%s); NONCE=$(head -c6 /dev/urandom | xxd -p)
BASE="ip=$IP&key=$KEY&nonce=$NONCE&ts=$TS"   # 已按字典序排列
SIGN=$(printf '%s' "$BASE" | openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1)
curl "https://www.i5p.com/api/ip?$BASE&sign=$SIGN"

Key 与 Secret 在用户中心创建。若后台关闭了「API 强制签名」,则只传 key 也可调用(不推荐)。

跨域与 JSONP

所有 JSON 接口都带 Access-Control-Allow-Origin: *,可直接 fetch/XHR 跨域调用;也支持 ?callback=函数名(或 jsonp=)返回 JSONP,供 <script> 标签直接引用。

<script src="https://www.i5p.com/api/myip?callback=showIp"></script>
<script>function showIp(r) { console.log(r.data.ip); }</script>

说明