Skip to content

配置说明

UA3F 支持 YAML 配置文件、环境变量和命令行参数。配置合并优先级为:

text
默认值 < YAML 配置文件 < 环境变量 < 命令行参数

当同一配置项在多处指定时,高优先级的值会覆盖低优先级的值。推荐把长期配置写入 YAML,把部署环境差异放到环境变量,把临时调试项放到命令行参数。

使用方式

通过配置文件启动:

sh
ua3f -c /path/to/config.yaml

生成模板配置:

sh
ua3f -g

使用环境变量覆盖:

sh
UA3F_SERVER_MODE=SOCKS5 UA3F_PORT=1080 ua3f

使用命令行参数覆盖:

sh
ua3f --mode SOCKS5 --bind 127.0.0.1 --port 1080 --ua FFF

基础服务

基础服务配置控制 UA3F 的运行模式、监听地址、端口和日志级别。

yaml
server-mode: SOCKS5
bind-address: 127.0.0.1
port: 1080
log-level: info
include-lan-routes: false
功能YAML命令行参数环境变量默认值
配置文件路径--c, --config--
服务模式server-mode-m, --modeUA3F_SERVER_MODESOCKS5
监听地址bind-address-b, --bindUA3F_BIND_ADDRESS127.0.0.1
监听端口port-p, --portUA3F_PORT1080
日志等级log-level-l, --log-levelUA3F_LOG_LEVELinfo
包含 LAN 路由include-lan-routes--include-lan-routesUA3F_INCLUDE_LAN_ROUTESfalse
显示版本--v, --version--
生成模板配置--g, --generate-config--

server-mode 可选值为 HTTPSOCKS5TPROXYREDIRECTNFQUEUE

HTTP 重写

HTTP 重写配置控制全局 User-Agent 替换和重写模式。

yaml
rewrite-mode: GLOBAL
user-agent: "FFF"
user-agent-regex: ""
user-agent-partial-replace: false
功能YAML命令行参数环境变量默认值
重写模式rewrite-mode-x, --rewrite-modeUA3F_REWRITE_MODEGLOBAL
User-Agent 目标值user-agent-f, --uaUA3F_PAYLOAD_UAFFF
User-Agent 匹配正则user-agent-regex-r, --ua-regexUA3F_UA_REGEX
正则部分替换user-agent-partial-replace-s, --partialUA3F_PARTIAL_REPLACEfalse

rewrite-mode 可选值为 GLOBALDIRECTRULE。规则匹配和动作详见 HTTP 重写

重写规则

规则配置仅在 rewrite-mode: RULE 时使用。YAML 适合长期维护;命令行参数和环境变量接收 JSON 字符串,适合自动化注入。

yaml
rewrite-mode: RULE

header-rewrite:
  - type: DOMAIN-SUFFIX
    match-value: "example.com"
    action: REPLACE
    rewrite-direction: REQUEST
    rewrite-header: "User-Agent"
    rewrite-value: "FFF"

body-rewrite:
  - type: URL-REGEX
    match-value: "^http://example.com"
    action: REPLACE-REGEX
    rewrite-direction: RESPONSE
    rewrite-regex: "OldString"
    rewrite-value: "NewString"

url-redirect:
  - type: URL-REGEX
    match-value: "^http://example.com/old"
    action: REDIRECT-302
    rewrite-regex: "^http://example.com/old(.*)"
    rewrite-value: "http://example.com/new$1"
功能YAML命令行参数环境变量
Header 重写规则header-rewrite--header-rewriteUA3F_HEADER_REWRITE
Body 重写规则body-rewrite--body-rewriteUA3F_BODY_REWRITE
URL 重定向规则url-redirect--url-redirectUA3F_URL_REDIRECT

命令行 JSON 示例:

sh
ua3f --rewrite-mode RULE \
  --header-rewrite '[{"type":"FINAL","action":"REPLACE","rewrite_header":"User-Agent","rewrite_value":"FFF"}]'

规则字段、匹配类型和动作详见 匹配规则重写动作

API Server

API Server 用于运行时状态查询、日志读取和配置重载。

yaml
api-server: "127.0.0.1:9000"
api-server-secret: "change-me"
功能YAML命令行参数环境变量默认值
API 监听地址api-server--api-serverUA3F_API_SERVER空,禁用
API 鉴权密钥api-server-secret--api-server-secretUA3F_API_SERVER_SECRET空,不鉴权

设置 api-server-secret 后,请求需要携带 Bearer Token:

sh
curl -H "Authorization: Bearer change-me" http://127.0.0.1:9000/version

L3 重写

L3 重写用于调整 TTL、IPID、TCP Timestamp、TCP 初始窗口,并可阻断 QUIC 等网络层特征。推荐使用 l3-rewrite 配置块;顶层 ttlipidtcp_timestamptcp_initial_window 仍可用,并会与 l3-rewrite 合并。

yaml
l3-rewrite:
  ttl: true
  ipid: true
  tcpts: true
  tcpwin: true
  block-quic: true
  bpf-offload: true
功能推荐 YAML兼容 YAML命令行参数环境变量默认值
TTL 重写l3-rewrite.ttlttl--ttl, --l3-rewrite-ttlUA3F_L3_REWRITE_TTL, UA3F_TTLfalse
IPID 重写l3-rewrite.ipidipid--ipid, --l3-rewrite-ipidUA3F_L3_REWRITE_IPID, UA3F_IPIDfalse
删除 TCP Timestampl3-rewrite.tcptstcp_timestamp--tcpts, --l3-rewrite-tcptsUA3F_L3_REWRITE_TCPTS, UA3F_TCPTSfalse
修改 TCP 初始窗口l3-rewrite.tcpwintcp_initial_window--tcpwin, --l3-rewrite-tcpwinUA3F_L3_REWRITE_TCPWIN, UA3F_TCP_INIT_WINDOWfalse
QUIC 阻断l3-rewrite.block-quic---block-quicUA3F_L3_REWRITE_BLOCK_QUICfalse
L3 eBPF 加速l3-rewrite.bpf-offload---l3-rewrite-bpf-offloadUA3F_L3_REWRITE_BPF_OFFLOADfalse

L3 eBPF 加速要求 Linux 内核 >= 5.15。详见 L3 重写eBPF 加速

Desync

Desync 用于 TCP 分片乱序发射和 TCP 混淆注入。

yaml
desync:
  reorder: false
  reorder-bytes: 8
  reorder-packets: 1500
  inject: false
  inject-ttl: 3
  desync-ports: ""
功能YAML命令行参数环境变量默认值
TCP 分片乱序发射desync.reorder--desync-reorderUA3F_DESYNC_REORDERfalse
乱序分片字节数desync.reorder-bytes--desync-reorder-bytesUA3F_DESYNC_REORDER_BYTES8
乱序包大小desync.reorder-packets--desync-reorder-packetsUA3F_DESYNC_REORDER_PACKETS1500
TCP 混淆注入desync.inject--desync-injectUA3F_DESYNC_INJECTfalse
注入包 TTLdesync.inject-ttl--desync-inject-ttlUA3F_DESYNC_INJECT_TTL3
生效端口desync.desync-ports--desync-portsUA3F_DESYNC_PORTS

详见 Desync

MitM

MitM 用于对指定 HTTPS 主机名进行解密和 HTTP 重写。只应对明确需要重写的可信目标启用,客户端需要信任 UA3F 使用的 CA。

yaml
mitm:
  enabled: false
  hostname: "*.httpbin.com, example.com:8000"
  ca-p12: ""
  ca-p12-base64: ""
  ca-passphrase: ""
  insecure-skip-verify: false
功能YAML命令行参数环境变量默认值
启用 MitMmitm.enabled--mitmUA3F_MITM_ENABLEDfalse
目标主机名mitm.hostname--mitm-hostnameUA3F_MITM_HOSTNAME
PKCS#12 CA 文件mitm.ca-p12--mitm-ca-p12UA3F_MITM_CA_P12
Base64 PKCS#12 CAmitm.ca-p12-base64--mitm-ca-p12-base64UA3F_MITM_CA_P12_BASE64
CA 密码mitm.ca-passphrase--mitm-ca-passphraseUA3F_MITM_CA_PASSPHRASE
跳过上游证书校验mitm.insecure-skip-verify--mitm-insecure-skip-verifyUA3F_MITM_INSECURE_SKIP_VERIFYfalse

详见 HTTPS MitM

通用 BPF 卸载

UA3F 还保留了顶层 BPF 卸载开关:

yaml
bpf-offload: false
功能YAML命令行参数环境变量默认值
通用 BPF 卸载bpf-offload--bpf-offloadUA3F_BPF_OFFLOADfalse

L3 重写场景优先使用 l3-rewrite.bpf-offload

Released under the GPL-3.0 license.