将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 -r requirements.txt
python server.py
也可以编译后开机自启动:
BUILD_WINDOWS
之后请为/dist/proxy.exe
创建快捷方式,复制到%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
建议分流
安装Proxy SwitchOmega
和Gooreplacer
,分别导入配置文件OmegaOptions.bak
和gooreplacer.json
(android请使用kiwi浏览器等)
项名 | 简单解释 | 是否可以域名自定义 |
---|---|---|
output_data |
是否输出包内容 | 否 |
listen_PORT |
代理运行端口 | 否 |
DOH_PORT |
代理使用DoH代理端口 | 否 |
my_socket_timeout |
接/发包超时时间 | 否 |
doh_server |
doh服务器 | 否 |
DNS_log_every |
dns缓存频率 | 否 |
TTL_log_every |
ttl缓存频率 | 否 |
num_TCP_fragment |
无sni段TCP分块数 | 是 |
TCP_frag |
sni所在tcp层大致段分块长度 | 是 |
method |
操作方法,见下文模式 | 是 |
IPtype |
dns查询ip默认类型(无则换) | 是 |
项名 | 简单解释 | 是否可以域名自定义 |
---|---|---|
num_TLS_fragment |
无sni段TLS分块数 | 是 |
TLS_frag |
sni在tls层分块长度 | 是 |
项名 | 简单解释 | 是否可以域名自定义 |
---|---|---|
FAKE_packet |
发送的假包内容 | 是 |
FAKE_ttl |
假包使用的ttl,填query 表示自动二分查询 |
是 |
FAKE_ttl_auto_timeout |
cookie缓存时间 | 是 |
FAKE_sleep |
发送假包后改为真包的间隔时间 | 是 |
其中,域名自定义指的是在domians.xxxx.com
下也有此配置项,且该处配置优先。
直接发包,不做修改
像双方发送FIN
,关闭连接。阻止此网站加载。(当一回gfw)。
项名 | 简单解释 |
---|---|
IP |
IP地址 |
port |
端口(不填默认443) |
IPcache |
是否缓存 |
TTLcache |
是否缓存IP对应TTL |
如果特定域名(若有多个取最长的,再有多个问python的sort)为sni的子串,则取。(使用AC自动机实现以应对巨大列表)
支持首尾匹配,实际上塞入AC自动机的是:^www.domain.genshin.mihoyo.com$
建议使用HTTPS_IP_finder 我本人也会维护已知的被ip封锁的网站。
支持IP(段)重定向到ip,默认链式跳转,如果要求配置不链式,在结果ip字符串前添加^
。