攻击 IP API

公开查询接口文档与在线调试
登录

下列接口均为公开只读接口,按 IP 查询 SSH 登录攻击与 Web 攻击的明细、统计与榜单。每个接口都能在下方直接填参数调试,也可以按 curl 示例在命令行调用——例如把它接进自己的告警脚本或 nft 封禁脚本。

接口列表

方法路径说明
GET/api/me返回请求者自身 IP
GET/api/stats合并统计(SSH + Web 总计与 ssh/web 拆分)
GET/api/top组合榜单:ssh/web 两组各自独立的榜单(各自次数 > 100 的 IP,最多 100 个)
GET/api/ips/me按自身 IP 查询合并明细(ssh/web 两个子对象)
GET/api/ips/{ip}指定 IP 的合并明细(ssh/web 两个子对象)
GET/api/ssh/statsSSH 攻击统计(不含 IP)
GET/api/ssh/topSSH 攻击榜:攻击次数 > 100 的 IP(最多 100 个)
GET/api/ssh/ips/me按自身 IP 查询 SSH 汇总与最近 10 条事件
GET/api/ssh/ips/{ip}指定 IP 的 SSH 汇总与最近 10 条事件
GET/api/web/statsWeb 攻击统计(不含 IP)
GET/api/web/topWeb 攻击榜:攻击次数 > 100 的 IP(最多 100 个)
GET/api/web/ips/me按自身 IP 查询 Web 汇总与最近 10 条请求
GET/api/web/ips/{ip}指定 IP 的 Web 汇总与最近 10 条请求明细
POST/api/auth/register注册(用户名 + 口令 + 邮箱)。注册即登录;邮箱验证后才能创建节点
POST/api/auth/login登录,成功后写入会话 cookie(HttpOnly + SameSite=Lax)
POST/api/auth/logout登出:删除服务端会话并让浏览器丢掉 cookie
GET/api/auth/me当前登录用户(含联系方式与是否已验证);未登录返回 401
POST/api/auth/verify-email用邮件里的 token 完成邮箱验证(链接落地页会 POST 到这里)
POST/api/auth/resend-verification重新发送验证邮件
GET/api/my/summary我的节点概览(近 7 天,按节点归属统计)
GET/api/my/nodes我的节点列表(含在线状态、公开开关、允许来源与近 7 天攻击数)
POST/api/my/nodes创建节点(名称 + 允许来源必填)→ 返回**一次性显示**的部署命令
PATCH/api/my/nodes/{id}改名 / 切换公开 / 改允许来源(原地更新,不轮换 token)
DELETE/api/my/nodes/{id}删除节点并禁用其采集 token(历史事件保留)
POST/api/my/nodes/{id}/deploy-code重新生成部署命令(旧命令作废,已部署的机器不受影响)
POST/api/my/nodes/{id}/rotate-token轮换采集 token(旧 token 立即失效,需重新部署)
GET/api/my/nodes/{id}/attacks该节点近 7 天的攻击来源与最近事件(limit 默认 50,最多 200)
POST/api/deploy/exchange部署脚本用部署码换取采集 token(无需登录;校验来源 IP,不一致返回 409)
GET/deploy.sh一键部署脚本(正文里已注入平台与采集地址)
GET/dl/{file}agent 发布包下载(仅 xjd-<版本>-<目标平台>.tar.gz 与其 .sha256)
GET/api/nodes采集节点列表(仅注册时配置为公开的主机)+ 功能开关(SSH / Web / IP 封禁,null = 该 agent 尚未上报)与在线状态;支持 limit/offset 分页,每页最多 100 条

公开接口无需认证;/api/auth/*、/api/my/*、/api/deploy/* 需要相应的登录态或部署码。/api/stats、/api/ips/* 为 SSH + Web 合并结果;/api/top 返回 ssh、web 两组各自独立的榜单;/api/ssh/* 与 /api/web/* 分别只返回对应类型。事件明细不返回 ip、client_ip、hostname;汇总不返回 ip、hostnames。/api/top、/api/ssh/top、/api/web/top 为公开榜单,刻意返回攻击次数 > 100 的 ip。

在线请求

请求:
点击「发送请求」查看响应…

命令行示例