<div align="center">

# <img src="https://cdn-icons-png.flaticon.com/128/5968/5968756.png" height=28 /> <a href="https://github.com/Flowseal/">Flowseal</a><a href="https://github.com/Flowseal/zapret-discord-youtube">/zapret-discord-youtube</a> <img src="https://cdn-icons-png.flaticon.com/128/1384/1384060.png" height=28 />

**NEW**: Ускорение Telegram Desktop - https://github.com/Flowseal/tg-ws-proxy  
Альтернатива https://github.com/bol-van/zapret-win-bundle  
Также вы можете материально поддержать оригинального разработчика zapret [тут](https://github.com/bol-van/zapret?tab=readme-ov-file#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)
</div>

> [!CAUTION]
>
> ### ФЕЙКИ
> Я не веду никакие другие страницы/группы в телеграм/ютуб каналы  
> Если вы наткнулись на что-то вне этой страницы гитхаба, что распространяется от моего лица - **ФЕЙК**.

> [!WARNING]
>
> ### АНТИВИРУСЫ
> WinDivert может вызвать реакцию антивируса.
> WinDivert - это инструмент для перехвата и фильтрации трафика, необходимый для работы zapret.
> Он может использоваться как хорошими, так и плохими программами, но сам по себе не является вирусом.
>
> **Выдержка из [`readme.md`](https://github.com/bol-van/zapret-win-bundle/blob/master/readme.md#%D0%B0%D0%BD%D1%82%D0%B8%D0%B2%D0%B8%D1%80%D1%83%D1%81%D1%8B) репозитория [bol-van/zapret-win-bundle](https://github.com/bol-van/zapret-win-bundle)*
>
> Некоторые антивирусы склонны относить файлы WinDivert к классам повышенного риска или хакерским инструментам. Происходит удаление файла и помещение его в карантин. При этом детект обязательно имеет название `WinDivert` или `Not-a-virus:RiskTool.Multi.WinDivert`
>
> Добавьте папку с запретом в исключения антивируса, либо отключите детектирование PUA (потенциально нежелательных приложений). Например, в касперском есть галочка "Обнаруживать легальные приложения, которые злоумышленники часто используют для нанесения вреда". При аккуратной и правильной настройке исключений - рекомендуется настроить исключение, но если вы не до конца понимаете что делаете - рекомендуется отключить детект PUA.

> [!IMPORTANT]
> Все бинарные файлы в папке [`bin`](./bin) взяты из [zapret-win-bundle/zapret-winws](https://github.com/bol-van/zapret-win-bundle/tree/master/zapret-winws) и [zapret/releases](https://github.com/bol-van/zapret/releases). Вы можете это проверить с помощью хэшей/контрольных сумм. Проверяйте, что запускаете, используя сборки из интернета!

## ⚙️Использование

1. Включите Безопасный DNS (Secure DNS)
    * В Chrome - "Использовать безопасный DNS", и выбрать поставщика услуг DNS (выбрать вариант, отличный от варианта "Поставщик по умолчанию")
    * В Firefox - "DNS через HTTPS", выбрать режим "Персональный", затем "Выбрать провайдера/поставщика" и вписать URL поставщика вручную. Например, можно использовать `https://dns.google/dns-query` (т.к. поставщик Cloudflare может быть заблокирован)
    * В Windows 11 поддерживается включение Secure DNS прямо в настройках ОС - [инструкция тут](https://remontka.pro/dns-over-https-windows-11/). Рекомендуется, если вы пользуетесь Windows 11
    * Если у вас роутер Keenetic, включите в настройках роутера опцию "Транзит запросов". Отключение этой опции может привести к проблемам при настройке и использовании Secure DNS на компьютере

2. Скачайте архив (zip/rar) со [страницы последнего релиза](https://github.com/Flowseal/zapret-discord-youtube/releases/latest)

3. Зайдите в свойства скачанного архива и поставьте галочку "Разблокировать". Если вы используете архиватор 7-Zip или PeaZip, этот шаг можно пропустить

4. Распакуйте содержимое архива по пути, который не содержит кириллицу/спец. символы

5. Запустите нужный файл

## ℹ️Краткие описания файлов

- [**`general.bat ...`**](./general.bat) - запуск стратегии вручную

  Запуск вручную можно использовать для проверки работоспособности стратегий. Работоспособность той или иной стратегии зависит от многих факторов. **Пробуйте разные стратегии (ALT, FAKE и другие), пока не найдёте рабочее для вас решение**

- [**`service.bat`**](./service.bat) - установка в автозапуск и другие функции:
  - <ins>**`Install Service`** - установка любой стратегии в автозапуск (services.msc)</ins>
  - **`Remove Services`** - удаление стратегии и WinDivert из служб
  - **`Check Status`** - проверка статуса обхода и служб (стратегии на автозапуске и WinDivert)
  - **`Game Filter`** - переключение режима обхода для игр (и других сервисов, использующих UDP и TCP на портах выше 1023).  
  **После переключения требуется перезапуск стратегии.**  
  В скобках указан текущий статус (включено/выключено).
  - **`IPSet Filter`** - переключение режима обхода сервисов из `ipset-all.txt`.  
  Полезно при тестировании, если не работает ресурс, который без zapret работает  
  В скобках указан текущий статус:
    - `none` - никакие айпи не попадают под проверку
    - `loaded` - айпи проверяется на вхождение в список
    - `any` - любой айпи попадает под фильтр  
  - **`Auto-Update Check`** - Вкл/Выкл автоматическую проверку на обновления
  - **`Replace active fakes`** - Заменить указанный используемый фейк на другой из папки `bin`
  - **`Update IPSet List`** - обновление списка `ipset-all.txt` актуальным из репозитория
  - **`Update Hosts File`** - обновление файла hosts <ins>**для починки веб версии телеграма и подключения к голосовому чату Discord**</ins>
  - **`Check for Updates`** - проверка на обновления
  - **`Run Diagnostics`** - диагностика на распространённые причины, по которым zapret может не работать.  
  В конце можно очистить кэш <img src="https://cdn-icons-png.flaticon.com/128/5968/5968756.png" height=11 /> `Discord`, что может помочь, если он неожиданно перестал работать
  - **`Run Tests`** - запуск утилиты для проверки стратегий на работоспособность:
    - `Standard tests` - проверка сайтов из `utils/targets.txt`
    - `DPI checkers` - проверка DPI на различных провайдерах (Cloudflare, Amazon и др.)


## ☑️Распространенные вопросы и проблемы

### После запуска скрипта `general*` ничего не происходит

- После запуска стратегии (отдельным bat файлом, не через service), должен открыться winws.exe (обход), который можно увидеть в панели задач.  
Если этого не произошло, то см. [#522](https://github.com/Flowseal/zapret-discord-youtube/issues/522)

### Ни одна стратегия не подходит
- Запустите командную строку от имени администратора
- Последовательно введите команды в консоль:

    `netsh winsock reset`
  
    `netsh int ip reset all`
  
    `netsh winhttp reset proxy`
  
    `ipconfig /flushdns`
  
- Перезагрузите компьютер

### Не работает телеграм (веб версия) или бесконечное "подключение" к голосовому чату Discord
Запустите **`service.bat`**, выберите пункт **`Update hosts file`**. После чего, если ваш hosts будет неактуальным, то Вам будет предложено обновить его самостоятельно:  
  - Скопируйте весь текст из открывшегося блокнота
  - Откройте файл `hosts` в появившейся папке с помощью текстового редактора, открытого от имени администратора
  - Добавьте в конец файла `hosts` то, что скопировали (или замените, если до этого Вы уже добавляли подобное)
  - Сохраните и перепроверьте подключение. Если не работает - убедитесь, что файл `hosts` действительно сохранился.

### Обход не работает / перестал работать

> [!IMPORTANT]
> **Стратегии со временем могут переставать работать.**
> Определенная стратегия может работать какое-то время, но со временем она может переставать работать из-за обнаружения.
> В репозитории представлены множество различных стратегий для обхода. Если ни одна из них вам не помогает, то вам необходимо создать новую, взяв за основу одну из представленных здесь и изменив её параметры.
> Информацию про параметры стратегий вы можете найти [тут](https://github.com/bol-van/zapret/blob/master/docs/readme.md#nfqws).

- Проверьте, чтобы не было ошибок в `service.bat` -> `Run Diagnostics`

- Убедитесь, что адрес ресурса записан в списках доменов или IP

- Проверьте другие стратегии (**`ALT`**/**`FAKE`** и другие)

- Попробуйте полную переустановку (см. раздел ниже)

- См. [#765](https://github.com/Flowseal/zapret-discord-youtube/issues/765)

### Как переустановить/обновить полностью?
- Сохраните ресурсы/данные, которые вы сами добавляли
- Перезапустите устройство
- `service.bat` -> `Remove Services`
- `service.bat` -> `Run Diagnostics` (если есть ошибки - устраните их) -> в конце Y
- Удалите папку с запретом
- Скачайте последнюю версию [со страницы релизов](https://github.com/Flowseal/zapret-discord-youtube/releases) (`zapret-discord-youtube-...`)
- Нажмите пкм по архиву -> свойства. Если снизу справа есть галочка разблокировать, то нажмите на неё -> применить -> ОК
- Распакуйте в новую папку в корне диска (без спец. символов и пробелов)
- Далее пробуйте запускать различные `general` скрипты (стратегии). Проверьте доступность интернет ресурсов - если не работают, то закрывайте программу (в панели задач иконка замочка) и пробуйте другую стратегию
- Как найдёте рабочую стратегию, можете поставить её на автозапуск: `service.bat` -> `Install Service` -> выбираете нужную

### Не работает игра/приложение с включённым запретом

- Проверьте, что в service.bat `Game Filter` **`disabled`**, а `IPSet Filter` **`none`**. Иначе это может затронуть доступность ресурсов, которых вы не ожидали.

### Античит ругается на WinDivert

- Прочитайте инструкцию тут - https://github.com/bol-van/zapret-win-bundle/tree/master/windivert-hide

### Требуется цифровая подпись драйвера WinDivert (Windows 7)

- Замените файлы `WinDivert.dll` и `WinDivert64.sys` в папке [`bin`](./bin) на одноименные из [zapret-win-bundle/win7](https://github.com/bol-van/zapret-win-bundle/tree/master/win7)

### При удалении с помощью [**`service.bat`**](./service.bat), WinDivert остается в службах

1. Узнайте название службы с помощью команды, в командной строке Windows (Win+R, `cmd`):

```cmd
driverquery | find "Divert"
```

2. Остановите и удалите службу командами:

```cmd
sc stop название_из_первого_шага

sc delete название_из_первого_шага
```

### Не работает <img src="https://cdn-icons-png.flaticon.com/128/1384/1384060.png" height=18 /> YouTube

- Убедитесь что вы настроили [Secure DNS](#%EF%B8%8Fиспользование)
- Отключите блокировщик рекламы, известно что YouTube начал с ними бороться.
- Пробуйте все другие стратегии (если раньше работало, но перестало).
- См. также [#251](https://github.com/Flowseal/zapret-discord-youtube/discussions/251)

### Не работает <img src="https://cdn-icons-png.flaticon.com/128/5968/5968756.png" height=18 /> Discord

- Убедитесь что вы настроили [Secure DNS](#%EF%B8%8Fиспользование)
- Желательно сначала узнать, на какой стратегии открывается сайт YouTube. Запустите эту стратегию.
- Запустите `service.bat` -> `Run Diagnostics` и выполните там очистку кэша Discord.
- Проверьте приложение Discord. Помогла ли очистка кэша?
- Проверьте Discord в браузере: https://discord.com/app. В браузере работает? Если работает, то можете пользоваться в нём.
- Если Discord и в браузере не работает, то пробуйте ещё раз все стратегии. Бывает такое, что на одной стратегии YouTube работает, а Discord нет.
- См. также [#252](https://github.com/Flowseal/zapret-discord-youtube/discussions/252)

### Не работает <img src="https://cdn-icons-png.flaticon.com/128/5968/5968804.png" height=18 /> Telegram

- Используйте программу [tg-ws-proxy](https://github.com/Flowseal/tg-ws-proxy)
- Или используйте бесплатные MTProto прокси из интернета

### Не работают игры

Есть много разных игр. Исследовать и чинить каждую из них нет возможности.

Наиболее универсальный рецепт такой:
- через `service.bat` обновите ipset и включите `Game Filter`
- если это не поможет, то попробуйте также включить настройку `ipset any`

Но помните, что при включении `ipset any` появятся проблемы с открытием многих сайтов. Чтобы этого избежать, не используйте `ipset any` на постоянной основе. Вместо этого нужно выяснить все IP адреса, которые используются игрой, и добавить их в `ipset-all.txt`

Если и это не помогло, создайте ветку обсуждений в разделе [Discussions](https://github.com/Flowseal/zapret-discord-youtube/discussions) (не в issues) и ждите помощи от других игроков.

### Не нашли своей проблемы

- Создайте её [тут](https://github.com/Flowseal/zapret-discord-youtube/issues)

## 🗒️Добавление адресов прочих ресурсов

Список адресов для обхода можно расширить, добавляя их в:
- **`list-general-user.txt`** для доменов (поддомены автоматически учитываются)
- **`list-exclude-user.txt`** для исключения доменов (например, если айпи сети указан в `ipset-all.txt`, но конкретный домен из этой сети не надо фильтровать)
- **`ipset-all.txt`** для IP и подсетей
- **`ipset-exclude-user.txt`** для исключения IP и подсетей
  - Файлы **`*-user.txt`** автоматически создадутся при первом запуске `zapret` или `service.bat`

## ⭐Поддержка проекта

Вы можете поддержать проект, поставив :star: этому репозиторию (сверху справа этой страницы)

Также вы можете материально поддержать оригинального разработчика zapret [тут](https://github.com/bol-van/zapret?tab=readme-ov-file#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)

## ⚖️Лицензирование

Проект распространяется на условиях лицензии [MIT](https://github.com/Flowseal/zapret-discord-youtube/blob/main/LICENSE.txt)

## 🩷Благодарность участникам проекта

[![Contributors](https://contrib.rocks/image?repo=Flowseal/zapret-discord-youtube)](https://github.com/Flowseal/zapret-discord-youtube/graphs/contributors)

💖 Отдельная благодарность разработчику [zapret](https://github.com/bol-van/zapret) - [bol-van](https://github.com/bol-van)
