可用discussions
matrix反馈空间 也可直接加入公开群
- 配置优化(如可用ip查找,mode变更等): https://matrix.to/#/!WvZLqiyvvsVSCrsuWt:matrix.org?via=matrix.org
- tlsp程序本身问题:https://matrix.to/#/!GvJhmmjpGqeNCPyMyE:matrix.org?via=matrix.org
- 关于代理配置问题: https://matrix.to/#/!bRNRPJmWSBrWyuQbCd:matrix.org?via=matrix.org
有一个私密群,或许可以私信我尝试加入?
作为模块安装后可以直接运行 tls_fragment。(暂不支持)
或者将仓库克隆下来之后运行 run.py。
Windows和Android提供GUI客户端,Windows客户端在隔壁
将TCP连接Client的第一个包(这个包一般来说是TLS ClientHello,一般应用层不会分片)在TLS层和TCP层分别进行分片,将sni拆入多个包以绕过gfw。
利用ttl发送假包,扰乱gfw的DPI。
为了避免管理员/root权限的需要。
- 在Windows上,使用
TransmitFile函数(由于TransmitFIle被限制最多同时运行2个,性能较差) - 在linux上,使用管道
通过重传机制发送。
使用threading(多线程),有一个asyncio协程版本目前废弃,原因是当初默认版本无法支持自代理DoH。现在懒得改了,个人使用不会有明显性能差距。
git clone [email protected]:maoist2009/TlsFragment.git
pip install poetry
poetry init
python run.py下载依赖也可pip install -r requirements.txt。
也可以编译后开机自启动:
cd tools
BUILD_WINDOWS之后请为/dist/proxy.exe创建快捷方式,复制到%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
建议分流,内置了一个黑/白名单pac生成器。使用和本程序相同的匹配方式(见下)。pac规则存放在config_pac.pac里。
安装ZeroOmega,导入配置文件OmegaOptions.bak和gooreplacer.json(android请使用Mises/ultimatum浏览器等)。
或者自行通过各种方式分流。
其他可以看Releases
程序使用JSON格式配置,主要包含全局配置和连接策略配置。
本程序本身不行,~~但是作者喜欢作,~~喜欢乱改配置行为为自己认为优美的写法。因此具体行为以代码为准。
配置文件优先级:
- 程序默认配置文件:
config.json - 本地覆盖配置文件:
config_extra.json(会覆盖config.json中的对应项目)
全局配置项控制程序行为,包括:
| 项名 | 简单解释 |
|---|---|
loglevel |
日志级别,可选值:DEBUG, INFO, WARNING, ERROR |
port |
代理运行端口(默认2500) |
DOH_port |
DoH代理使用端口(默认2500) |
my_socket_timeout |
套接字超时时间(秒),控制连接/数据传输超时 |
FAKE_ttl_auto_timeout |
FAKEdesync模式中cookie缓存时间(秒) |
doh_server |
DoH服务器地址,如https://example.com/dns-query?dns=, 后接域名发送查询。支持udp://,进行udp dns |
DNS_cache_update_interval |
DNS缓存更新间隔(秒) |
TTL_cache_update_interval |
TTL缓存更新间隔(秒) |
UDPfakeDNS |
是否启用UDP假DNS功能 |
BySNIfirst |
是否优先通过SNI匹配域名 |
TransmitFile_Limit |
Windows下TransmitFile函数并发限制(默认2) |
redirect_when_ip |
如果上游指定了IP是否进行重定向 |
default_policy |
默认连接策略,包含具体模式配置(见下文) |
所有连接策略配置都在default_policy对象中定义,包括以下内容:
| 项名 | 简单解释 |
|---|---|
mode |
操作模式,可选值:TLSfrag或FAKEdesync或DIRECT或者GFWlike |
safety_check |
如果是http(s)连接,是否只允许TLS1.3(不要乱关,被dpi了有时候容易死ip) |
| 项名 | 简单解释 |
|---|---|
num_tls_pieces |
无SNI段的TLS分块数量 |
len_tls_sni |
SNI在TLS层的分块长度(字节) |
send_interval |
tcp分块发送间隔(秒) |
num_tcp_pieces |
无SNI段的TCP分块数量 |
len_tcp_sni |
SNI在TCP层的分块长度(字节) |
| 项名 | 简单解释 |
|---|---|
fake_packet |
发送的假包内容,如HTTP请求,会截取前缀 |
fake_ttl |
假包使用的TTL值,支持复杂模式(如q0-1;3=3;5-1;8-2;20=18表示查询模式) |
fake_sleep |
发送假包后改为真包的间隔时间(秒) |
send_interval |
tcp分块发送间隔(秒) |
num_tcp_pieces |
无假包区域TCP分块数量 |
len_tcp_sni |
假包长度 |
TTL_cache |
是否缓存查询到的达到服务器所需最低ttl |
| 会在握手包开头和sni开头各进行一次ttl假包操作。 |
查询模式字符串中,q开头,接下来a-b表示查询的到达服务器最低ttl超过a(但是不超过下一个a'),假包ttl为真包最低ttl-b,若为`=则直接取b.
域名配置通过domains下对象定义,可以为特定域名设置不同的连接策略。每个域名配置可以包含以下项目:
| 项名 | 简单解释 |
|---|---|
IP |
目标IP地址 |
IPtype |
首选ip dns类型 |
DNS_cache |
是否缓存DNS查询结果 |
DNS_cache_TTL |
DNS缓存TTL(秒),默认3天(259200秒) |
域名匹配使用AC自动机实现,以应对大规模域名列表:
- 如果特定域名是SNI的子串,则匹配成功
- 当多个配置域名匹配时,优先选择最长的配置域名
- 若长度相同,则按Python的字典序规则选择
- 支持首尾匹配,配置域名会自动添加
^和$符号确保精确匹配 - 支持通配符模式(如
example.(com|net)),系统会自动展开为多个具体域名
单连接配置的优先级顺序为:IP配置 > 域名配置 > 默认配置。当处理一个连接请求时,系统会按此顺序匹配配置:
- IP配置:检查目标IP是否在IP重定向规则中匹配
- 域名配置:若IP未匹配,则检查SNI域名是否匹配域名配置
- 默认配置:若以上均未匹配,则使用
default_policy指定的配置
建议使用HTTPS_IP_finder工具获取有效IP地址。该工具支持:
- 扫描IP和端口
- 通过反DPI代理进行探测
- 并发扫描提高效率
IP重定向支持将目标IP(或IP段)重定向到新IP,主要特性如下:
-
链式重定向:默认情况下,系统会递归应用重定向规则,直到无匹配或遇到终止标记。例如,IP A→B→C,最终会使用C。
-
终止链式:在重定向目标IP前添加
^符号(如^1.2.3.4),则停止递归。例如,IP A→^B,最终会使用B,不再继续重定向。 -
IP段处理:支持CIDR表示法(如
1.2.3.0/24)。系统会保留原始IP的后缀部分,只替换前缀。例如,将1.2.3.4重定向到10.0.0.0/24,结果为10.0.0.4。 -
精确匹配:支持单个IP的精确重定向,如
1.2.3.4→10.0.0.1。
重定向功能主要用于优选(将被封锁ip改为可用ip也是一种特殊的优选)。
- Windows用户:由于TransmitFile函数的限制,建议不要设置过高的并发数
- Android用户:程序仅为代理,需配合浏览器使用
- 推荐使用Kiwibrowser + Switch Proxy Omega
- 或使用SocksTun设置代理(Address: 127.0.0.1, Port: 2500)
- 安全提示:本程序无法保证SNI完全不泄露,高风险用户建议结合其他安全工具使用