无需注册、无需 API Key。 直接请求即可。 Base URL:
https://ipyou.net(http://也可,命令行客户端不会被强制跳转)
对外只有两个接口,够覆盖绝大多数需求:
| 接口 | 说明 |
|---|---|
GET / |
查你自己的 IP 信息 |
GET /<IP> |
查指定 IP 的信息 |
默认返回纯文本(终端里直接可读);加一个 Accept: application/json 头就返回 JSON。
命令行客户端(curl / wget / httpie 等)访问会自动返回纯文本;浏览器访问同样地址返回网页。
$ curl ipyou.net
IP : 203.0.113.9
归属地 : 中国 广东省 广州市
运营商 : 电信
ASN : AS4134 CHINANET BACKBONE (chinatelecom.com.cn)
类型 : 家庭宽带
风控值 : 15 (low)
经纬度 : 23.1291, 113.2644
场景 : TikTok ★★★★★ 跨境电商 ★★★★★ 社媒运营 ★★★★★ AI 应用 ★★★★★$ curl ipyou.net/1.1.1.1
IP : 1.1.1.1
归属地 : Australia Queensland Brisbane
运营商 : Cloudflare, Inc.
ASN : AS13335 Cloudflare, Inc. (cloudflare.com)
类型 : 数据中心
风控值 : 55 (high)
rDNS : one.one.one.one
经纬度 : -27.4675, 153.0281
场景 : TikTok ★☆☆☆☆ 跨境电商 ★★☆☆☆ 社媒运营 ★★☆☆☆ AI 应用 ★★★★★同样两个地址,加 Accept: application/json:
curl -H "Accept: application/json" ipyou.net # 你自己的 IP
curl -H "Accept: application/json" ipyou.net/1.1.1.1 # 指定 IP返回包含归属地、运营商、ASN、IP 类型、风控值、适用场景、黑名单状态等。
常用取值(需 jq):
API="curl -s -H Accept:application/json"
# 只要 IP
$API ipyou.net | jq -r '.ip'
# IP 类型
$API ipyou.net/1.1.1.1 | jq -r '.usage_inferred.label'
# 风控值 + 等级
$API ipyou.net/1.1.1.1 | jq -r '.ip_score | "\(.score) \(.level)"'
# 是否住宅 IP
$API ipyou.net/1.1.1.1 \
| jq -r 'if (.usage_inferred.label // "") | test("家庭宽带|移动网络")
then "residential" else "not-residential" end'
# 是否命中黑名单
$API ipyou.net/1.1.1.1 | jq -r '.blocklisted'用任何 HTTP 库都一样 —— 只要带上
Accept: application/json,不必伪装 User-Agent。 字段可能随功能迭代增删,请按「字段存在才读」的方式写代码。需要长期稳定的输出就用纯文本。
没有批量接口 —— 单个接口足够快,循环调用就行,记得留点间隔:
while read -r ip; do
curl -s "ipyou.net/$ip"
sleep 1
done < ips.txt导出 CSV(用本仓库的 batch-check.sh 更省事,已处理去重、限速与字段提取):
./scripts/batch-check.sh ips.txt > result.csv有防滥用限流,正常使用完全够。循环调用请加间隔(建议每次 ≥1 秒),超限会返回 429,按响应头 Retry-After 稍后重试即可。
| 状态码 | 含义 |
|---|---|
200 |
成功 |
400 |
IP 格式非法 |
429 |
触发限流,稍后重试 |
5xx |
服务端异常 |
错误响应:纯文本模式返回一行说明;JSON 模式返回 {"error":"invalid ip"}。
带退避的调用示例:
for i in 1 2 3; do
out=$(curl -s -w '\n%{http_code}' --max-time 10 "ipyou.net/$ip")
code=$(echo "$out" | tail -1)
[ "$code" = "200" ] && { echo "$out" | head -n -1; break; }
sleep $((i * 5))
done- 给请求设置超时(
--max-time 10),不要在紧密循环里无节制调用。 - 查自己的 IP 不走缓存,换网络 / 切代理立刻返回新结果;查指定 IP 的结果有缓存,重复查很快。
- 若某项数据暂缺,接口仍返回
200、对应字段为空,不会整体失败 —— 写脚本时请判断字段是否存在。