UA3F 是下一代 HTTP User-Agent 修改方法,对外作为一个 SOCK5 服务,可以部署在路由器等设备等设备进行透明 UA 修改。
提供 4 种部署方式:
Release 页面已经提供常见架构的编译版本,可以根据自己架构下载并解压到路由器等设备上。
opkg update
opkg install curl libcurl luci-compat
export url='https://blog.sunbk201.site/cdn' && sh -c "$(curl -kfsSl $url/install.sh)"
service ua3f reload
git clone https://github.com/openwrt/openwrt.git && cd openwrt
git checkout openwrt-22.03
./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 # 编译单个包
docker run -p 1080:1080 sunbk201/ua3f -f FFF
UA3F 支持 LuCI Web 页面,可以打开 Services -> UA3F 进行相关配置。
[!NOTE] 设置说明:
- Port: UA3F 监听端口,默认
1080
。- Bind Address: UA3F 监听地址,默认
127.0.0.1
。- Log Level: 日志等级,默认
info
, 如果需要调试排查错误可以设置为debug
。- User-Agent: 自定义 User-Agent,默认
FFF
。- User-Agent Regex Pattern: User-Agent 正则表达式规则。如果流量中的 User-Agent 匹配该正则表达式,则会被修改为 User-Agent 字段的内容,否则不会被修改;如果该字段为空,则所有流量 User-Agent 都会被修改。默认
(iPhone|iPad|Android|Macintosh|Windows|Linux)
,即只修改携带设备与系统信息的 User-Agent。- Partial Replace: 部分替换,如果开启,则只替换 User-Agent Regex Pattern 中匹配到的部分。该选项仅在 User-Agent Regex Pattern 不为空时生效。
sudo -u nobody /usr/bin/ua3f
shellclash/shellcrash 用户建议使用以下命令启动:
sudo -u shellclash /usr/bin/ua3f
# 如果上面命令报错执行下面该命令
sudo -u shellcrash /usr/bin/ua3f
相关命令行启动参数:
-b <bind addr>
: 自定义绑定监听地址,默认 127.0.0.1-p <port>
: 端口号,默认 1080-l <log level>
: 日志等级,默认 info,可选:debug,默认日志位置:/var/log/ua3f.log
-f <UA>
: 自定义 UA,默认 FFF-r <regex>
: 自定义正则匹配 User-Agent, 默认 (iPhone|iPad|Android|Macintosh|Windows|Linux)
-s
: 部分替换,仅替换正则匹配到的部分Clash 与 UA3F 的配置部署教程详见:UA3F 与 Clash 从零开始的部署教程
PROCESS-NAME,ua3f,DIRECT
置于规则列表顶部,MATCH,ua3f
置于规则列表底部。PROCESS-NAME,ua3f,DIRECT
与 MATCH,ua3f
之间按需加入自定义加密代理规则。如果上述 2 条规则之间加入 DIRECT 规则,请确保匹配该规则的流量属于非 HTTP 协议流量。proxies:
- name: "ua3f"
type: socks5
server: 127.0.0.1
port: 1080
url: http://connectivitycheck.platform.hicloud.com/generate_204
udp: false
rules:
- PROCESS-NAME,ua3f,DIRECT
- NETWORK,udp,DIRECT
- MATCH,ua3f
提供 3 个参考配置:
[!TIP] 使用 nftables 固定 TTL 为 64:
nft add table inet ttl64 nft add chain inet ttl64 postrouting { type filter hook postrouting priority -150\; policy accept\; } nft add rule inet ttl64 postrouting counter ip ttl set 64
[!TIP] 使用 iptables 固定 TTL 为 64:
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64