Last active
November 5, 2025 08:43
-
-
Save kotsmotritnastul/989b0cc025abdd9c58fb149d4e8c0d29 to your computer and use it in GitHub Desktop.
как найти новую стратегию для обхода блокировки ютуба одним скриптом
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # как этот скрипт будет работать: | |
| # у вас уже должен быть настроенный свежий запрет | |
| # там уже должен быть хотя бы раз настроен обход блокировок ютуба | |
| # это значит что в конфиге должна быть строка вида --filter-tcp=443 РАБОЧАЯ_СТРАТЕГИЯ --hostlist=/opt/zapret/lists/yt.txt --new | |
| # файл /opt/zapret/lists/yt.txt это файл в котором перечислены домены ютуба то есть youtube.com и googlevideo.com | |
| # скрипт автоматизирует поиск новой стратегии в случае если ютуб уже настроен и если вы сунете файл скрипта в кронтаб | |
| # но можно его и руками запускать чтобы не делать всё руками | |
| mkdir -p /opt/zapret/lists | |
| printf "ggpht.cn\nggpht.com\ngooglevideo.com\nwide-youtube.l.google.com\nwithyoutube.com\nyoutu.be\nyoutube-nocookie.com\nyoutube-ui.l.google.com\nyoutube.ae\nyoutube.al\nyoutube.am\nyoutube.at\nyoutube.az\nyoutube.ba\nyoutube.be\nyoutube.bg\nyoutube.bh\nyoutube.bo\nyoutube.by\nyoutube.ca\nyoutube.cat\nyoutube.ch\nyoutube.cl\nyoutube.co\nyoutube.co.ae\nyoutube.co.at\nyoutube.co.cr\nyoutube.co.hu\nyoutube.co.id\nyoutube.co.il\nyoutube.co.in\nyoutube.co.jp\nyoutube.co.ke\nyoutube.co.kr\nyoutube.co.ma\nyoutube.co.nz\nyoutube.co.th\nyoutube.co.tz\nyoutube.co.ug\nyoutube.co.uk\nyoutube.co.ve\nyoutube.co.za\nyoutube.co.zw\nyoutube.com\nyoutube.com.ar\nyoutube.com.au\nyoutube.com.az\nyoutube.com.bd\nyoutube.com.bh\nyoutube.com.bo\nyoutube.com.br\nyoutube.com.by\nyoutube.com.co\nyoutube.com.do\nyoutube.com.ec\nyoutube.com.ee\nyoutube.com.eg\nyoutube.com.es\nyoutube.com.gh\nyoutube.com.gr\nyoutube.com.gt\nyoutube.com.hk\nyoutube.com.hn\nyoutube.com.hr\nyoutube.com.jm\nyoutube.com.jo\nyoutube.com.kw\nyoutube.com.lb\nyoutube.com.lv\nyoutube.com.ly\nyoutube.com.mk\nyoutube.com.mt\nyoutube.com.mx\nyoutube.com.my\nyoutube.com.ng\nyoutube.com.ni\nyoutube.com.om\nyoutube.com.pa\nyoutube.com.pe\nyoutube.com.ph\nyoutube.com.pk\nyoutube.com.pt\nyoutube.com.py\nyoutube.com.qa\nyoutube.com.ro\nyoutube.com.sa\nyoutube.com.sg\nyoutube.com.sv\nyoutube.com.tn\nyoutube.com.tr\nyoutube.com.tw\nyoutube.com.ua\nyoutube.com.uy\nyoutube.com.ve\nyoutube.cr\nyoutube.cz\nyoutube.de\nyoutube.dk\nyoutube.ee\nyoutube.es\nyoutube.fi\nyoutube.fr\nyoutube.ge\nyoutube.googleapis.com\nyoutube.gr\nyoutube.gt\nyoutube.hk\nyoutube.hr\nyoutube.hu\nyoutube.ie\nyoutube.in\nyoutube.iq\nyoutube.is\nyoutube.it\nyoutube.jo\nyoutube.jp\nyoutube.kr\nyoutube.kz\nyoutube.la\nyoutube.lk\nyoutube.lt\nyoutube.lu\nyoutube.lv\nyoutube.ly\nyoutube.ma\nyoutube.md\nyoutube.me\nyoutube.mk\nyoutube.mn\nyoutube.mx\nyoutube.my\nyoutube.ng\nyoutube.ni\nyoutube.nl\nyoutube.no\nyoutube.pa\nyoutube.pe\nyoutube.ph\nyoutube.pk\nyoutube.pl\nyoutube.pr\nyoutube.pt\nyoutube.qa\nyoutube.ro\nyoutube.rs\nyoutube.ru\nyoutube.sa\nyoutube.se\nyoutube.sg\nyoutube.si\nyoutube.sk\nyoutube.sn\nyoutube.soy\nyoutube.sv\nyoutube.tn\nyoutube.tv\nyoutube.ua\nyoutube.ug\nyoutube.uy\nyoutube.vn\nyoutubeeducation.com\nyoutubeembeddedplayer.googleapis.com\nyoutubefanfest.com\nyoutubegaming.com\nyoutubego.co.id\nyoutubego.co.in\nyoutubego.com\nyoutubego.com.br\nyoutubego.id\nyoutubego.in\nyoutubei.googleapis.com\nyoutubekids.com\nyoutubemobilesupport.com\nyt.be\nytimg.com" | tee /opt/zapret/lists/yt.txt | |
| main() | |
| { | |
| uznaem_na_kakoi_sisteme_rabotaem | |
| poluchaem_adres_google_global_cache_servera_i_prisvaivaem_v_peremennuyu | |
| vykluchaem_zapret | |
| pishem_vyvod_blockchecka_v_file_blockcheck_output | |
| ischem_v_blockcheck_output_stroku_so_strategiei_obhoda_i_prisvaivaem_v_peremennuyu | |
| suem_stroku_s_rabochei_strategiei_v_config_zapreta | |
| vkluchaem_zapret | |
| } | |
| uznaem_na_kakoi_sisteme_rabotaem() | |
| { | |
| os_id=$(awk 'BEGIN {FS = "="} /^ID=/ {gsub("\"",""); print $2}' /etc/os-release) | |
| } | |
| delaem_backup_configa_zapreta() | |
| { | |
| cp -v /opt/zapret/config /opt/zapret/config_"$(date +%s)" | |
| } | |
| suem_stroku_s_rabochei_strategiei_v_config_zapreta() | |
| { | |
| delaem_backup_configa_zapreta | |
| #выравниваем конфиг чтобы каждая стратегия была новой строкой | |
| sed -i -e 's/--new /--new\n/g' /opt/zapret/config | |
| #вставляем рабочую стратегию между --filter-tcp=443 и --hostlist=/opt/zapret/lists/yt.txt | |
| awk -v rabochaya_strategiya_awk="$rabochaya_strategiya" '$0 !~ /yt.txt/ { print } /yt.txt/ { print $1 " " rabochaya_strategiya_awk " " $(NF-1) " " $NF }' /opt/zapret/config > /opt/zapret/config_temp | |
| cp -rfv /opt/zapret/config_temp /opt/zapret/config | |
| } | |
| ischem_v_blockcheck_output_stroku_so_strategiei_obhoda_i_prisvaivaem_v_peremennuyu() | |
| { | |
| unset rabochaya_strategiya | |
| rabochaya_strategiya=$(awk '/SUMMARY/{getline; print}' /tmp/test/blockcheck_output.txt | awk 'NR==1{for (i=6; i<=NF; i++) print $i}' | awk -v RS= '{$1=$1}1') | |
| echo "$rabochaya_strategiya" | |
| #проверяем не пустая ли строка со стратегией обхода | |
| if [ -z "${rabochaya_strategiya}" ] | |
| then | |
| echo "переменная rabochaya_strategiya пустая, что-то не то, выходим из скрипта. | |
| возможно вы забыли отключить запрет и ютуб для блокчека выглядит незаблокированным | |
| поэтому никакой стратегии он искать не стал" | |
| exit 1 | |
| else | |
| echo "рабочая стратегия для обхода -> $rabochaya_strategiya" | |
| fi | |
| } | |
| poluchaem_adres_google_global_cache_servera_i_prisvaivaem_v_peremennuyu() | |
| { | |
| unset GGC_ADDRESS | |
| GGC_ADDRESS=$(curl -x socks5://127.0.0.1:9050 --connect-timeout 15 -s "https://www.youtube.com/watch?v=eZD5z7MTvJY" | awk 'BEGIN { | |
| RS="\\/" | |
| i=0 | |
| } | |
| $1 ~ /googlevideo.com/ { | |
| array[$i]=sprintf( $0 ) | |
| i++ | |
| } | |
| END { | |
| print array[$i] | |
| } | |
| ') | |
| if [ -z "${GGC_ADDRESS}" ] | |
| then | |
| echo "переменная GGC_ADDRESS пустая, что-то не то, выходим из скрипта. | |
| скорее всего прокси указанный для curl недоступен (там по умолчанию локальный тор) | |
| придется руками отредактировать скрипт и вставить туда рабочий прокси | |
| а может вообще какие-то проблемы с интернетом" | |
| exit 1 | |
| else | |
| echo "GGC -> $GGC_ADDRESS" | |
| fi | |
| } | |
| vykluchaem_zapret() | |
| { | |
| case $os_id in | |
| Deepin|debian|ubuntu|zorin|linuxmint|manjaro|almalinux|rocky|rhel|fedora|nobara) | |
| systemctl stop zapret | |
| ;; | |
| openwrt) | |
| service zapret stop | |
| ;; | |
| *) | |
| chto_to_ne_to_vyhodim | |
| ;; | |
| esac | |
| } | |
| vkluchaem_zapret() | |
| { | |
| case $os_id in | |
| Deepin|debian|ubuntu|zorin|linuxmint|manjaro|almalinux|rocky|rhel|fedora|nobara) | |
| systemctl stop restart | |
| ;; | |
| openwrt) | |
| service zapret restart | |
| ;; | |
| *) | |
| chto_to_ne_to_vyhodim | |
| ;; | |
| esac | |
| } | |
| chto_to_ne_to_vyhodim() | |
| { | |
| echo "похоже у вас какой-то обскурный дистр. если так то вы большой любитель пердолиться. перепишите этот скрипт под свой sysvinit/runit или что у вас там а то мне лень тестировать скрипт под все системы управления службами." | |
| countdown=5 | |
| while [ "${countdown}" -le 0 ] | |
| do | |
| printf "%s...\n" "$countdown" | |
| sleep 1 | |
| countdown=$((countdown - 1)) | |
| done | |
| exit 1 | |
| } | |
| pishem_vyvod_blockchecka_v_file_blockcheck_output () | |
| { | |
| vykluchaem_zapret | |
| rm /tmp/blockcheck_output.txt | |
| unset DOMAINS | |
| rm -v /tmp/blockcheck_output.txt | |
| DOMAINS=$GGC_ADDRESS \ | |
| IPVS=4 \ | |
| ENABLE_HTTP=0 \ | |
| ENABLE_HTTPS_TLS12=1 \ | |
| BATCH=1 \ | |
| ENABLE_HTTPS_TLS13=0 \ | |
| ENABLE_HTTP3=0 \ | |
| REPEATS=10 \ | |
| PARALLEL=1 \ | |
| SKIP_TPWS=1 \ | |
| SCANLEVEL=quick \ | |
| /opt/zapret/blockcheck.sh | tee /tmp/blockcheck_output.txt | |
| } | |
| main "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment