Skip to content

UA3F API 文档

UA3F 提供 RESTful API 用于查询运行状态、获取配置信息、管理规则和实时查看日志。

API 服务器通过配置项 api-server 指定监听地址(如 127.0.0.1:9000),留空则不启用。


目录


认证

当配置项 api-server-secret 不为空时,所有 API 请求需要携带认证信息。支持以下两种方式:

方式一:Authorization Header

Authorization: Bearer <secret>

或直接传递 token:

Authorization: <secret>

方式二:URL Query 参数

GET /version?secret=<secret>

未认证或认证失败时返回:

HTTP/1.1 401 Unauthorized

{"error":"unauthorized"}

API 端点

GET /version

获取 UA3F 当前运行版本。

请求示例:

bash
curl http://127.0.0.1:9000/version

响应:

json
{
  "version": "0.7.0"
}
字段类型说明
versionstringUA3F 版本号

GET /config

获取当前运行配置的完整内容。

请求示例:

bash
curl http://127.0.0.1:9000/config

响应:

json
{
  "ServerMode": "SOCKS5",
  "BindAddress": "127.0.0.1",
  "Port": 1080,
  "APIServer": "127.0.0.1:9000",
  "APIServerSecret": "",
  "LogLevel": "info",
  "RewriteMode": "RULE",
  "UserAgent": "FFF",
  "UserAgentRegex": "",
  "UserAgentPartialReplace": false,
  "TTL": false,
  "IPID": false,
  "TCPTimeStamp": false,
  "TCPInitialWindow": false,
  "MitM": {
    "Enabled": false,
    "Hostname": "",
    "CAP12": "",
    "CAP12Base64": "",
    "CAPassphrase": "",
    "InsecureSkipVerify": false
  },
  "Desync": {
    "Reorder": false,
    "ReorderBytes": 8,
    "ReorderPackets": 1500,
    "Inject": false,
    "InjectTTL": 3,
    "DesyncPorts": ""
  },
  "HeaderRules": [],
  "BodyRules": [],
  "URLRedirectRules": []
}

返回的 JSON 结构与 Config 结构体一一对应,包含所有运行时配置项。


GET /rules

获取所有重写规则(Header / Body / Redirect)。

请求示例:

bash
curl http://127.0.0.1:9000/rules

响应:

json
{
  "header": [ ... ],
  "body": [ ... ],
  "redirect": [ ... ]
}
字段类型说明
headerarrayHeader 重写规则列表
bodyarrayBody 重写规则列表
redirectarrayURL 重定向规则列表

每条规则的结构如下:

json
{
  "enabled": true,
  "type": "HEADER-KEYWORD",
  "match_header": "User-Agent",
  "match_value": "MicroMessenger",
  "action": "REPLACE",
  "rewrite_header": "User-Agent",
  "rewrite_value": "FFF",
  "rewrite_direction": "REQUEST",
  "rewrite_regex": "",
  "continue": false
}

规则字段说明:

字段类型说明
enabledbool规则是否启用
typestring匹配类型,可选值:HEADER-KEYWORDHEADER-REGEXDEST-PORTIP-CIDRSRC-IPDOMAIN-SUFFIXDOMAIN-KEYWORDDOMAINURL-REGEXFINAL
match_headerstring匹配的 Header 名称(HEADER-KEYWORD / HEADER-REGEX 类型必填)
match_valuestring匹配的值
actionstring动作类型,可选值:DIRECTREPLACEREPLACE-REGEXDELETEADDDROPREDIRECT-302REDIRECT-307REDIRECT-HEADER
rewrite_headerstring重写的 Header 名称
rewrite_valuestring重写的值
rewrite_directionstring重写方向,可选值:REQUESTRESPONSE
rewrite_regexstring正则表达式(REPLACE-REGEX 动作必填)
continuebool匹配后是否继续匹配后续规则

GET /rules/header

仅获取 Header 重写规则。

请求示例:

bash
curl http://127.0.0.1:9000/rules/header

响应:

json
[
  {
    "type": "HEADER-KEYWORD",
    "match_header": "User-Agent",
    "match_value": "MicroMessenger",
    "action": "REPLACE",
    "rewrite_header": "User-Agent",
    "rewrite_value": "FFF"
  }
]

GET /rules/body

仅获取 Body 重写规则。

请求示例:

bash
curl http://127.0.0.1:9000/rules/body

响应:

json
[
  {
    "type": "DOMAIN-SUFFIX",
    "match_value": "example.com",
    "action": "REPLACE-REGEX",
    "rewrite_regex": "old_text",
    "rewrite_value": "new_text"
  }
]

GET /rules/redirect

仅获取 URL 重定向规则。

请求示例:

bash
curl http://127.0.0.1:9000/rules/redirect

响应:

json
[
  {
    "type": "URL-REGEX",
    "match_value": "^http://example\\.com/old",
    "action": "REDIRECT-302",
    "rewrite_value": "http://example.com/new"
  }
]

GET /logs

实时获取 UA3F 日志输出。支持 WebSocketHTTP 长连接(Chunked Transfer) 两种模式。

WebSocket 模式

当请求包含 WebSocket Upgrade 头时,自动升级为 WebSocket 连接,日志以文本消息逐行推送。

请求示例:

bash
wscat -c ws://127.0.0.1:9000/logs
javascript
const ws = new WebSocket("ws://127.0.0.1:9000/logs");
ws.onmessage = (event) => {
  console.log(event.data);
};

HTTP Chunked 模式

普通 HTTP 请求将以 text/plain 流式传输日志,使用 Chunked Transfer Encoding 逐行推送。

请求示例:

bash
curl -N http://127.0.0.1:9000/logs

响应 Headers:

Content-Type: text/plain; charset=utf-8
Cache-Control: no-cache
Connection: keep-alive
X-Content-Type-Options: nosniff

连接将保持打开状态,持续输出日志内容,直到客户端主动断开。


GET /restart

重新加载配置文件并热重启所有服务组件。

请求示例:

bash
curl http://127.0.0.1:9000/restart

成功响应:

HTTP/1.1 200 OK

success

失败响应:

HTTP/1.1 500 Internal Server Error

<error message>

pprof 调试端点

API 服务器内置了 Go pprof 性能分析端点,可用于调试和性能优化。

端点说明
GET /debug/pprof/pprof 索引页
GET /debug/pprof/cmdline命令行参数
GET /debug/pprof/profileCPU Profile(默认 30 秒)
GET /debug/pprof/symbol符号查询
GET /debug/pprof/trace执行 Trace
GET /debug/pprof/goroutineGoroutine 状态
GET /debug/pprof/heap堆内存分配
GET /debug/pprof/allocs历史内存分配
GET /debug/pprof/threadcreate线程创建
GET /debug/pprof/block阻塞分析
GET /debug/pprof/mutex互斥锁分析

使用示例:

bash
# 获取 30 秒 CPU Profile
go tool pprof http://127.0.0.1:9000/debug/pprof/profile

# 查看堆内存
go tool pprof http://127.0.0.1:9000/debug/pprof/heap

# 查看 goroutine
curl http://127.0.0.1:9000/debug/pprof/goroutine?debug=1

Released under the GPL-3.0 license.