API 与本机采集器

稳定的 v1 查询契约、按密钥计量,以及在自己电脑上运行的出口监控。

更新于 · 出口观测台

请求契约

前缀 /myip-api/v1。使用 Authorization: Bearer 传递密钥;不要放入 URL、公开脚本或浏览器存储。所有响应禁止缓存和索引。

成功响应含 apiVersion、observedAt、data。observedAt 是 API 读取时间,快照时间在 data.datasets 中。无效输入返回 400,无效密钥 401,超额 429,未接入或数据不可用 503。未知状态必须保留,不能转换为零风险。

每密钥每分钟最多 60 次,UTC 日额度由部署者配置。响应的 RateLimit-Limit、RateLimit-Remaining、RateLimit-Reset 提供当前用量;429 时读取 Retry-After 并退避。此版本只查询本地快照,不调用商业风险源。

429 的 usage.limitType 区分 minute 与 daily;usage.retryAt 是实际恢复的 UTC 时间戳(毫秒),retryAfterSeconds 与 Retry-After 表示剩余秒数。分钟额度在下一 UTC 分钟恢复,日额度在下一 UTC 零点恢复;两者同时耗尽时按日额度等待。/usage 不消耗日额度,但仍计入分钟限制。

data.fieldEvidence.asn/country 记录最终采用的数据源、数据集、快照版本、queriedAt(查询时间)和 downloadedAt(下载时间)。缺少来源记录时为 null,不把查询时间当作数据库更新时间。

GET /ip/{ip}
查询公网 IP 的本地快照分类
GET /sources
读取本地数据源状态与时效
GET /usage
读取当前密钥 UTC 日配额(不消耗额度)
GET /schema
当前 API 契约与接入状态
接口调用示例
curl -sS -H "Authorization: Bearer $IP_INSPECTOR_KEY" "https://ip.oocore.com/myip-api/v1/ip/1.1.1.1"

本机监控与命令行

采集器随源码提供于 cli/ip-inspector.mjs。默认每 60 秒查询一次双栈出口;密钥可选,用于补充本站本地 ASN 与国家资料。--dns 使用本机系统解析器查询本站随机权威域名,需服务端已经完成委派。HTTP 请求与系统 DNS 路由可能不同。

如需使用 HTTP_PROXY / HTTPS_PROXY,须显式使用 Node 的 --use-env-proxy。采集结果只证明该进程的路由;应先与浏览器对照。不自动安装服务或启动定时任务,变化提醒仅显示在本机终端。

SQLite 文件和导出包含完整 IP,默认权限 0600,保留最近 7 天、最多 10080 条。将 JSON 导入出口监控页面查看时间线、时段表现与采样缺口。

API 超额时,采集器明确提示恢复时刻并暂停 ASN/国家补充;双栈出口采样仍继续。已有资料缓存保留原查询时间,过期后显示未知或使用明确标注的出口探测国家来源。监控页将出口 IP 变化与归属资料变化分别展示,不能把数据库变动直接当成线路改变。

Node 24.22+;在项目目录手动运行
node cli/ip-inspector.mjs schema
# Set IP_INSPECTOR_KEY privately when using authenticated commands.
node cli/ip-inspector.mjs ip 1.1.1.1
node cli/ip-inspector.mjs usage

# Run on the computer whose egress matters. Ctrl+C stops collection.
node cli/ip-inspector.mjs monitor --db ./private/monitor.sqlite --hours 24
node cli/ip-inspector.mjs export --db ./private/monitor.sqlite --out ./private/monitor.json

打开出口监控

自托管配置

部署者配置 WORKBENCH_STATE_PATH 持久化目录,使用 keygen 命令创建独立密钥文件,将其中 serverKey 加入 DEVELOPER_API_KEYS;服务器只存 SHA-256 摘要。修改或移除配置可轮换、撤销密钥。纠错管理员使用单独的 CORRECTIONS_ADMIN_KEY,不与 API 密钥混用。

本项目没有自助注册或付费开通。接口稳定性承诺限于当前 v1 契约;新增字段可兼容追加,破坏性变更另开版本。

在自己的机器创建密钥文件
node cli/ip-inspector.mjs keygen --out ./private/api-key.json

相关工具与指南