端到端数据流量伪装加密研究
仅供学习研究使用,请勿用于非法用途
项目名称 | 简介 |
---|---|
freedomGo | Go实现,包含local端、remote端 |
freedom4py | python3实现,包含local端、remote端 |
freedom4j | java实现,包含local端、remote端 |
freedom4NG | Android java实现,仅包含local端;单独使用可作为DNS、Host修改器 |
将本地代理数据伪装成指向远程端的HTTP(S) WebSocket流量。
- 在配置正确的情况下,Go、python3、java、Android版本的local端和remote端可以配合使用。
- local端实现了HTTP(S)、SOCKS5代理,仅需一个端口,即可自动识别各种代理类型。
- local端HTTP(S)代理支持按域名分流,可将流量分为直连和走remote端两种。
- local端到remote端可以套上一层HTTP(S),表现行为与Websocket无异,经测试可过CDN与Nginx。
- local端到remote端支持简单的用户名密码验证。
- 仅支持TCP,不支持UDP
local端配置
# socks5 http
ProxyType: http
BindHost: 127.0.0.1
BindPort: 1081
# 按域名分流将下面注释去掉即可
# 全局代理将下面注释掉即可
# GeoDomain:
# # 如果不匹配分流规则,那么就直连?
# DirectIfNotInRules: true
# # 同https://github.com/gfwlist/gfwlist
# GfwPath: data/gfwlist.txt
# # 将直连域名直接写入即可,每行一个
# DirectPath: data/direct_domains.txt
# 该值可以是ip或者域名
RemoteHost: 127.0.0.1
RemotePort: 443
# 和远端的连接是否经过TLS加密
RemoteSSL: false
Salt: salt
Username: username
Password: pwd
# 是否允许不安全的HTTPS连接
AllowInsecure: true
# 模拟的HTTP请求
HttpPath: /
# 如果连接是经过加密的,该值还是CLient Hello消息里面的SNI
HttpDomain: www.baidu.com
HttpUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
remote端配置
BindHost: 127.0.0.1
BindPort: 443
Salt: salt
UseSSL: false
# SNI: www.baidu.com
# CertPath: data/fullchain.pem
# KeyPath: data/www.baidu.com.key
Users:
user1: pwd1
username: pwd
$: .\freedomGo.exe -help
Usage of D:\Workspace\freedomGo\freedomGo.exe:
-c string
配置文件路径 (default "./conf.local.yaml")
-t string
模式local/remote (default "local")
- 运行本地端
freedomGo -t local -c "配置文件路径"
- 运行远程端
freedomGo -t remote -c "配置文件路径"