Skip to content
This repository was archived by the owner on Mar 15, 2026. It is now read-only.

Latest commit

 

History

History
140 lines (95 loc) · 7.61 KB

File metadata and controls

140 lines (95 loc) · 7.61 KB

Руководство пользователя TLSFragment

Сообщество

Для приглашённых участников существует закрытая комната.


Установка

Как пакет Python

python -m build --wheel --no-isolation
python -m installer dist/*.whl

После установки доступна команда tls_fragment (в данный момент отдельный entry‑point не поддерживается).

С исходного кода

git clone https://github.com/maoist2009/TlsFragment.git
cd TlsFragment
pip install poetry
poetry install
python run.py

Можно собрать исполняемый файл для Windows и добавить его в автозапуск:

# Сборка для Windows
BUILD_WINDOWS

Создайте ярлык к dist/proxy.exe и поместите его в
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup.


Как работает TLSFragment

TLSfrag

Первый пакет от TCP‑клиента (обычно ClientHello TLS, который обычно не фрагментируется на уровне приложения) разбивается одновременно на уровне TLS и TCP. SNI делится на несколько пакетов, чтобы обойти инспекцию GFW.

FAKEdesync

Отправляются поддельные пакеты с подстроенными значениями TTL, чтобы запутать DPI‑систему GFW. Это позволяет обходиться без прав администратора/root:

  • Windows – используется API TransmitFile (ограничено двумя одновременными передачами, ниже производительность).
  • Linux – используется механизм pipe.

Поддельные пакеты переотправляются согласно обычной логике TCP‑ретрансляций.


Модель параллелизма

  • Основная реализация использует threading (много потоков ОС).
  • Версия на asyncio была удалена, потому что стандартная сборка не поддерживает самопрокси DoH.

Использование в браузере

  1. Установите Proxy SwitchyOmega и Gooreplacer.
  2. Импортируйте предоставленные файлы конфигураций:
    • OmegaOptions.bak → SwitchyOmega
    • gooreplacer.json → Gooreplacer (Android‑пользователи могут воспользоваться Kiwi Browser и т.п.)

Рекомендуется разделять трафик (например, направлять только целевые домены через прокси).


Конфигурация

Глобальные параметры

Параметр Описание Переопределение для конкретного домена
output_data Логировать содержимое пакетов Нет
listen_PORT Порт, на котором слушает прокси Нет
DOH_PORT Порт DoH‑прокси Нет
my_socket_timeout Таймаут сокета (отправка/приём) Нет
doh_server DoH‑сервер (указать IP в domains) Нет
DNS_log_every Интервал логирования DNS‑кеша Нет
TTL_log_every Интервал логирования TTL‑кеша Нет
num_TCP_fragment Количество TCP‑фрагментов без SNI Да
TCP_frag Приблизительный размер TCP‑фрагмента для сегмента SNI Да
method Режим работы (см. ниже) Да
IPtype Предпочтительный тип IP для DNS‑запросов (резерв, если нет) Да

Параметры режима TLSfrag

Параметр Описание Переопределение для конкретного домена
num_TLS_fragment Количество TLS‑фрагментов без SNI Да
TLS_frag Размер TLS‑фрагмента для сегмента SNI Да

Параметры режима FAKEdesync

Параметр Описание Переопределение для конкретного домена
FAKE_packet Содержание поддельного пакета Да
FAKE_ttl TTL поддельного пакета; query — автоматический бинарный поиск Да
FAKE_ttl_auto_timeout Таймаут кэша cookie Да
FAKE_sleep Задержка между отправкой поддельного и реального пакетов Да

Переопределения для конкретных доменов задаются в domains.xxx.com и имеют приоритет над глобальными значениями.

Настройки доменов (domains)

Поле Значение
IP Целевой IP‑адрес
port Порт (по умолчанию 443, если не указан)
IPcache Кешировать IP
TTLcache Кешировать TTL, связанный с IP

Правила сопоставления доменов

SNI сравнивается с самым длинным суффиксом домена, присутствующим в конфигурации. При одинаковой длине решает порядок сортировки Python. Сопоставление реализовано через автомат Aho‑Corasick для скорости, например, хранится шаблон ^www.domain.genshin.mihoyo.com$. Поддерживаются как префиксные, так и суффиксные совпадения.

Поиск IP

Рекомендуется использовать HTTPS_IP_finder: https://github.com/maoist2009/HTTPS_IP_finder. Автор поддерживает список сайтов, блокируемых по IP.

Перенаправление IP

Поддерживается перенаправление IP (или диапазона IP) на другой IP. По умолчанию перенаправления цепочкой; чтобы отключить цепочку, добавьте ^ в начало строки целевого IP.