{"info":{"title":"simpleWebUtils","version":"v2.0.0+2026-08-09T07:06:57Z.a462018"},"openapi":"3.0.3","paths":{"/base64/{text}":{"get":{"parameters":[{"description":"待编码的文本","in":"path","name":"text","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"对路径中的文本做标准 base64 编码,返回 JSON"},"400":{"description":"参数错误"}},"summary":"对路径中的文本做标准 base64 编码,返回 JSON","tags":["Base64 编解码"]}},"/code/detail/{code}":{"get":{"parameters":[{"description":"HTTP 状态码,需在参考表内,如 404","in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"返回该状态码的参考信息 JSON:描述、MDN 与 http.cat 链接;未收录的码返回 400"},"400":{"description":"参数错误"}},"summary":"返回该状态码的参考信息 JSON:描述、MDN 与 http.cat 链接;未收录的码返回 400","tags":["Status code reference"]}},"/code/html/{code}":{"get":{"parameters":[{"description":"HTTP 状态码,需在参考表内,如 404","in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"以 HTML 页面展示该状态码的描述(页面状态恒为 200,被测码只体现在页面内容里)"},"400":{"description":"参数错误"}},"summary":"以 HTML 页面展示该状态码的描述(页面状态恒为 200,被测码只体现在页面内容里)","tags":["Status code reference"]}},"/code/{code}":{"get":{"parameters":[{"description":"HTTP 状态码,如 200、418;任意数字均可","in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"以该状态码作为响应状态返回(空响应体),任意数字均可,用于测试客户端对状态码的处理"},"400":{"description":"参数错误"}},"summary":"以该状态码作为响应状态返回(空响应体),任意数字均可,用于测试客户端对状态码的处理","tags":["Status code reference"]}},"/delay/{seconds}":{"get":{"parameters":[{"description":"延迟秒数,整数 1–10","in":"path","name":"seconds","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"等待指定秒数后返回 200 {\"delay\": seconds};秒数须为 1–10 的整数,非法或超限返回 400"},"400":{"description":"参数错误"}},"summary":"等待指定秒数后返回 200 {\"delay\": seconds};秒数须为 1–10 的整数,非法或超限返回 400","tags":["延迟响应"]}},"/dns/{name}":{"get":{"parameters":[{"description":"待查询的域名","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"查询域名的 A/AAAA/CNAME/MX/TXT 记录,各类记录独立容错,返回 JSON"},"400":{"description":"参数错误"}},"summary":"查询域名的 A/AAAA/CNAME/MX/TXT 记录,各类记录独立容错,返回 JSON","tags":["DNS 查询"]}},"/echo":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"body":{"description":"原样回显的请求体","type":"string"}},"required":["body"],"type":"object"}}},"required":true},"responses":{"200":{"description":"回显请求方法与原始请求体,返回 200 {\"method\": \"POST\", \"body\": \u003c原样请求体\u003e};空 body 为 \"\""},"400":{"description":"参数错误"}},"summary":"回显请求方法与原始请求体,返回 200 {\"method\": \"POST\", \"body\": \u003c原样请求体\u003e};空 body 为 \"\"","tags":["请求回显"]}},"/hash/{text}":{"get":{"parameters":[{"description":"待计算摘要的文本","in":"path","name":"text","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"一次返回文本的 md5/sha1/sha256/sha512 摘要(hex 小写,JSON)"},"400":{"description":"参数错误"}},"summary":"一次返回文本的 md5/sha1/sha256/sha512 摘要(hex 小写,JSON)","tags":["Hash 摘要"]}},"/headers":{"get":{"responses":{"200":{"description":"以 JSON 回显请求的全部头,同名多值以 \", \" 连接"}},"summary":"以 JSON 回显请求的全部头,同名多值以 \", \" 连接","tags":["请求头回显"]}},"/headers/html":{"get":{"responses":{"200":{"description":"以 HTML 页面展示请求的全部头,按头名字母序排列"}},"summary":"以 HTML 页面展示请求的全部头,按头名字母序排列","tags":["请求头回显"]}},"/healthz":{"get":{"responses":{"200":{"description":"存活探针,恒返回 200 {\"status\": \"ok\"},供负载均衡器与容器编排系统轮询"}},"summary":"存活探针,恒返回 200 {\"status\": \"ok\"},供负载均衡器与容器编排系统轮询","tags":["健康检查"]}},"/ip":{"get":{"responses":{"200":{"description":"回显客户端 IP(纯文本)。经 CDN/反向代理访问时按 CF-Connecting-IP、True-Client-IP、X-Client-IP、X-Original-Forwarded-For、X-Forwarded-For、X-Real-IP 头识别真实来源"}},"summary":"回显客户端 IP(纯文本)。经 CDN/反向代理访问时按 CF-Connecting-IP、True-Client-IP、X-Client-IP、X-Original-Forwarded-For、X-Forwarded-For、X-Real-IP 头识别真实来源","tags":["IP 地理查询"]}},"/ip/analyze":{"get":{"responses":{"200":{"description":"基于 GeoLite2-City 数据库查询客户端 IP 的地理位置(国家、城市、经纬度等),返回 JSON;客户端 IP 的 CDN/反代头识别与 /ip 相同"}},"summary":"基于 GeoLite2-City 数据库查询客户端 IP 的地理位置(国家、城市、经纬度等),返回 JSON;客户端 IP 的 CDN/反代头识别与 /ip 相同","tags":["IP 地理查询"]}},"/ip/html":{"get":{"responses":{"200":{"description":"以 HTML 页面展示客户端 IP 及其地理位置查询结果;客户端 IP 的 CDN/反代头识别与 /ip 相同"}},"summary":"以 HTML 页面展示客户端 IP 及其地理位置查询结果;客户端 IP 的 CDN/反代头识别与 /ip 相同","tags":["IP 地理查询"]}},"/jwt/{token}":{"get":{"parameters":[{"description":"待解码的 JWT(不验签)","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"解码三段式 JWT 的 header 与 payload,不验签,并把 exp/iat 数字声明转为 RFC3339 时间"},"400":{"description":"参数错误"}},"summary":"解码三段式 JWT 的 header 与 payload,不验签,并把 exp/iat 数字声明转为 RFC3339 时间","tags":["JWT 解码"]}},"/mcp":{"get":{"responses":{"200":{"description":"服务索引:serverInfo(含版本)与支持的方法列表(initialize、tools/list、tools/call)"}},"summary":"服务索引:serverInfo(含版本)与支持的方法列表(initialize、tools/list、tools/call)","tags":["MCP server"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"body":{"description":"JSON-RPC 2.0 请求体,如 {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"bedrock_motd\",\"arguments\":{\"server\":\"example.com\"}}}","type":"string"}},"required":["body"],"type":"object"}}},"required":true},"responses":{"200":{"description":"JSON-RPC 2.0 端点:method 支持 initialize、tools/list、tools/call;tools/call 提供 11 个 tool:bedrock_motd、java_motd(参数 server 必填,port 可选,默认 19132/25565)、hash_text(text)、ts_convert(t 可选,缺省当前时间)、jwt_decode(token)、dns_lookup(name)、url_encode/url_decode(text)、uuid_generate(无参)、base64_encode/base64_decode(text);notification(无 id)返回 204"},"400":{"description":"参数错误"}},"summary":"JSON-RPC 2.0 端点:method 支持 initialize、tools/list、tools/call;tools/call 提供 11 个 tool:bedrock_motd、java_motd(参数 server 必填,port 可选,默认 19132/25565)、hash_text(text)、ts_convert(t 可选,缺省当前时间)、jwt_decode(token)、dns_lookup(name)、url_encode/url_decode(text)、uuid_generate(无参)、base64_encode/base64_decode(text);notification(无 id)返回 204","tags":["MCP server"]}},"/minecraft/bedrock":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"port":{"default":"19132","description":"服务器端口","type":"string"},"server":{"description":"服务器地址(域名或 IP),必填","type":"string"}},"required":["server"],"type":"object"}}},"required":true},"responses":{"200":{"description":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址;参数经 JSON body 传递"},"400":{"description":"参数错误"}},"summary":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址;参数经 JSON body 传递","tags":["Minecraft MOTD 查询"]}},"/minecraft/bedrock/html/{server}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"以 HTML 页面展示 Bedrock MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片"},"400":{"description":"参数错误"}},"summary":"以 HTML 页面展示 Bedrock MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片","tags":["Minecraft MOTD 查询"]}},"/minecraft/bedrock/html/{server}/{port}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}},{"description":"服务器端口","in":"path","name":"port","required":true,"schema":{"default":"19132","type":"string"}}],"responses":{"200":{"description":"以 HTML 页面展示 Bedrock MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片"},"400":{"description":"参数错误"}},"summary":"以 HTML 页面展示 Bedrock MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片","tags":["Minecraft MOTD 查询"]}},"/minecraft/bedrock/{server}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址"},"400":{"description":"参数错误"}},"summary":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址","tags":["Minecraft MOTD 查询"]}},"/minecraft/bedrock/{server}/{port}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}},{"description":"服务器端口","in":"path","name":"port","required":true,"schema":{"default":"19132","type":"string"}}],"responses":{"200":{"description":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址"},"400":{"description":"参数错误"}},"summary":"查询 Bedrock 服务器 MOTD 与在线人数(RakNet unconnected ping,UDP);端口缺省 19132;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址","tags":["Minecraft MOTD 查询"]}},"/minecraft/java":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"port":{"default":"25565","description":"服务器端口","type":"string"},"server":{"description":"服务器地址(域名或 IP),必填","type":"string"}},"required":["server"],"type":"object"}}},"required":true},"responses":{"200":{"description":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址;参数经 JSON body 传递"},"400":{"description":"参数错误"}},"summary":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址;参数经 JSON body 传递","tags":["Minecraft MOTD 查询"]}},"/minecraft/java/html/{server}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"以 HTML 页面展示 Java MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片"},"400":{"description":"参数错误"}},"summary":"以 HTML 页面展示 Java MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片","tags":["Minecraft MOTD 查询"]}},"/minecraft/java/html/{server}/{port}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}},{"description":"服务器端口","in":"path","name":"port","required":true,"schema":{"default":"25565","type":"string"}}],"responses":{"200":{"description":"以 HTML 页面展示 Java MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片"},"400":{"description":"参数错误"}},"summary":"以 HTML 页面展示 Java MOTD 查询结果:§ 颜色码渲染为彩色样式;查询失败(SSRF 拒绝、超时、解析失败)返回 400 HTML 错误卡片","tags":["Minecraft MOTD 查询"]}},"/minecraft/java/{server}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址"},"400":{"description":"参数错误"}},"summary":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址","tags":["Minecraft MOTD 查询"]}},"/minecraft/java/{server}/{port}":{"get":{"parameters":[{"description":"服务器地址(域名或 IP)","in":"path","name":"server","required":true,"schema":{"type":"string"}},{"description":"服务器端口","in":"path","name":"port","required":true,"schema":{"default":"25565","type":"string"}}],"responses":{"200":{"description":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址"},"400":{"description":"参数错误"}},"summary":"查询 Java 服务器 MOTD 与在线人数(Server List Ping,TCP);端口缺省 25565;目标地址经 SSRF 防护,拒绝 loopback/私网/链路本地/组播地址","tags":["Minecraft MOTD 查询"]}},"/ts":{"get":{"responses":{"200":{"description":"返回当前时间的 Unix 时间戳、RFC3339 与可读形式(UTC)"}},"summary":"返回当前时间的 Unix 时间戳、RFC3339 与可读形式(UTC)","tags":["时间戳转换"]}},"/ts/{t}":{"get":{"parameters":[{"description":"Unix 时间戳,秒或毫秒","in":"path","name":"t","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"解析 Unix 时间戳并返回 RFC3339 与可读形式(UTC),自动识别秒/毫秒"},"400":{"description":"参数错误"}},"summary":"解析 Unix 时间戳并返回 RFC3339 与可读形式(UTC),自动识别秒/毫秒","tags":["时间戳转换"]}},"/ua":{"get":{"responses":{"200":{"description":"回显请求的 User-Agent 头(纯文本)"}},"summary":"回显请求的 User-Agent 头(纯文本)","tags":["UA echo / UA 解析"]}},"/ua/analyze":{"get":{"responses":{"200":{"description":"结构化解析 User-Agent(浏览器、操作系统、设备等),返回 JSON"}},"summary":"结构化解析 User-Agent(浏览器、操作系统、设备等),返回 JSON","tags":["UA echo / UA 解析"]}},"/ua/html":{"get":{"responses":{"200":{"description":"以 HTML 页面展示 User-Agent 解析结果"}},"summary":"以 HTML 页面展示 User-Agent 解析结果","tags":["UA echo / UA 解析"]}},"/unbase64/{text}":{"get":{"parameters":[{"description":"待解码的 base64 字符串","in":"path","name":"text","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"对路径中的 base64 字符串解码,非法输入返回 400"},"400":{"description":"参数错误"}},"summary":"对路径中的 base64 字符串解码,非法输入返回 400","tags":["Base64 编解码"]}},"/urldecode/{text}":{"get":{"parameters":[{"description":"待解码的 URL 编码文本","in":"path","name":"text","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"对路径中的 URL 编码文本解码,非法 % 序列返回 400"},"400":{"description":"参数错误"}},"summary":"对路径中的 URL 编码文本解码,非法 % 序列返回 400","tags":["URL 编解码"]}},"/urlencode/{text}":{"get":{"parameters":[{"description":"待编码的文本","in":"path","name":"text","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"对路径中的文本做 URL 编码(query 规则,空格变 '+'),返回 JSON"},"400":{"description":"参数错误"}},"summary":"对路径中的文本做 URL 编码(query 规则,空格变 '+'),返回 JSON","tags":["URL 编解码"]}},"/uuid":{"get":{"responses":{"200":{"description":"返回一个随机生成的 UUID v4(JSON),每次调用结果不同"}},"summary":"返回一个随机生成的 UUID v4(JSON),每次调用结果不同","tags":["UUID 生成"]}}}}