Skip to content
/ UA3F Public

Implementation of the next generation of HTTP User-Agent modification methodology.

License

Notifications You must be signed in to change notification settings

SunBK201/UA3F

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UA3F

UA3F 是下一代 HTTP User-Agent 修改方法,对外作为一个 SOCK5 服务,可以部署在路由器等设备等设备进行透明 UA 修改。

特性

  • 支持正则表达式规则匹配修改 User-Agent
  • 自定义 User-Agent 内容
  • 与其他网络加速代理工具共存
  • LRU 高速缓存非 HTTP 域名,加速非 HTTP 流量转发
  • 支持 LuCI Web 图形页面
  • 一键式部署方式,无需编译部署
  • 支持 UDP 转发

UA3F

部署

提供 2 种部署方式:

  1. 使用安装/升级脚本进行部署(推荐):
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
  1. 使用 ipk 安装包进行部署:

Release 页面已经提供常见架构的编译版本,可以根据自己架构下载并解压到路由器等设备上。

使用

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

UA3F-LuCI

Note

设置说明:

  • Port 为 UA3F 监听端口,默认 1080
  • Bind Address 为 UA3F 监听地址,默认 127.0.0.1
  • 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。
  • Log Level 为日志等级,默认 info, 如果需要调试排查错误可以设置为 debug

作为后台服务运行

安装脚本执行成功后可通过以下命令启动 UA3F:

# 启动 UA3F
uci set ua3f.enabled.enabled=1
uci commit ua3f
service ua3f start

关闭或重启 UA3F 命令:

# 关闭 UA3F
service ua3f stop
# 重启 UA3F
service ua3f restart

配置 UA3F:

# 自定义 UA
uci set ua3f.main.ua="FFF"
# 监听端口号
uci set ua3f.main.port="1080"
# 绑定地址
uci set ua3f.main.bind="127.0.0.1"
# 日志等级
uci set ua3f.main.log_level="info"

# 应用配置
uci commit ua3f
reload_config

手动命令行启动

sudo -u nobody /usr/bin/ua3f

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

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

相关启动参数:

  • -p <port>: 端口号,默认 1080
  • -f <UA>: 自定义 UA,默认 FFF
  • -r <regex>: 自定义正则匹配 User-Agent, 默认 (iPhone|iPad|Android|Macintosh|Windows|Linux)
  • -b <bind addr>: 自定义绑定监听地址,默认 127.0.0.1
  • -l <log level>: 日志等级,默认 info,可选:debug,默认日志位置:/var/log/ua3f.log

Clash 配置建议

Clash 与 UA3F 的配置部署教程详见:UA3F 与 Clash 从零开始的部署教程

  • Clash 需要选用 Meta 内核。
  • 请确保 PROCESS-NAME,ua3f,DIRECT 置于规则列表顶部,MATCH,ua3f 置于规则列表底部。
  • 可以在 PROCESS-NAME,ua3f,DIRECTMATCH,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

请不要将从 Release 下载解压得到的 ua3f 二进制文件修改名称, 如需修改,则需要在 PROCESS-NAME,ua3f,DIRECT 中修改相应的名称。

Clash 参考配置

提供 3 个参考配置:

  1. 国内版,无需进行任何修改,可直接使用 ua3f-cn.yaml (Clash 需要选用 Meta 内核。)
  2. 国际版,针对有特定需求的特殊用户进行适配,ua3f-global.yaml,注意需要在 proxy-providers > Global-ISP > url 中(第 23 行)加入你的代理节点订阅链接。(Clash 需要选用 Meta 内核。)
  3. 国际版(增强),针对流量特征检测 (DPI) 进行规则补充,注意该配置会对 QQ、微信等平台的流量进行分流代理,因此需要根据自己的需求谨慎选择该配置,ua3f-global-enhance.yaml,注意需要在 proxy-providers > Global-ISP > url 中(第 23 行)加入你的代理节点订阅链接。(Clash 需要选用 Meta 内核。)

Roadmap

  • 支持 LuCI
  • 优化部署流程
  • 支持 SOCK5 Auth
  • 支持 UDP
  • 支持 IPv6
  • 性能提升

Extra

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