Skip to content

SunBK201/UA3F

Repository files navigation

UA3F

Release CodeQL License GitHub Downloads (all assets, all releases) Telegram group

UA3F

English | 简体中文

UA3F 是一个 HTTP(S) 重写代理,作为一个 HTTP、SOCKS5、TPROXY、REDIRECT、NFQUEUE 服务对 HTTP(S) 流量 (例如 User-Agent) 进行高效透明重写。

  • 支持 HTTP(S) 请求与响应的 Header、Body 双向重写
  • 支持 HTTP(S) URL 重定向:302、307、Header
  • 支持 HTTPS MitM 流量解密重写
  • 应用层服务模式:HTTP、SOCKS5
  • 传输层服务模式:TPROXY、REDIRECT
  • 网络层服务模式:NFQUEUE(UA2F)
  • 高度灵活的重写规则系统,支持多种规则类型与重写策略
  • 实时统计面板,支持流量修改监控与分析
  • 支持 opkg 安装、编译安装、Docker 部署多种方式
  • 兼容 Clash Fake-IP & Redir-Host 多种模式伴生运行
  • 支持 L3 重写:TTL、IPID、TCP 时间戳、TCP 初始窗口
  • 支持 Desync 分片乱序发射与混淆,用于深度包检测(DPI)
  • 支持 eBPF 流量卸载,加速转发性能

安装

UA3F 支持多种安装方式:

  • 二进制文件与安装包

    Release 页面已经提供常见架构的二进制文件与 opkg/apk 安装包,直接下载对应平台的安装包手动安装即可。

  • Docker 部署:

    作为 SOCKS5 代理运行:

    docker run -p 1080:1080 sunbk201/ua3f -f FFF
  • 源码编译:

    编译构建 UA3F 二进制文件:

    git clone https://github.com/SunBK201/UA3F.git && cd UA3F
    go build -o ua3f main.go

    OpenWrt 编译安装:

    git clone https://github.com/openwrt/openwrt.git && cd openwrt
    git checkout openwrt-24.10
    ./scripts/feeds update -a && ./scripts/feeds install -a
    git clone https://github.com/SunBK201/UA3F.git package/UA3F
    make menuconfig # 勾选 Network->Web Servers/Proxies->ua3f
    make download -j$(nproc) V=s
    make -j$(nproc) || make -j1 || make -j1 V=sc
    # make package/UA3F/openwrt/compile -j1 V=sc # 单独编译 UA3F 安装包

使用

详细文档见 UA3F

命令行使用

使用默认配置启动 UA3F:

ua3f

指定配置文件启动:

ua3f -c /path/to/config.yaml

生成模板配置文件:

ua3f -g

详细命令行参数配置说明见 CLI.md,配置文件示例见 config.yaml

OpenWrt LuCI Web 页面

UA3F 支持 OpenWrt LuCI Web 页面,可以打开 Services -> UA3F 进行相关配置。

快速使用教程详见:猴子也能看懂的 UA3F 使用教程

OpenWrt 手动命令行启动
opkg install sudo
sudo -u nobody /usr/bin/ua3f

shellclash/shellcrash 用户建议使用以下命令启动:

sudo -u shellclash /usr/bin/ua3f
# 如果上面命令报错执行下面该命令
sudo -u shellcrash /usr/bin/ua3f

相关命令行启动参数:

  • -c <config path>: 自定义配置文件路径
  • -g: 在当前目录生成模板配置文件 config.yaml
  • -m <mode>: 服务模式,支持 HTTP、SOCKS5、TPROXY、REDIRECT,默认 SOCKS5
  • -b <bind addr>: 自定义绑定监听地址,默认 127.0.0.1
  • -p <port>: 端口号,默认 1080
  • -l <log level>: 日志等级,默认 info,可选:debug,默认日志位置:/var/log/ua3f.log
  • -x: 重写策略,支持 GLOBAL、DIRECT、RULE,默认 GLOBAL
  • -f <UA>: 自定义 UA,默认 FFF
  • -r <regex>: 自定义正则匹配 User-Agent, 默认为空, 表示所有 User-Agent 都会被重写
  • -s: 部分替换,仅替换正则匹配到的部分
  • -z: 重写规则,json string 格式,仅在 RULE 重写策略模式下生效

API Server

UA3F 内置 API Server 控制器,提供 UA3F 运行状态、配置规则等信息查询与控制接口,可以通过 --api-server 参数启用:

ua3f --api-server <addr:port>

API 文档见 API.md

服务模式说明

UA3F 支持 5 种不同的服务模式,各模式的特点和使用场景如下:

服务模式 工作原理 是否依赖 Clash 等 兼容性 能否与 Clash 等伴生运行
HTTP HTTP 代理
SOCKS5 SOCKS5 代理
TPROXY netfilter TPROXY
REDIRECT netfilter REDIRECT
NFQUEUE netfilter NFQUEUE

重写策略说明

UA3F 支持 3 种不同的重写策略:

重写策略 重写行为 重写 Header 适用服务模式
GLOBAL 所有请求均进行重写 User-Agent 适用于所有服务模式
DIRECT 不进行重写,纯转发 适用于所有服务模式
RULE 根据重写规则进行重写 自定义 适用于 HTTP/SOCKS5/TPROXY/REDIRECT

规则类型:

规则类型 说明
DOMAIN 根据域名进行匹配
DOMAIN-SUFFIX 根据域名后缀进行匹配
DOMAIN-KEYWORD 根据域名关键字进行匹配
DOMAIN-SET 根据域名集合进行匹配
IP-CIDR 根据 IP 地址段进行匹配
SRC-IP 根据源 IP 地址进行匹配
DST-PORT 根据目标端口进行匹配
HEADER-KEYWORD 根据请求 Header 关键字进行匹配
HEADER-REGEX 根据请求 Header 进行正则匹配
URL-REGEX 根据请求 URL 进行正则匹配

重写动作:

动作类型 说明
DIRECT 直接放行,不进行重写
DELETE 删除指定 Header
ADD 添加指定 Header 为指定内容
REPLACE 替换指定 Header 为指定内容
REPLACE-REGEX 将匹配正则的部分替换为指定内容
REJECT 拒绝该请求
DROP 丢弃该请求

URL 重定向动作:

动作类型 说明
REDIRECT-302 返回 302 重定向响应
REDIRECT-307 返回 307 重定向响应
REDIRECT-HEADER 修改请求 Header 进行重定向,客户端无感知

Desync 说明

详见 UA3F Desync

Clash 配置建议

Clash 配置

Credits

Packages

 
 
 

Contributors