|
|||||||
|
Как в Linux скачать файл через curl или wget в условиях блокировки РКН?
Время создания: 19.01.2026 12:05
Текстовые метки: linux, curl, wget, блокировка, файл, скачать, выкачать, 16Кб, 16 Кб, 16Kb, роскомнадзор, РКН
Раздел: Компьютер - Web / Internet - Отключение блокировок
Запись: xintrea/mytetra_syncro/master/base/1768813500gt2hwdej2k/text.html на raw.githubusercontent.com
|
|||||||
|
|
|||||||
|
Стало известно, что с января 2026 года РКН стал резать траффик для законно и незаконно заблокированных ресурсов новым методом: теперь от заблокированного ресурса пропускается пакеты объемом до 16Кб. Что такое незаконно заблокированные ресурсы? Это ресурсы, которые не нарушают законы Российской Федерации, но по неизвестным причинам включены в списки Роскомнадзора. Классический пример - это YouTube. Законного обоснования в блокировке этого ресурса нет (в отличие от WhatsUp), но блокировка YouTube происходит в РФ негласным образом. Делается это по двум причинам: 1. YouTube, как площадка, сама имеет возможность блокировать контент, и под политическую блокировку YouTube попали каналы государственных новостных агенств РФ. Так как YouTube - частная лавочка с зарубежной юрисдикцией, она сама может решать, что запрещать к показу на своем сервисе. Да, это неприятно, но законодательство РФ здесь не нарушается. Поэтому властями был взят курс на негласную встречную блокировку. 2. Блокировка осуществляется в корпоративных интересах частных компаний и сайтов, для которых YouTube является прямым конкурентом - RuTube, Vk Видео, Платформа. Помимо YouTube, под незаконную блокировку часто попадают сайты, которые находятся на хостинг-площадках, где располагаются и блокируемые сайты. Это происходит из-за блокировки больших диапазонов IP, которые захватывают и совершенно непричастные к нарушениям сайты. Пример такого сайта - сайт core.tcl.tk с GUI-библиотекой Tcl/Tk. Чем она помешала Роскомнадзору - совершенно непонятно.
* * * По вышеуказанным причинам, необходимо уметь получать заданный файл с сайта даже если сайт находится под блокировкой. Идея в том, что при ограничении на 16Кб, можно автоматически конструировать повторные Retry-запросы, в которых будет указано смещение позиции, с которой надо начать загрузку. Таким образом можно скачать файл по-частям, причем длинна кусков будет ограничена тем значением, которое установил Роскомнадзор (больше, чем дает РКН, кусок все равно не получится). Недостаток этого метода состоит в том, что не все веб-серверы настроены на возможность докачки файлов. Команда для выкачивания файла через curl выглядит следующим образом: curl -LOR -C - --retry 1000 --retry-delay 0.1 -y 1 -Y 1 <URL> Здесь опция -C обозначает докачку, а в опции --retry указывается число попыток. Этот метод будет работать не быстро, но файл должен в конце концов скачаться. По непроверенной информации данный метод может в любой момент перестать работать, так как РКН все время меняет механизм блокировки. Опция --retry не рвёт сессию, а лимит 16Kb РКН может применяеть ко всем попыткам вместе. Поэтому может сработать другой метод, с разрывом сессии на каждый скачиваемый кусок: while : ; do curl -LOR -C - --max-time 0.2 <URL> && break ; done Время --max-time нужно подбирать исходя из качества связи. При 0.1 curl может не успеваеть соединиться, а при 1, 2 и больше - будет большую часть времени простаивать, что неэффективно. При это иногда и при больших значениях curl тоже не успевает подключиться. То есть, время ожидания соединения надо подбирать. А можно использовать wget без цикла, вот так: wget --read-timeout=2 -c <URL> Этот вариант, в случае остановки скачивания, будет сам ждать 2 секунды, и запросит от сервера продолжение закачки. Вот как выглядит лог выкачивания GUI-библиотеки Tcl/Tk: > wget --read-timeout=2 -c https://core.tcl.tk/tcltls/uv/tcltls-1.7.22.tar.gz Распознаётся core.tcl.tk (core.tcl.tk)… 104.16.74.106, 104.16.75.106, 2606:4700::6810:4a6a, ... Подключение к core.tcl.tk (core.tcl.tk)|104.16.74.106|:443... соединение установлено. HTTP-запрос отправлен. Ожидание ответа… 302 Moved Temporarily Адрес: https://core.tcl-lang.org/tcltls/uv/tcltls-1.7.22.tar.gz [переход] --2026-01-19 12:30:08-- https://core.tcl-lang.org/tcltls/uv/tcltls-1.7.22.tar.gz Распознаётся core.tcl-lang.org (core.tcl-lang.org)… 104.19.243.68, 104.19.242.68, 2606:4700::6813:f244, ... Подключение к core.tcl-lang.org (core.tcl-lang.org)|104.19.243.68|:443... соединение установлено. HTTP-запрос отправлен. Ожидание ответа… 206 Partial Content Длина: 165206 (161K), 148037 (145K) осталось [application/x-gzip] Сохранение в: «tcltls-1.7.22.tar.gz» tcltls-1.7.22.tar.gz 20%[++++===> ] 32,79K --.-KB/s за 2,0s 2026-01-19 12:30:11 (8,01 KB/s) - Ошибка чтения, позиция 33575/165206 (Время ожидания соединения истекло). Повтор. --2026-01-19 12:30:12-- (попытка: 2) https://core.tcl-lang.org/tcltls/uv/tcltls-1.7.22.tar.gz Подключение к core.tcl-lang.org (core.tcl-lang.org)|104.19.243.68|:443... соединение установлено. HTTP-запрос отправлен. Ожидание ответа… 206 Partial Content Длина: 165206 (161K), 131631 (129K) осталось [application/x-gzip] Сохранение в: «tcltls-1.7.22.tar.gz» tcltls-1.7.22.tar.gz 31%[++++++++====> ] 50,86K --.-KB/s за 2,0s 2026-01-19 12:30:15 (9,03 KB/s) - Ошибка чтения, позиция 52080/165206 (Время ожидания соединения истекло). Повтор. --2026-01-19 12:30:17-- (попытка: 3) https://core.tcl-lang.org/tcltls/uv/tcltls-1.7.22.tar.gz Подключение к core.tcl-lang.org (core.tcl-lang.org)|104.19.243.68|:443... соединение установлено. ... Видно, что файл библиотеки медленно, но верно, выкачивается кусками по 16...18 Кб. |
|||||||
|
Так же в этом разделе:
|
|||||||
|
|||||||
|
|||||||
|