免费 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=en 或 ja 切换语言。
# 通过代理查询,看到的就是代理的出口 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">
完整参数与在线调试见 二维码
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">
完整参数与在线调试见 条形码
请求签名
带 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 请求头传递。
算法:取除 sign、callback 外的全部参数,按参数名字典序升序,拼成 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>
说明
code为 0 表示成功,非 0 为错误码(400 参数错误 / 401 Key 无效 / 429 超出频率 / 403 被限制)。- 匿名默认限制:5 QPS、200000 次/天/IP;注册用户凭 Key 默认 5 QPS、5000000 次/天。
- 二维码与条形码接口返回的是图片,不遵循上面的 JSON 错误码;参数有误时返回 JSON 错误说明。
- 如需更高额度,注册账号后在用户中心创建 API Key。