🧪 Как проверить, заработала ли стратегия (и почему проверка часто обманывает)

О чём заметка

Вы подобрали стратегию профилю (вручную или автоподбором) и смотрите, открылся ли сайт. Сама эта проверка — самый ненадёжный шаг во всей настройке: она регулярно показывает «всё ОК», когда на деле сайт не грузится, и наоборот. Здесь — две главные ловушки проверки и как проверять так, чтобы результат был честным. Что такое профиль и стратегия — в «Что такое профиль» и «Десинхронизация»; почему «не работает» это симптом — в одноимённой заметке.

TL;DR

  • Автоподбор (BlockCheck и аналоги) проверяет доступность отдельной утилитой (обычно curl), а вы сидите в браузере или игре — у них разный сетевой «почерк» (отпечаток TLS, размеры пакетов). Поэтому вердикт автоподбора и реальность могут расходиться в обе стороны: «стратегия работает», а сайт не грузится — и наоборот.
  • Финальная проверка — всегда в том приложении, ради которого всё затевалось (браузер, Discord, игра), а не в логе автоподбора.
  • Обычная перезагрузка F5 часто врёт: браузер переиспользует уже открытое TCP-соединение, нового соединения (нового SYN) не создаётся, а дурение и решение ТСПУ действуют именно на установке соединения. Старое соединение ТСПУ как блокировал, так и блокирует.
  • Проверяйте новым соединением: новое окно инкогнито (надёжнее всего), новая вкладка, Ctrl+F5; для приложений — полный перезапуск, в том числе выход из трея.

Ловушка 1: автоподбор проверяет через curl, а вы — через браузер

На пальцах

Автоподбор — это как отправить к охраннику на входе не себя, а курьера в другой одежде. Курьер (curl) прошёл — но это не значит, что пропустят вас (браузер): вы одеты иначе, и охранник (ТСПУ) среагирует на ваш вид по-своему. И наоборот: курьера развернули, а вас бы пропустили.

BlockCheck и встроенный в GUI автоподбор перебирают стратегии и после каждой дёргают сайт утилитой curl, проверяя, пришёл ли нормальный ответ (пример такой проверки — в заметке про curl). Логика разумная, но у неё есть слепое пятно: curl и ваш браузер выходят в сеть по-разному.

  • Разный TLS-отпечаток. Браузер и curl шлют разный по структуре первый пакет TLS-рукопожатия (ClientHello): другой набор расширений, другой порядок, другой размер. DPI умеет различать клиентов по этому «почерку» (JA3/JA4-отпечаток). Стратегия, которая удачно маскирует ClientHello от curl, на более крупном и сложном ClientHello браузера может сработать иначе.
  • Разные размеры и тайминги пакетов. Многие техники дурения «заточены» под конкретный разрез пакета (где разрезать ClientHello, какой длины фейк подмешать). У браузера пакет другой — и тот же разрез ложится в другое место.
  • Проверяется не весь сайт. Автоподбор обычно дёргает один домен, а реальная страница тянет ресурсы с десятков доменов (CDN, аналитика, API). Главный домен обошёлся, а критичный поддомен — нет, и страница всё равно «не грузится». Подробнее — в «Сложность современных веб-сайтов».

Итог: вердикт автоподбора — это ориентир, а не приговор. По наблюдениям, расхождение бывает в обе стороны — и ложное «работает», и ложное «не работает». Поэтому стратегию, которую предложил автоподбор, обязательно проверяйте в реальном приложении (и наоборот — не выбрасывайте стратегию только потому, что её забраковал блокчек: проверьте её руками в браузере).

Ловушка 2: F5 не пересоздаёт соединение — ТСПУ держит старое

На пальцах

TCP-соединение — это телефонный звонок: SYN — «Алло, можем говорить?», ответ — «Да, говори». Дурение подмешивает свои уловки в момент дозвона, в самые первые реплики. Если ТСПУ уже прослушал начало звонка и решил его глушить — он будет глушить этот звонок, сколько по нему ни говори. Обычная F5 — это не перезвонить, а продолжить тот же звонок. Чтобы новая стратегия вообще вступила в игру, надо положить трубку и набрать заново (новое соединение), а инкогнито — это позвонить с другого телефона.

Когда вы меняете стратегию и жмёте F5, кажется, что страница запрашивается «с нуля». На деле — часто нет:

  • Браузер переиспользует открытое соединение. Ради скорости браузер держит TCP-соединения к сайту открытыми (HTTP keep-alive) и при F5 гонит запрос по уже существующему соединению. Нового рукопожатия (нового SYN-пакета) не происходит.
  • Дурение работает только на установке соединения. Техники desync вмешиваются в рукопожатие и первый ClientHello — там, где DPI определяет домен и протокол (отсюда же приём «вложить данные в SYN», см. syndata). По уже установленному соединению новая стратегия попросту не применяется.
  • ТСПУ запоминает соединение. DPI отслеживает соединение по его «адресам» и принимает решение по его началу. Если соединение уже помечено как «плохое», оно таким и останется до закрытия — повторные запросы по нему ТСПУ продолжит блокировать.

Сложите три факта вместе — и получится частая ложная картина: стратегию сменили на рабочую, а сайт по F5 «не открывается», потому что висит и проверяется старое соединение, на котором новая стратегия ещё не работала.

Как заставить браузер открыть новое соединение

По возрастанию надёжности:

  • Ctrl+F5 (он же Ctrl+Shift+R) — жёсткая перезагрузка. Игнорирует кэш и на практике чаще, чем простой F5, инициирует новое соединение (но строгой гарантии нет — зависит от браузера).
  • Новая вкладка (а лучше — предварительно закрыв старую вкладку этого сайта).
  • Новое окно инкогнито / приватное окно — самый чистый способ. У него отдельный сетевой контекст и пустой кэш, поэтому к сайту почти наверняка пойдёт новое соединение.
  • Самое надёжное — полностью закрыть браузер (все окна; проверьте, что он не висит в трее) и открыть заново. Или просто подождать минуту-другую, пока старое keep-alive-соединение закроется по таймауту.

Для приложений (Discord, игры) — то же правило, но перезапуск полный

У программы нет «F5». Чтобы она открыла новое соединение с новой стратегией, её нужно закрыть целиком, вплоть до выхода из системного трея — иначе фоновый процесс продолжит держать старые соединения. Именно поэтому при подборе стратегии для Discord советуют перезапускать его полностью, «чтобы даже в трее его не было» — подробнее в разделе про Discord.

Короткий чек-лист честной проверки

  • Сменили стратегию профиля и убедились, что Zapret перезапущен и статус «работает» (см. как добавить профиль).
  • Проверяете в реальном приложении (браузер/Discord/игра), а не только по вердикту автоподбора.
  • Открываете ресурс новым соединением: новое окно инкогнито, новая вкладка или Ctrl+F5 — не простой F5.
  • Для приложения — полный перезапуск с выходом из трея.
  • Сайт не грузится целиком? Проверьте, не блокируется ли отдельный поддомен/CDN (см. про множество доменов).
  • Сомневаетесь, что вообще нужен обход? Сначала пройдите стандартную процедуру диагностики (проверка без Zapret → чистый пресет → подбор).

📚 См. также


🤖 Эти статьи открыты — можно обучать на них ИИ

При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: исходник этой заметки · весь репозиторий.