Skip to content

Instantly share code, notes, and snippets.

@kotsmotritnastul
Last active June 22, 2025 10:47
Show Gist options
  • Save kotsmotritnastul/3cf8296a14d02bb95961c093082f41c0 to your computer and use it in GitHub Desktop.
Save kotsmotritnastul/3cf8296a14d02bb95961c093082f41c0 to your computer and use it in GitHub Desktop.
памятка - zapret для домохозяек

мне выдали пермач в /s/ за то что рофлил над набросами лахты так что все вопросы задавайте в каментах, тред тамошний я больше не читаю потому что всё равно ничего написать не могу. молодец, политик, лидер и боец

ZAPRET - ПРОГРАММА КОТОРАЯ ПОЗВОЛЯЕТ ОБОЙТИ БЛОКИРОВКИ И ЗАМЕДЛЕНИЕ ЮТУБА НА ЛИНУКСЕ

КАК СКАЧАТЬ И УСТАНОВИТЬ ПРОГРАММУ

инструкция для пользователей федоры и убунты, люди которые пользуются арчем и дебианом в пошаговых инструкциях для домохозяек не нуждаются

sudo dnf install -y curl ipset dnsutils git jq строчка для федоры

sudo apt install -y curl ipset dnsutils git jq строчка для убунты

sudo pacman -S --needed curl ipset bind git jq строчка для манжары ВНИМАНИЕ У МЕНЯ НЕТ МАНЖАРЫ И МНЕ ЛЕНЬ СТАВИТЬ ЕЁ В ВИРТУАЛКУ НО ЛЮДИ УТВЕРЖДАЮТ ЧТО ЭТО ПРАВИЛЬНЫЙ АНАЛОГ ДЛЯ МАНЖАРЫ

Important

ЕСЛИ У ВАС OPENWRT ТО ВМЕСТО КОМАНД ВЫШЕ НАДО ВВЕСТИ ЭТИ

service zapret stop
opkg update
opkg install curl ipset git bind-dig git-http libcurl jq
cd /
mkdir opt
cd /opt
wget $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest  | jq -r '.assets[] | select(.name | contains ("openwrt")) | .browser_download_url') -O /opt/zapret-latest.tar.gz
tar -xvzf /opt/zapret-latest.tar.gz
rm -v /opt/zapret-latest.tar.gz
cp -vr /opt/zapret-v*/* /opt/zapret/
rm -rfv zapret-v*
cd /opt/zapret
./install_bin.sh
./install_prereq.sh

если у вас openwrt то я настоятельно советую сначала сделать возможность подключить флешку к роутеру как внешний носитель по официальной инструкции чтобы не трястись за каждый килобайт свободного места на роутере.

Note

КОНЕЦ КОМАНД ДЛЯ OPENWRT ЕСЛИ У ВАС ЕГО НЕТ ДАЛЬШЕ НАДО ВВЕСТИ

sudo apt-get update
sudo apt-get install jq -y
sudo dnf --assumeyes install jq
cd /opt
sudo wget $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest  | jq -r '.assets[]  | .browser_download_url' | grep zapret-v[0-9\.]*.tar.gz | head -n 1) -O /opt/zapret-latest.tar.gz
sudo tar -xvzf /opt/zapret-latest.tar.gz
sudo rm -v /opt/zapret-latest.tar.gz
sudo cp -vr /opt/zapret-v*/* /opt/zapret/
sudo rm -rfv zapret-v*
cd /opt/zapret
sudo ./install_bin.sh
sudo ./install_prereq.sh

это установит все пакеты и сделает предварительную настройку.

ГДЕ ВЗЯТЬ АДРЕС КЕШИРУЮЩЕГО СЕРВЕРА

адрес кеширующего сервера вы будете вставлять в блокчек чтобы найти способ обхода блокировки именно ютуба а не рутрекера (по умолчанию в скрипте блокчека стоит именно адрес рутрекера) инструкция на примере хромоподелий:

  1. тыкаете на страничке ютуба правой кнопкой -> инструменты разработчика -> инспектировать
  2. справа открывается панелька, вверху тыкайте на сеть
  3. пишите в фильтре googlevideo
  4. тыкайте на один из запросов
  5. справа будет виден полный адрес
  6. копируйте домен кеширующего сервера без https:// вот как это должно выглядеть - стрелками показал в каком порядке куда тыкать как получить адрес кеширующего сервера гугла теперь адрес можно вставлять в блокчек для поиска стратегии обхода блокировки ютуба - вставлять любой другой домен не поможет обойти блокировку ютуба, но поможет обойти блокировку того домена который вставлен в блокчек.

потом надо запустить в терминале блокчек - скрипт который подберёт методы обхода конкретно под ваш провайдер

/opt/zapret/blockcheck.sh

БЛОКЧЕК НАДО ЗАПУСКАТЬ ТОЛЬКО КОГДА ПРОГРАММА НЕ РАБОТАЕТ. ЕСЛИ ПРОГРАММА УЖЕ РАБОТАЕТ НАДО ПЕРЕД ЗАПУСКОМ БЛОКЧЕКА ВЫПОЛНИТЬ sudo systemctl stop zapret а на openwrt service zapret stop или /opt/zapret/uninstall_easy.sh

Блокчек будет спрашивать доступ к какому серверу будем тестировать (не надо указывать googlevideo.com потому что он даёт редирект который вызывает ложноe срабатывание блокчека, лучше вбить добытый по инструкции выше адрес кеширующего сервера гугла если надо обойти именно блокировку ютуба или оставить по дефолту рутрекер), количество повторений теста - тут я советую указать 2-3 повторения, это будет в разы медленней но зато не будет ложных срабатываний как если бы стратегия обхода блокировки была рабочая, а на самом деле это единичный сбой ТСПУ. Но у меня мелкий провайдер с посредственными айтишниками, может на крупных провайдерах ТСПУ не даёт сбоев и одного повторения достаточно.

Блокчек напишет какая стратегия обхода оптимальная, выглядеть это будет примерно так:

  • SUMMARY

ipv4 rr2---sn-4gxxqvh-8v1s.googlevideo.com curl_test_https_tls12 : nfqws --dpi-desync=split2
ipv4 rr2---sn-4gxxqvh-8v1s.googlevideo.com curl_test_http3 : nfqws -dpi-desync=fake,split2 —dpi-desync-ttl=3

значит при установке или переустановке запрета надо выбрать режим nfqws и в параметр NFQWS_OPT_DESYNC_HTTPS вставить --dpi-desync=split2а в параметр NFQWS_OPT_DESYNC_QUIC вставить -dpi-desync=fake,split2 —dpi-desync-ttl=3. у вас могут быть другие параметры, но делать надо примерно так же по аналогии - что советует блокчек в строке с curl_test_https_tls12 суём в NFQWS_OPT_DESYNC_HTTPS что советует блокчек в строке с curl_test_http3 суём в NFQWS_OPT_DESYNC_QUIC.

Note

ДЛЯ ТОГО ЧТОБЫ ТЕСТ ПРЕДЛАГАЮЩИЙ ПАРАМЕТРЫ ДЛЯ ОБХОДА ЗАМЕДЛЕНИЯ ЮТУБА ЗАРАБОТАЛ ВАМ МОЖЕТ ПОТРЕБОВАТЬСЯ CURL С ПОДДЕРЖКОЙ HTTP3/QUIC ЕГО МОЖНО СКАЧАТЬ ТУТ https://curl.se/download.html И СУНУТЬ В /USR/BIN НО СНАЧАЛА ПЕРЕИМЕНУЙТЕ СТАРЫЙ CURL ЧТОБЫ НЕ ПЕРЕЗАПИСАТЬ ЕГО И ВОССТАНОВИТЬ В СЛУЧАЕ ЧЕГО НО НА НОВЫХ ДИСТРИБУТИВАХ ЭТО МОЖЕТ БЫТЬ УЖЕ НЕ НУЖНО

КАК УСКОРИТЬ БЛОКЧЕК И НАЙТИ МАКСИМУМ РАБОЧИХ СТРАТЕГИЙ ОБХОДА

  1. открываете blockcheck.sh в текстовом редакторе
  2. находите там строчку вида [ "$SCANLEVEL" = quick ] && break
  3. меняете её на break
  4. запускаете блокчек, выбираете режим standard и несколько повторений
  5. теперь в режиме standard блокчек будет переходить к следующему тесту после первой же неудачи, поэтому даже если вы укажете 10 повторений теста это будет быстрее чем обычный standard но найдёт гарантированное рабочие стратегии обхода если они вообще в принципе могут быть.
  6. подробнее об ускорении блокчека можно почитать здесь.

затем надо выполнить

sudo /opt/zapret/install_easy.sh

скрипт может спросить что у вас - iptables или nftables. современные убунты и федоры насколько мне известно используют nftables. но если укажете неправильно - ничего страшного, запустите ещё раз install_easy.sh и укажете параметры по другому.

и при установке включить режим nfqws который посоветовал блокчек (или другой режим из списка если блокчек посоветовал другой), выглядеть этот список будет так:

enable tpws socks mode on port 987 ? (default : N) (Y/N) ?  

enable tpws transparent mode ? (default : N) (Y/N) ?                                                                  

enable nfqws ? (default : Y) (Y/N) ?                      

если блокчек посоветовал другой режим надо вбить другую циферку.

далее установщик спросит надо ли вам запускать с определёнными параметрами программу, выглядеть это будет так:

do you want to edit the options (default : N) (Y/N) ?

надо будет вбить Y и откроется файлик примерно такого вида

NFQWS_OPT=
"--filter-tcp=80 --dpi-desync=split --dpi-desync-ttl=7 --hostlist=/opt/zapret/lists/rest.txt --new
--filter-tcp=443 --dpi-desync=fake,split2 --dpi-desync-ttl=7 --hostlist=/opt/zapret/lists/rest.txt --new
--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=10 --hostlist=/opt/zapret/lists/discord.txt --new
--filter-tcp=443 --dpi-desync=split --dpi-desync-fooling=badseq --wssize 1:6 --hostlist=/opt/zapret/lists/yt.txt --new
--filter-tcp=443 --dpi-desync=fake --dpi-desync-ttl=2 --hostlist=/opt/zapret/lists/discord.txt --new
--filter-tcp=443 --dpi-desync=fake --dpi-desync-ttl=2"

как это работает - --filter-tcp=80 это к какому протоколу и порту будут применяться параметры обхода, --hostlist= это путь к хостлисту в котором перечислены домены (хостлист это текстовый файл в котором указываете домены в столбик по одному на строчку) к которым будут применяться параметры обхода, а между ними надо вставить те параметры обхода которые предложит блокчек.

Note

НА ВСЯКИЙ СЛУЧАЙ ЧТО ТАКОЕ "СОХРАНИТЬ И ВЫЙТИ" параметры вы будете вбивать в редакторе nano когда вобьёте нажимаете CTRL+X потом Y потом ENTER. я это добавил потому что такой вопрос уже был.

остальные опции мне менять не потребовалось, просто тыкал enter. вообще не бойтесь тыкать энтер во всех случаях кроме того когда спрашивают про выбор режима (который SELECT MODE выше) и про выбор параметров обхода (их должен подобрать блокчек и они у каждого провайдера свои), во всех остальных случаях запрет имеет такие настройки которые почти всем подойдут, а если напортачите при настройке то можно будет заново запустить install_easy.sh и заново всё настроить.

КАК СДЕЛАТЬ ТАК ЧТОБЫ ЗАРАБОТАЛ ДИСКОРД ВКЛЮЧАЯ ЗВОНКИ ЧЕРЕЗ ДИСКОРД

для пк

sudo cp /opt/zapret/init.d/openwrt/custom.d.examples/50-discord /opt/zapret/init.d/openwrt/custom.d

для опенврт

cp /opt/zapret/init.d/openwrt/custom.d.examples/50-discord /opt/zapret/init.d/openwrt/custom.d

и потом перезапускаем запрет через

/opt/zapret/install_easy.sh

или

service zapret restart

(для опенврт) или

sudo systemctl restart zapret

(для пк).

КАК ЗАПУСТИТЬ/ОСТАНОВИТЬ ПРОГРАММУ ВРУЧНУЮ ЧТОБЫ ЗАНОВО ЗАПУСТИТЬ БЛОКЧЕК?

start : sudo systemctl start zapret
stop : sudo systemctl stop zapret

КАК ДОБАВИТЬ/УДАЛИТЬ ЕЁ ИЗ АВТОЗАГРУЗКИ

enable auto start : sudo systemctl enable zapret
disable auto start : sudo systemctl disable zapret

КАК ОБНОВИТЬ ПРОГРАММУ

cd /opt
sudo wget $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest  | \
 jq -r '.assets[] | select(.name | contains ("tar.gz")) | .browser_download_url')
sudo tar -xvzf zapret*.tar.gz
sudo rm zapret-v*.tar.gz
sudo mv -f zapret-v* zapret
cd /opt/zapret

но можно просто скачать руками из https://github.com/bol-van/zapret/releases/latest

КАК ОБНОВИТЬ ГИТ

cd /opt/zapret
sudo git checkout master
sudo git fetch --all
sudo git reset --hard
sudo git pull

ПРОЧИЕ ПОЛЕЗНЫЕ КОМАНДЫ

status, output messages : sudo systemctl status zapret
timer info : sudo systemctl list-timer
delete service : sudo systemctl disable zapret ; sudo rm /lib/systemd/system/zapret.service
delete timer : sudo systemctl disable zapret-list-update.timer ; sudo rm /lib/systemd/system/zapret-list-update./*

СЛОЖНОЕ

как скомпилировать из исходников самый свежак из гитхаба? сначала надо установить пакеты которые могут пригодиться

kde deb12.8
sudo apt install git python3-distutils ncurses-dev gawk wget libcap-dev

kubuntu22.04
sudo apt install git make build-essential unzip libncurses-dev

fedora41
sudo dnf install git perl patch ncurses-devel libcap-devel

затем можно следовать инструкции но надо понимать что там указан SDK для openwrt 23.5.5 а у вас может быть другая, например я использую такую команду

curl -o - https://downloads.openwrt.org/releases/23.05.4/targets/x86/64/openwrt-sdk-23.05.4-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz | tar -Jxvf -
cd openwrt-sdk-23.05.4-x86-64_gcc-12.3.0_musl.Linux-x86_64

а в остальном то же самое

curl -o - https://downloads.openwrt.org/releases/23.05.4/targets/x86/64/openwrt-sdk-23.05.4-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz | tar -Jxvf -
cd openwrt-sdk-23.05.4-x86-64_gcc-12.3.0_musl.Linux-x86_64
./scripts/feeds update base packages
./scripts/feeds install libnetfilter-queue zlib libcap
cp -R /opt/zapret/docs/compile/openwrt/. .
cp -R /opt/zapret/tpws package/zapret/tpws
cp -R /opt/zapret/nfq package/zapret/nfqws
cp -R /opt/zapret/mdig package/zapret/mdig
cp -R /opt/zapret/ip2net package/zapret/ip2net
rm -f package/zapret/tpws/tpws/tpws package/zapret/nfqws/nfq/nfqws package/zapret/mdig/mdig/mdig package/zapret/ip2net/ip2net/ip2net
make package/{tpws,nfqws,mdig,ip2net}/compile
ls -l bin/packages/*/base

последняя команда покажет есть ли скомпилированные ipk/apk файлы или нет. если нет значит что-то пошло не так и надо читать какие ошибки пишет компилятор. если они там есть значит надо их закинуть в роутер (mc очень удобно перекидывать файлы через ssh) и установить в опенврт роутера, а потом запустить скрипт install_easy.sh и он установит свежайшую версию запрета прямо из гита.

ОБРАТНАЯ СВЯЗЬ

если есть вопрос или нашли ошибку/опечатку - можно прям в каменты написать, но тут нет уведомлений о них так что я их прочитаю когда зайду прям сюда по ссылке.

@ah1102
Copy link

ah1102 commented Nov 27, 2024

На openwrt по этой команде какая-то ерунда скачивается вида абракадабра. Архивом даже не пахнет.

wget $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | jq -r '.assets[] | select(.name | contains ("openwrt")) | .browser_download_url')

@kotsmotritnastul
Copy link
Author

на опенврт придётся поставить пакет jq через opkg update && opkg install jq ну или просто руками сунуть в wget готовый адрес новейшего релиза запрета (тот у которого есть openwrt в имени).

эту команду я добавил чтобы люди с пакетом jq могли не заморачиваться и одной копипастной командой скачать новейший архив даже не узнавая самостоятельно какая там версия и прочее.

@ah1102
Copy link

ah1102 commented Nov 30, 2024

на опенврт придётся поставить пакет jq через opkg update && opkg install jq ну или просто руками сунуть в wget готовый адрес новейшего релиза запрета (тот у которого есть openwrt в имени).

эту команду я добавил чтобы люди с пакетом jq могли не заморачиваться и одной копипастной командой скачать новейший архив даже не узнавая самостоятельно какая там версия и прочее.

Пакет jq у меня стоит. Скачал напрямую такой командой curl -L -O -k https://github.com/bol-van/zapret/releases/download/v69.3/zapret-v69.3-openwrt-embedded.tar.gz . Но хотелось бы чтобы указанный вами скрипт работал.

@ah1102
Copy link

ah1102 commented Nov 30, 2024

Снимок экрана 2024-11-30 в 21 22 20

Не смог разобраться, как на openwrt установить CURL С ПОДДЕРЖКОЙ HTTP3/QUIC отсюда https://curl.se/download.html . Там нужны еще и какие-то библиотеки к curl которых нет в официальном репозитории. Поэтому нашел какой-то гитхаб через поисковик с curl поддерживающим quic/http3 https://github.com/sbwml/openwrt-curl-prebuilt . Скачал из релизов curl для моего устройства. В данном случае пакет с именем arm_cortex-a7_neon-vfpv4. Распаковал на компьютере скаченный zip файл. Удалил через вебморду openwrt установленный curl. Через вебморду и кнопку с действием upload package последовательно установил все пакеты из распакованной zip папки. Некоторые пакеты без других выдают ошибку при установке, поэтому если не ставится. то переходить к следующему, а потом возвращаться к прошлому.

@ah1102
Copy link

ah1102 commented Dec 3, 2024

на опенврт придётся поставить пакет jq через opkg update && opkg install jq ну или просто руками сунуть в wget готовый адрес новейшего релиза запрета (тот у которого есть openwrt в имени).

эту команду я добавил чтобы люди с пакетом jq могли не заморачиваться и одной копипастной командой скачать новейший архив даже не узнавая самостоятельно какая там версия и прочее.

Посмотрел, что выдает команда убрав из нее wget. И она получает два url для скачивания. В чем наверное и может быть проблема.

curl -s https://api.github.com/repos/bol-van/zapret/releases/lat
est | jq -r '.assets[] | select(.name | contains ("tar.gz")) | .browser_download
_url'

https://github.com/bol-van/zapret/releases/download/v69.5/zapret-v69.5-openwrt-embedded.tar.gz
https://github.com/bol-van/zapret/releases/download/v69.5/zapret-v69.5.tar.gz

И даже используя такую команду, чтобы получать одну ссылку на файл, это не исправляет ситуации.

wget $(curl -s https://api.github.com/repos/bol-van/zapret/re
leases/latest | jq -r '.assets[] | select(.name | contains("tar.gz") and contain
s("openwrt")) | .browser_download_url')

Это может быть связано с тем, что wget не может правильно определить имя файла из URL. Это часто происходит, когда сервер не отправляет заголовок Content-Disposition, который указывает имя файла. И остается только такая команда, которая принудительно указывает имя и расширение файла:

wget -O zapret_openwrt_latest.tar.gz $(curl -s https://api.gi
thub.com/repos/bol-van/zapret/releases/latest | jq -r '.assets[] | select(.name 
| contains("tar.gz") and contains("openwrt")) | .browser_download_url')

@sin2044
Copy link

sin2044 commented Dec 5, 2024

Товарищи, разрешите глупый вопрос, как удалить из папки tmp папки после распаковки архива с запретом, а то уже 2 образовалось с двух разных версий?

@kotsmotritnastul
Copy link
Author

на опенврт придётся поставить пакет jq через opkg update && opkg install jq ну или просто руками сунуть в wget готовый адрес новейшего релиза запрета (тот у которого есть openwrt в имени).
эту команду я добавил чтобы люди с пакетом jq могли не заморачиваться и одной копипастной командой скачать новейший архив даже не узнавая самостоятельно какая там версия и прочее.

Пакет jq у меня стоит. Скачал напрямую такой командой curl -L -O -k https://github.com/bol-van/zapret/releases/download/v69.3/zapret-v69.3-openwrt-embedded.tar.gz . Но хотелось бы чтобы указанный вами скрипт работал.

ну можно и так если не работает автоматическое определение самого нового релиза. вообще я сейчас проверил команду wget $(curl -s https://api.github.com/repos/bol-van/zapret/releases/latest | jq -r '.assets[] | select(.name | contains ("openwrt")) | .browser_download_url') и всё работает - нашлась именно версия для опенврт и скачалась как архив. я не знаю почему у вас не работает.

@kotsmotritnastul
Copy link
Author

Товарищи, разрешите глупый вопрос, как удалить из папки tmp папки после распаковки архива с запретом, а то уже 2 образовалось с двух разных версий?

если я правильно понял вопрос то rm -rf zapret-v*

@kotsmotritnastul
Copy link
Author

Не смог разобраться, как на openwrt установить CURL С ПОДДЕРЖКОЙ HTTP3/QUIC отсюда https://curl.se/download.html . Там нужны еще и какие-то библиотеки к curl которых нет в официальном репозитории. Поэтому нашел какой-то гитхаб через поисковик с curl поддерживающим quic/http3 https://github.com/sbwml/openwrt-curl-prebuilt . Скачал из релизов curl для моего устройства. В данном случае пакет с именем arm_cortex-a7_neon-vfpv4. Распаковал на компьютере скаченный zip файл. Удалил через вебморду openwrt установленный curl. Через вебморду и кнопку с действием upload package последовательно установил все пакеты из распакованной zip папки. Некоторые пакеты без других выдают ошибку при установке, поэтому если не ставится. то переходить к следующему, а потом возвращаться к прошлому.

может быть архитектура не та. может ещё что-то. я честно говоря просто сделал бекап старого курла, скачал голый бинарник и посадил его в /usr/bin и всё заработало, никаких отдельных библиотек не потребовалось. но установленный курл я ни через вебморду ни через opkg не удалял.

@Jekyns
Copy link

Jekyns commented Dec 16, 2024

Не смог разобраться, как на openwrt установить CURL С ПОДДЕРЖКОЙ HTTP3/QUIC отсюда https://curl.se/download.html . Там нужны еще и какие-то библиотеки к curl которых нет в официальном репозитории. Поэтому нашел какой-то гитхаб через поисковик с curl поддерживающим quic/http3 https://github.com/sbwml/openwrt-curl-prebuilt . Скачал из релизов curl для моего устройства. В данном случае пакет с именем arm_cortex-a7_neon-vfpv4. Распаковал на компьютере скаченный zip файл. Удалил через вебморду openwrt установленный curl. Через вебморду и кнопку с действием upload package последовательно установил все пакеты из распакованной zip папки. Некоторые пакеты без других выдают ошибку при установке, поэтому если не ставится. то переходить к следующему, а потом возвращаться к прошлому.

может быть архитектура не та. может ещё что-то. я честно говоря просто сделал бекап старого курла, скачал голый бинарник и посадил его в /usr/bin и всё заработало, никаких отдельных библиотек не потребовалось. но установленный курл я ни через вебморду ни через opkg не удалял.

Откуда вы скачали голый бинарник? По ссылке которую вы привели нет никакого бинарника, только сорсы для билда

@kotsmotritnastul
Copy link
Author

Откуда вы скачали голый бинарник? По ссылке которую вы привели нет никакого бинарника, только сорсы для билда

я уже не помню точно но вроде тут было.

@sensei-00
Copy link

Ууии все норм, но пляски с бубном насчет OPENWRT не осилил.

@sensei-00
Copy link

после сноса ОС и накотив занова перестало все робить просто не могу накатить даже пляски сбубнов и вбубен непомогают простов се сносит у меня убунту.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment