Skip to content

Getting Started

UA3F is an HTTP(S) rewriting proxy for modifying request and response headers, body content, and URL routing behavior. In addition to HTTP rewrite, UA3F supports L3 rewrite and Desync: L3 rewrite can adjust network-layer characteristics such as TTL, IPID, TCP Timestamp, TCP Initial Window, and QUIC blocking, with optional TC eBPF acceleration; Desync can interfere with stream reassembly on some DPI devices through TCP segment reordering and low-TTL obfuscation injection.

Installation

Release packages

Download binaries, opkg packages, or apk packages from GitHub Releases.

Docker

Run UA3F as a SOCKS5 proxy:

sh
docker run -p 1080:1080 sunbk201/ua3f -f FFF

Build from source

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

First run

Start with defaults:

sh
ua3f

By default, UA3F listens on 127.0.0.1:1080, runs in SOCKS5 mode, and uses the GLOBAL rewrite mode.

Start with a configuration file:

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

Generate a template configuration:

sh
ua3f -g

Common deployment choices

ScenarioRecommended setup
Local explicit proxySOCKS5 or HTTP
OpenWrt transparent proxyTPROXY or REDIRECT
Network-layer queue processingNFQUEUE
Coexisting with ClashRun UA3F as SOCKS5, then route HTTP/TCP traffic from Clash to UA3F
Rewriting HTTPS headers or bodiesEnable mitm for selected hostnames
Network-layer characteristic rewritingEnable L3 rewrite and configure TTL, IPID, TCP Timestamp, TCP Initial Window, or QUIC blocking as needed
DPI stream reassembly interferenceEnable Desync and configure TCP segment reordering or TCP obfuscation injection as needed

Next steps

Released under the GPL-3.0 license.