OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  ipinfo:使用 ipinfo.io API 进行高精度的 IP 地理位置查询

ipinfo:使用 ipinfo.io API 进行高精度的 IP 地理位置查询

 
  docker ·  2026-02-04 13:33:13 · 18 次点击  · 0 条评论  

名称: ipinfo
描述: 使用 ipinfo.io API 执行 IP 地理位置查询。将 IP 地址转换为包含城市、地区、国家、邮政编码、时区和坐标的地理数据。适用于 IP 地理定位、丰富 IP 数据或分析地理分布。
主页: https://ipinfo.io
元数据:
{ "openclaw": { "emoji": "🌍", "requires": { "bins": ["curl"] }, "primaryEnv": "IPINFO_TOKEN" } }


IPinfo 地理位置查询

免费的 IP 地理位置 API。基础使用(每月 5 万次请求)无需 API 密钥,如需更高限制可提供令牌。

配置

IPINFO_TOKEN 环境变量是可选的——该技能在免费层级下无需令牌即可工作。如需更高的速率限制,可通过 OpenClaw 仪表盘 UI 进行配置,或手动设置:

  • 仪表盘 UI:在 OpenClaw 仪表盘中配置 IPINFO_TOKEN(可选)
  • 环境变量export IPINFO_TOKEN="your-token"
  • 查询参数?token=YOUR_TOKEN(用于一次性请求)

快速查询

查询单个 IP:

curl -s "https://ipinfo.io/8.8.8.8"

查询当前 IP:

curl -s "https://ipinfo.io/json"

使用令牌(可选,从环境变量读取):

curl -s "https://ipinfo.io/8.8.8.8?token=${IPINFO_TOKEN}"

或直接传递令牌:

curl -s "https://ipinfo.io/8.8.8.8?token=YOUR_TOKEN"

响应格式

JSON 响应包含:

  • ip:IP 地址
  • hostname:反向 DNS 主机名
  • city:城市名称
  • region:州/地区
  • country:两位国家代码(ISO 3166-1 alpha-2)
  • postal:邮政编码
  • timezone:IANA 时区
  • loc:坐标,格式为 "纬度,经度"
  • org:组织/ASN 信息

提取特定字段

使用 jq

curl -s "https://ipinfo.io/8.8.8.8" | jq -r '.city, .country, .loc'

仅提取国家:

curl -s "https://ipinfo.io/8.8.8.8" | jq -r '.country'

解析坐标:

curl -s "https://ipinfo.io/8.8.8.8" | jq -r '.loc' | tr ',' '\n'

批量处理

处理多个 IP:

for ip in 8.8.8.8 1.1.1.1 208.67.222.222; do
  if [ -n "$IPINFO_TOKEN" ]; then
    echo "$ip: $(curl -s "https://ipinfo.io/$ip?token=$IPINFO_TOKEN" | jq -r '.city, .country' | tr '\n' ', ')"
  else
    echo "$ip: $(curl -s "https://ipinfo.io/$ip" | jq -r '.city, .country' | tr '\n' ', ')"
  fi
done

Python 使用示例

import os
import requests

# 无令牌(免费层级)
response = requests.get("https://ipinfo.io/8.8.8.8")
data = response.json()
print(f"{data['city']}, {data['country']}")
print(f"坐标: {data['loc']}")

从环境变量读取令牌:

import os
import requests

token = os.getenv("IPINFO_TOKEN")
if token:
    response = requests.get("https://ipinfo.io/8.8.8.8", params={"token": token})
else:
    response = requests.get("https://ipinfo.io/8.8.8.8")
data = response.json()

或直接传递令牌:

response = requests.get("https://ipinfo.io/8.8.8.8", params={"token": "YOUR_TOKEN"})

速率限制

  • 免费层级:每月 50,000 次请求,约每秒 1 次请求
  • 使用令牌:根据订阅计划提供更高限制
  • 可通过 OpenClaw 仪表盘 UI 或环境变量配置 IPINFO_TOKEN

常见用例

  • IP 地址地理定位
  • 为 IP 列表丰富地理位置数据
  • 按国家筛选 IP
  • 使用坐标计算 IP 之间的距离
  • IP 时区检测
18 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 13 ms
Developed with Cursor