Программа
Разбор стратегий
Девять встроенных стратегий построчно: что делает каждый аргумент, за что он отвечает и почему собрано именно так, а не иначе.
Стратегия в Zapret2UI: это список аргументов для движка winws2. Ниже разобрана каждая
из встроенных. Если незнакомы слова «фейк», «разрезка» и «fooling», сначала стоит прочитать
Как это работает. Формальное описание всех глаголов и параметров:
Справочник.
Все встроенные стратегии сделаны из проверенных на практике рабочих конфигураций, в том числе переводов набора Flowseal на движок второго поколения. Это надёжные отправные точки, но не гарантия: у вашего провайдера может сработать любая из них или ни одна. Именно поэтому в программе есть подбор и генерация.
Общий скелет
Семь стратегий с приставкой «Комбо» устроены одинаково и отличаются только приёмами для TLS. Всё остальное у них общее: та же ширина перехвата, те же блобы, те же профили для QUIC и голоса. Понимание скелета один раз избавляет от необходимости разбирать каждую заново.
Ключевая идея комбо: маршрутизация по имени сайта. Discord, YouTube и весь остальной трафик идут через разные приёмы в одной команде. Это важно, потому что то, что пробивает Discord, часто не подходит для YouTube, и наоборот. Раньше приходилось переключаться между стратегиями, теперь достаточно одной.
Глобальная часть
До первого --new идут настройки, действующие на всю команду.
--wf-tcp-out=80,443-65535
--wf-udp-out=443,19294-19344,50000-65535
--ctrack-disable=0
--ipcache-lifetime=8400
--ipcache-hostname=1
--lua-init=fake_default_tls = tls_mod(fake_default_tls,'rnd,rndsni')
--blob=tls_google:@{FILES}\fake\tls_clienthello_www_google_com.bin
--blob=tls_vk:@{FILES}\fake\tls_clienthello_vk_com.bin
--blob=tls_sber:@{FILES}\fake\tls_clienthello_sberbank_ru.bin
--blob=tls_gos:@{FILES}\fake\tls_clienthello_gosuslugi_ru.bin
--blob=quic_google:@{FILES}\fake\quic_initial_www_google_com.bin
--blob=quic_vk:@{FILES}\fake\quic_initial_vk_com.bin
--wf-raw-part=@{WF}\windivert_part.stun.txt
--wf-raw-part=@{WF}\windivert_part.quic_initial_ietf.txt
- --wf-tcp-out
- Ширина перехвата по TCP. Не только 443: медиа и вложения Discord ходят по высоким портам, и профиль, ловящий один 443, теряет половину сервиса. Порты перечисляются через запятую в одном флаге, повторное указание перезаписывает предыдущее.
- --wf-udp-out
- То же для UDP: 443 под QUIC плюс голосовой диапазон Discord. Игровой фильтр в настройках расширяет это до всех высоких портов.
- --ipcache-hostname
- Включает запоминание имени сайта для адреса. Обязателен для приёмов вроде
wssize, которые срабатывают до того, как имя сайта вообще появится в потоке, и иначе не знают, к кому применяться. - --blob
- Даёт короткое имя файлу с готовым ClientHello. Дальше в приёмах пишется просто
blob=tls_google. Блобыtls_vkиquic_vk: настоящие приветствия отvk.com. Смысл в том, что ТСПУ пропускает отечественный трафик свободнее, поэтому фейк «под VK» иногда выживает там, где фейк «под Google» режут. - --wf-raw-part
- Подключает готовые куски фильтра перехвата для STUN и для первого пакета QUIC. Без них голос Discord и HTTP/3 просто не попадут в обработку.
Семь профилей
Дальше команда делится на профили: каждый начинается с --new и описывает, к кому
применяться и что делать. Порядок именно такой во всех комбо.
| Профиль | Кого ловит | Что делает |
|---|---|---|
| 1. Discord TLS | --filter-tcp=443-65535 --filter-l7=tls плюс список доменов Discord |
Вход, gateway, медиа. Здесь стоит приём, который в стратегиях отличается. |
| 2. YouTube TLS | То же, но список доменов YouTube и Google | Сайт и видео. Свой приём, обычно другой, чем у Discord. |
| 3. Остальной TLS | Всё прочее, кроме списка исключений | Запасной вариант для всего остального. Исключения защищают банки, госуслуги и подобное от вмешательства. |
| 4. QUIC YouTube | --filter-udp=443-65535 --filter-l7=quic, список YouTube |
Фейк QUIC-блобом, repeats=11. |
| 5. QUIC Discord | То же, список Discord | Отдельный профиль нужен для вложений и CDN, которые ходят по HTTP/3. |
| 6. QUIC остальное | Всё прочее, кроме исключений | Фейк стандартным блобом. |
| 7. Голос Discord | --filter-udp=19294-19344,50000-65535 --filter-l7=discord,stun |
Отдельный приём для голоса. Разобран ниже. |
В профилях TLS перед приёмом всегда стоят два «липких» флага:
- --payload=tls_client_hello
- Ограничивает срабатывание первым пакетом рукопожатия. Без него приём применялся бы ко всем пакетам подряд и ломал бы соединение.
- --out-range=-d10
- Ограничивает область действия первыми пакетами исходящих данных. Дальше по соединению движок не вмешивается.
Эти флаги липкие: они действуют с места указания и до переопределения, поэтому обязаны
стоять перед тем --lua-desync, на который влияют. Перестановка их местами
меняет поведение молча, без ошибки.
Голосовой профиль
Он одинаков во всех комбо, кроме ALT10 и ALT11, и заслуживает отдельного объяснения, потому что логика тут вывернутая.
--filter-udp=19294-19344,50000-65535 --filter-l7=discord,stun
--lua-desync=fake:blob=quic_google:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:repeats=2
- диапазон портов
- Весь высокий диапазон, а не узкие 50000 до 50100. Узкий диапазон пропускал половину голосовых серверов, из-за чего получался вечный пинг 5000.
- blob=quic_google
- В голосовой поток подмешивается пакет, который для него является мусором. Сервер отбрасывает его, не разбирая, поэтому нумерация голосового потока не портится и не возникает ошибки маршрутизации. Фейк здесь нужен исключительно для DPI.
- ip_autottl
- Фейк умирает по дороге и до сервера не доходит. Благодаря этому провайдер видит «шум» и не душит поток, а настоящий голос идёт без ограничения скорости.
- repeats=2
- Совсем лёгкое вмешательство. Голос чувствителен к задержкам, и большое число повторов вредит сильнее, чем помогает.
Разбор стратегий
Дальше идут сами стратегии, в том же порядке, в каком их стоит перебирать вручную. Показан только блок TLS-приёмов: всё остальное берётся из скелета выше.
Комбо (рекомендуемый)
по умолчанию Универсальная, начните с неё# Discord и весь остальной TLS
--lua-desync=hostfakesplit:host=www.google.com:tcp_ts=-1000:tcp_md5:repeats=4
# YouTube и Google
--lua-desync=fake:blob=tls_google:tcp_md5:tcp_seq=-10000:repeats=6
--lua-desync=multidisorder:pos=1,midsld
- hostfakesplit
- Режет пакет точно по имени сайта и подставляет фальшивое имя такой же длины. Главное следствие: приём подстраивается под любой размер ClientHello. Поэтому он пускает не только на страницу входа Discord, но и к gateway, у которого приветствие другого размера. Стратегии с фиксированным перекрытием на этом спотыкаются: логин проходит, а подключения к серверам нет.
- host=www.google.com
- Имя, которое подставляется вместо настоящего. Безобидное и заведомо не заблокированное.
- tcp_ts=-1000
- Фейк получает более старую временную метку и отбрасывается на стороне сервера механизмом PAWS. Значение обязано быть отрицательным: при положительном отбрасываться будет настоящий пакет, а не фейк.
- tcp_md5
- Второй способ убить фейк, на случай если временные метки не сработают. Выбран вместо
badsumпотому, что безопасен за домашним NAT: роутер не выбрасывает такой пакет заранее. - repeats=4
- Фейк отправляется четыре раза. Чем больше повторов, тем выше шанс, что DPI успеет его заметить и запомнить соединение как разрешённое.
- fake + multidisorder
- Для YouTube связка другая: сначала фейковый ClientHello, следом настоящий, разрезанный и отправленный в обратном порядке. Один приём тут обычно не пробивает, работает именно сочетание.
- pos=1,midsld
- Две точки разреза: сразу после первого байта и в середине домена второго уровня. Второй
маркер обязателен:
pos=1сам по себе движок вырезает, и приём превращается в ничего не делающий.
Когда брать. Всегда первой. Она включена по умолчанию и на большинстве провайдеров закрывает вопрос.
Комбо, отечественный (VK, целевой)
Маскировка под VK# Discord и остальной TLS
--lua-desync=hostfakesplit:host=vk.com:tcp_ts=-1000:tcp_md5:repeats=4
# YouTube: без изменений, как в рекомендуемой
- host=vk.com
- Единственное отличие от рекомендуемой. ТСПУ относится к отечественному трафику мягче, и фейк «под VK» проходит там, где фейк «под Google» режут. Это заметный тренд последних лет: в других наборах для той же цели берут Ozon или облако Сбера.
- YouTube остаётся на google-фейке
- Сознательно. Для видеосерверов Google фейк «под VK» не годится: там нужен обычный рабочий профиль, и подмена домена только мешает.
Когда брать. Первым делом после рекомендуемой, особенно в характерной ситуации: в диагностике всё зелёное, а Discord всё равно не открывается.
Комбо, Flowseal ALT10 (двойной fake + ts)
Когда не работают голос и медиа# Discord и остальной TLS: два фейка подряд
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:repeats=6
--lua-desync=fake:blob=tls_vk:tcp_ts=-1000:repeats=6
# YouTube
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:ip_id=zero:repeats=6
# голос: отечественный блоб вместо google
--lua-desync=fake:blob=quic_vk:repeats=6
- никакой разрезки
- Настоящий пакет не трогается вообще. Вся работа делается фейками. Именно поэтому стратегия часто чинит медиа и голос: разрезка иногда пускает только в логин, а дальше соединения ведут себя иначе и ломаются.
- два фейка подряд
- Сначала «под Google», сразу за ним «под VK». Расчёт на то, что хотя бы один из двух устроит конкретную железку. Дешёвая страховка: лишний фейк всё равно умрёт по дороге.
- только tcp_ts
- Единственный способ убийства фейка. Отсюда важное следствие: стратегия полностью зависит от включённых TCP timestamps. Программа включает их сама на время сеанса, но если бы не включала, стратегия молча ничего не делала бы.
- ip_id=zero
- Обнуляет поле идентификатора в заголовке IP у фейка. Дополнительный признак, по которому часть DPI отличает пакеты и обрабатывает их иначе.
- blob=quic_vk для голоса
- Голосовой мусор тоже отечественный. На части сетей именно это чинит пинг 5000 и «подключается, но никого не слышно».
Когда брать. Классический случай: вход в Discord проходит, а дальше ничего. Не подключается к серверам, не грузятся вложения, молчит голос.
Комбо, Flowseal ALT11 (fake+ts, затем seqovl)
Фейк и разрезка внахлёст# Discord
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:repeats=6
--lua-desync=multisplit:pos=1,midsld:seqovl=681:seqovl_pattern=tls_google:optional
# остальной TLS: то же, но перекрытие 664 байта
# голос: quic_vk, как в ALT10
- fake сначала, разрезка потом
- Порядок принципиален. Фейк с временной меткой идёт первым и «готовит» соединение, и только после этого применяется разрезка с перекрытием. Без этой подготовки большое перекрытие ломало бы подключение к gateway.
- seqovl=681
- Перекрытие: к началу настоящего пакета дописывается 681 байт постороннего содержимого, так
что DPI и сервер собирают поток по-разному. Для
multisplitэто число байт, а не позиция. Уmultidisorderтот же параметр означает совсем другое. - seqovl_pattern=tls_google
- Дописывается не случайный мусор, а настоящее приветствие от Google. Правдоподобное начало переживает проверки, которые случайные байты не проходят.
- :optional
- Если разрезка по каким-то причинам не применилась, приём тихо пропускается, а не роняет всю обработку соединения.
- 664 вместо 681
- Для профиля «остальное» перекрытие чуть меньше. Значения подобраны эмпирически в исходном наборе Flowseal и перенесены как есть.
Когда брать. Сразу после ALT10, если та не зашла. Это два варианта одной идеи от одного автора.
Комбо, Flowseal (multisplit seqovl)
Разрезка запроса# Discord
--lua-desync=multisplit:pos=2:seqovl=681:seqovl_pattern=tls_google:optional
# YouTube: то же плюс ip_id=zero
# остальное: перекрытие 568
- никаких фейков
- Чистая разрезка с перекрытием, без единого поддельного пакета. Значит, никакого fooling не нужно вовсе, и стратегия не зависит от TCP timestamps и от поведения домашнего роутера. Самая «нетребовательная» из всех.
- pos=2
- Одна точка разреза, после второго байта. Здесь второй маркер не нужен, потому что основную работу делает перекрытие, а не сам разрез.
Когда брать. Когда варианты с фейками не срабатывают. Часто это признак того, что DPI проверяет пакеты слишком тщательно и фейкам просто не верит.
Комбо, Flowseal ALT (fake + fakedsplit)
Фейк и ложная разрезка# одинаково для Discord, YouTube и остального
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:repeats=6
--lua-desync=fakedsplit:tcp_ts=-1000
- fakedsplit
- Разрезка, при которой между настоящими сегментами вставляются поддельные. Ключевое отличие
от
multisplit: fooling применяется только к поддельным сегментам, поэтомуtcp_tsздесь безопасен. Уmultisplitон подействовал бы и на настоящие сегменты и сломал бы соединение. - одинаково для всех
- Единственная стратегия, где все три профиля TLS используют один и тот же приём. Простая и предсказуемая, удобна как контрольная точка при переборе.
Когда брать. Если и фейки по отдельности, и чистая разрезка не помогли. Иногда работает именно их сочетание.
Комбо, окно (wssize)
Дробит ответ сервера# Discord и остальной TLS
--lua-desync=multisplit:pos=2,midsld-2:seqovl=1:seqovl_pattern=tls_google:optional
--lua-desync=wssize:wsize=1:scale=6
# YouTube: fake + multidisorder, как в рекомендуемой
- wssize
- Единственная стратегия, которая работает с ответом сервера, а не с вашим запросом. Объявляется крошечное окно приёма, сервер вынужден отдавать ответ мелкими порциями, и DPI не собирает из него сигнатуру.
- wsize=1:scale=6
- Размер окна и множитель масштабирования. Комбинация даёт очень маленькое окно на первых пакетах, дальше оно восстанавливается.
- цена
- Дробление ответа означает больше пакетов и заметно медленнее загрузку. Это осознанный размен, поэтому стратегия и стоит в списке последней среди комбо.
- midsld-2
- Разрез на два байта левее середины домена. Смещения к маркерам записываются вот так.
Когда брать. Когда упрямо не открывается именно страница входа и ничего другое не помогло. Готовьтесь к тому, что будет медленнее.
Discord, голос (QUIC-фейк)
точечная Только голос Discord# лёгкая разрезка управляющего соединения discord.media
--filter-tcp=443-65535 --filter-l7=tls {HOSTLIST:discord}
--lua-desync=multisplit:pos=2,midsld-2:seqovl=1:seqovl_pattern=tls_google:optional
--new
# голос: фейк QUIC-блобом, без ограничения TTL
--filter-udp=19294-19344,50000-65535 --filter-l7=discord,stun
--lua-desync=fake:blob=quic_google:repeats=6
- это не комбо
- YouTube и остальной трафик не трогаются вообще. Стратегия чинит одну конкретную вещь, и только её.
- без ip_autottl
- Главное отличие от голосового профиля в комбо. Подбор TTL зависит от маршрута и на некоторых сетях мешает. Здесь его нет, фейк просто отбрасывается сервером как мусор.
- repeats=6
- Больше повторов, чем в комбо, потому что нет второго механизма и вся надежда на то, что DPI заметит фейк.
Когда брать. Ровно один случай: текст в Discord работает, а в голосовом канале вечное подключение, пинг 5000 или никого не слышно.
Discord, адаптивный (circular)
экспериментальная Подбирает способ на ходу--filter-tcp=443-65535 --filter-l7=tls {HOSTLIST:discord}
--in-range=-s5556 --out-range=-d10 --payload=tls_client_hello
--lua-desync=circular:fails=2:time=300
# вариант 1: hostfakesplit
--lua-desync=hostfakesplit:host=www.google.com:tcp_ts=-1000:tcp_md5:repeats=4:strategy=1
# вариант 2: двойной fake
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:repeats=6:strategy=2
--lua-desync=fake:blob=tls_vk:tcp_ts=-1000:repeats=6:strategy=2
# вариант 3: fake плюс перекрытие
--lua-desync=fake:blob=tls_google:tcp_ts=-1000:repeats=6:strategy=3
--lua-desync=multisplit:pos=1,midsld:seqovl=681:seqovl_pattern=tls_google:strategy=3:optional
- circular
- Не приём, а распорядитель: он переключает варианты сам, когда его детектор ловит провал. Успешный вариант больше не трогается, и всё это происходит на лету, без перезапуска движка.
- fails=2:time=300
- Переключаться после двух неудач; окно счёта 300 единиц времени.
- strategy=1, 2, 3
- Метки вариантов. Нумерация начинается с единицы и идёт без пропусков. Внутри одного варианта может быть несколько приёмов, как в варианте 2.
- три независимо рабочих варианта
- Это не случайный набор: 1 повторяет рекомендуемую, 2 повторяет ALT10, 3 повторяет ALT11. То есть перебираются три подхода, каждый из которых у кого-то работает сам по себе.
- --in-range обязателен
- Без кэша входящих пакетов детектор не увидит сброс от DPI и переключаться будет нечему. Пропустить этот флаг означает получить неработающую ротацию.
Дайте ей несколько секунд после старта. Стратегия перебирает варианты в реальном времени, поэтому сразу после включения может ещё «искать». И помните: она трогает только Discord, YouTube остаётся без обхода.
Когда брать. Когда именно Discord ведёт себя нестабильно: то подключается, то нет. Помечена экспериментальной, потому что зависит от распорядителя, которого движок подгружает отдельной библиотекой.
Какую брать под какой симптом
| Что происходит | Что пробовать |
|---|---|
| Ничего не пробовал, просто нужно чтобы работало | Комбо (рекомендуемый), оно уже включено |
| В диагностике зелёное, а Discord не открывается | Отечественный (VK), затем ALT10 |
| Вход проходит, но не подключает к серверам, не грузятся вложения | ALT10, затем ALT11 |
| Текст работает, голос молчит или пинг 5000 | Discord, голос (QUIC-фейк), затем ALT10 |
| Фейковые пакеты не помогают ни в одном варианте | Flowseal (multisplit seqovl): там фейков нет вовсе |
| Упрямо не открывается страница входа | Окно (wssize), приготовьтесь к замедлению |
| Discord работает через раз, нестабильно | Адаптивный (circular) |
| YouTube открывается, видео бесконечно грузится | Стратегия ни при чём: отключите QUIC в настройках |
| Перепробовал всё | «Подобрать», затем «Сгенерировать» на вкладке Диагностика |
Собственную стратегию можно написать руками или получить генерацией, а потом доработать. Все правила формата, включая те, нарушение которых даёт «зелено, но не работает», собраны в Справочнике.