SkillAgentSearch skills...

TlsFragment

TlsFragment to Bypass GFW.

Install / Use

/learn @maoist2009/TlsFragment
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

English Russian Chinese

停止维护,后继项目存在且可用公开,可自行寻找。

TLSFragment使用指南

Ask DeepWiki

F-Droid Version

交流群

可用discussions

matrix反馈空间 也可直接加入公开群

有一个私密群,或许可以私信我尝试加入?

安装

<!-- 暂不支持 可以作为模块安装: ```shell python -m build --wheel --no-isolation python -m installer dist/*.whl ``` -->

运行

作为模块安装后可以直接运行 tls_fragment。(暂不支持)

或者将仓库克隆下来之后运行 run.py

Windows和Android提供GUI客户端,Windows客户端在隔壁

TlsFragment原理

TLSfrag

将TCP连接Client的第一个包(这个包一般来说是TLS ClientHello,一般应用层不会分片)在TLS层和TCP层分别进行分片,将sni拆入多个包以绕过gfw。

FAKEdesync

利用ttl发送假包,扰乱gfw的DPI。

为了避免管理员/root权限的需要。

  • 在Windows上,使用TransmitFile函数(由于TransmitFIle被限制最多同时运行2个,性能较差)
  • 在linux上,使用管道

通过重传机制发送。

异步方式

使用threading(多线程),有一个asyncio协程版本目前废弃,原因是当初默认版本无法支持自代理DoH。现在懒得改了,个人使用不会有明显性能差距。

安装使用

运行

git clone git@github.com: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.bakgooreplacer.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 | 操作模式,可选值:TLSfragFAKEdesyncDIRECT或者GFWlike | | safety_check | 如果是http(s)连接,是否只允许TLS1.3(不要乱关,被dpi了有时候容易死ip)|

TLSfrag模式配置

| 项名 | 简单解释 | | ------------------ | -------------------------------------------------------------------------- | | num_tls_pieces | 无SNI段的TLS分块数量 | | len_tls_sni | SNI在TLS层的分块长度(字节) | | send_interval | tcp分块发送间隔(秒) | | num_tcp_pieces | 无SNI段的TCP分块数量 | | len_tcp_sni | SNI在TCP层的分块长度(字节) |

FAKEdesync模式配置

| 项名 | 简单解释 | | ---------------- | -------------------------------------------------------------------------- | | 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配置 > 域名配置 > 默认配置。当处理一个连接请求时,系统会按此顺序匹配配置:

  1. IP配置:检查目标IP是否在IP重定向规则中匹配
  2. 域名配置:若IP未匹配,则检查SNI域名是否匹配域名配置
  3. 默认配置:若以上均未匹配,则使用default_policy指定的配置

IP查找

建议使用HTTPS_IP_finder工具获取有效IP地址。该工具支持:

  • 扫描IP和端口
  • 通过反DPI代理进行探测
  • 并发扫描提高效率

IP重定向

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.410.0.0.1

重定向功能主要用于优选(将被封锁ip改为可用ip也是一种特殊的优选)。

注意事项

  • Windows用户:由于TransmitFile函数的限制,建议不要设置过高的并发数
  • Android用户:程序仅为代理,需配合浏览器使用
    • 推荐使用Kiwibrowser + Switch Proxy Omega
    • 或使用SocksTun设置代理(Address: 127.0.0.1, Port: 2500)
  • 安全提示:本程序无法保证SNI完全不泄露,高风险用户建议结合其他安全工具使用
View on GitHub
GitHub Stars332
CategoryDevelopment
Updated2d ago
Forks31

Languages

Python

Security Score

95/100

Audited on Mar 29, 2026

No findings