- [Вступление](#вступление) - [Самое простое решение](#самое-простое-решение) - [Решение "как положено"](#решение-как-положено) # Вступление Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню `readme.md`. Как обычно, компьютерная грамотность ложится полностью на вас. Вы должны уметь работать с консолью Windows и иметь минимальные навыки обращения с командными файлами `.bat`, `.cmd`. Если грамотность отсутствует и возникает куча "как" на базовых вещах - проходите мимо или ищите помощь в другом месте. Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда, которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах, требуется настройка под специфические условия у вашего провайдера. Условия могут меняться со временем, и методика может начинать или переставать работать, может потребоваться повторный анализ ситуации. Могут обнаруживаться отдельные ресурсы, которые заблокированы иначе, и которые не работают или перестали работать. Могут и сломаться отдельные незаблокированные ресурсы. Поэтому очень желательно иметь знания в области сетей, чтобы иметь возможность проанализировать техническую ситуацию. Не будет лишним иметь обходные каналы проксирования трафика на случай, если обход DPI не помогает. Будем считать, что у вас есть Windows 7 или выше. Задача - обойти блокировки с самой системы. Есть решение самое простое, а есть "как положено". # Самое простое решение Совсем ничего не могу, все очень сложно, дайте мне таблетку. Скачайте и распакуйте [архив](https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip). Запустите `zapret-winws/preset_russia.cmd` от имени администратора. Возможно, заведется сразу. Этот вариант похож на `2_any_country.cmd` из [GoodbyeDPI](https://github.com/ValdikSS/GoodbyeDPI). То же самое с ограничителем по автоматически создаваемому хост-листу `preset_russia_autohostlist.cmd`. Что такое `autohostlist` - читайте `readme.md`. Проще говоря, мы обходим только то, что долго и упорно не хочет открываться. Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать. Остальное не будет ломаться. Использовать только, если первый вариант тоже работает. Не помогла таблетка? Это вовсе не значит, что ничего не получится. Но придется делать по-нормальному. # Решение "как положено" 1) Если у вас Windows 7, обновляйте систему. Годами не обновляемая 7-ка может не запускать драйвер `windivert`. Поддержка 32-битных x86 Windows возможна, но в готовом виде отсутствует. На Windows 11 ARM64 выполните `arm64/install_arm64.cmd` от имени администратора и перезагрузите компьютер. Читайте `docs/windows.md`. Имейте в виду, что антивирусы могут плохо реагировать на `windivert`. `cygwin` имеет внушительный список несовместимостей с антивирусами. Многие антивирусы его ломают. Читайте [FAQ](https://www.cygwin.com/faq.html#faq.using.bloda). Если это имеет место, используйте исключения. Если это не помогает - отключайте антивирус совсем. 2) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам `zapret`. 3) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. NAT не подходит. 4) Скачайте и распакуйте [архив](https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip). 5) Запустите `blockcheck\blockcheck.cmd`. `blockcheck` в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то первым делом нужно решить эту проблему, иначе ничего не будет работать. Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений к сторонним серверам - через специальные средства шифрования DNS запросов, такие как DNSCrypt, DoT, DoH. В современных броузерах чаще всего DoH включен по умолчанию, но `curl` будет использовать обычный системный DNS. Новые билды Windows 10 и Windows 11 поддерживают системные DoH из коробки. Они не настроены по умолчанию. [Тут](https://hackware.ru/?p=13707) все разжевано как и где это включается. 6) `blockcheck` позволяет выявить рабочую стратегию обхода блокировок. Лог скрипта будет сохранен в `blockcheck\blockcheck.log`. Запомните найденные стратегии. Следует понимать, что `blockcheck` проверяет доступность только конкретного домена, который вы вводите в начале. Вероятно, все остальные домены блокированы подобным образом, но не факт. В большинстве случаев можно объединить несколько стратегий в одну универсальную, но для этого необходимо понимать "что там за буковки". Если вы в сетях слабо разбираетесь, это не для вас. В противном случае читайте `readme.md`. `zapret` не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел. Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов с различной длиной по ХОПам, с DPI на разных хопах. Приходится преодолевать целый зоопарк DPI, которые еще и включаются в работу хаотичным образом или образом, зависящим от направления (IP сервера). `blockcheck` не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки. В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях. Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель `--dpi-desync-fooling`, чтобы не сломать сайты на более коротких дистанциях. `md5sig` наиболее совместим, но работает только на Linux серверах. `badseq` может работать только на HTTPS и не работать на HTTP. Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL с каждым из этих ограничителей. При использовании `autottl` следует протестировать как можно больше разных доменов. Эта техника может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах она стабильна, на третьих полный хаос, и проще отказаться. 7) Протестируйте найденные стратегии на `winws`. `winws` следует брать из `zapret-winws`. Для этого откройте командную строку Windows от имени администратора в директории `zapret-winws`. Проще всего это сделать через `_CMD_ADMIN.cmd`. Он сам поднимет права и зайдет в нужную директорию. 8) Обеспечьте удобную загрузку обхода блокировок. Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя. Последний вариант разделяется на запуск через планировщик задач и через службы Windows. Если хотите ручной запуск, скопируйте `preset_russia.cmd` в `preset_my.cmd` и адаптируйте его под ваши параметра запуска. Потом можно создать ярлык на рабочем столе на `preset_my.cmd`. Не забудьте, что требуется запускать от имени администратора. Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой. В `zapret-winws` есть командные файлы `task_*`, предназначенные для управления задачами планировщика. Там следует поменять содержимое переменной `WINWS1` на свою стратегию. Если вы не можете объединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из `.cmd` для поддержки нескольких задач: `winws1`, `winws2`, `winws3`. После создания задач запустите их. Проверьте, что обход встает после перезагрузки Windows. Аналогично настраиваются и службы Windows. Смотрите `service_*.cmd`. 9) Если ломаются отдельные незаблокированные ресурсы, используйте хост-листы. Где они будут находиться - решайте сами. Параметры управления хост-листами точно такие же, как в *nix. Это минимальная инструкция, чтобы сориентироваться с чего начать. Однако, это - не панацея. В некоторых случаях вы не обойдетесь без знаний и основного "талмуда". Подробности и полное техническое описание расписаны в `readme.md`.