2026-08-03 19:01:19 +03:00
2026-07-19 13:34:50 +03:00
2026-08-03 19:01:19 +03:00
2026-08-03 19:01:19 +03:00

Yandex Disk Protected Folder Downloader

Скрипт для рекурсивного скачивания большой публичной папки Яндекс Диска, защищённой паролем.

Скрипт использует cookie passToken, скачивает каждый файл отдельно и не пытается сформировать единый ZIP-архив.

Возможности

  • скачивание защищённой публичной папки;
  • рекурсивный обход вложенных каталогов;
  • сохранение исходной структуры папок;
  • скачивание файлов по одному;
  • продолжение прерванной загрузки через wget --continue;
  • автоматический пропуск полностью скачанных файлов;
  • проверка размера скачанного файла;
  • автоматическая пагинация списка файлов;
  • остановка при появлении CAPTCHA;
  • сохранение ссылки CAPTCHA в текстовый файл;
  • паузы между запросами для снижения вероятности блокировки;
  • повторный запуск без потери уже скачанных данных.

Требования

Поддерживается Linux с Python 3.

Необходимые пакеты:

sudo apt install -y python3 python3-requests wget

Настройка

Все основные параметры находятся в начале файла:

TARGET_URL = (
    "https://disk.yandex.ru/d/"
    "cWn4RgSdFcSZXw/ODIS/Flashdaten/Brand-V"
)

PASS_TOKEN = ""

OUTPUT_DIR = "/mnt/hdd1-4TB/ODIS/Flashdaten/Brand-V"

TARGET_URL

Полная ссылка на скачиваемую папку Яндекс Диска:

TARGET_URL = "https://disk.yandex.ru/d/cWn4RgSdFcSZXw/ODIS/Flashdaten/Brand-V"

PASS_TOKEN

Значение cookie passToken, полученное после ввода пароля в браузере.

Можно указать только значение:

PASS_TOKEN = "значение_cookie_passToken"

OUTPUT_DIR

Каталог, куда будут сохранены файлы:

OUTPUT_DIR = "/mnt/hdd1-4TB/ODIS/Flashdaten/Brand-V"

Каталог будет создан автоматически, если у пользователя есть права на его создание.

Пример вывода

[INFO] Открываю исходную ссылку...
[INFO] Папка открыта.
[INFO] Корневой hash: public_hash:

[DIR ] /mnt/hdd1-4TB/ODIS/Flashdaten/Brand-V
[GET ] /mnt/hdd1-4TB/ODIS/Flashdaten/Brand-V/038997016C__7000.sgo (1.75 MiB)
[WAIT] 2.4 с перед запросом ссылки
2026-07-19 URL:https://downloader.disk.yandex.ru/... [1835008/1835008]
[PAGE] получено=41, следующий offset=41, completed=False
[WAIT] 4.2 с перед следующей страницей

После завершения выводится статистика:

================ РЕЗУЛЬТАТ ================
Найдено файлов:       4500
Скачано сейчас:       250
Уже было скачано:     4250
Ошибок:               0
Известный общий объём: 115.40 GiB
===========================================

CAPTCHA

При большом количестве запросов Яндекс может вернуть CAPTCHA.

Скрипт распознаёт ответ:

{
  "type": "captcha"
}

После этого загрузка немедленно прекращается.

Будет выведена ссылка:

ЯНДЕКС ПОТРЕБОВАЛ CAPTCHA

Открой ссылку ниже в обычном браузере с того же внешнего IP:

https://disk.yandex.ru/showcaptcha?...

Ссылка также сохраняется в файл:

/mnt/hdd1-4TB/ODIS/Flashdaten/Brand-V/yandex-captcha-url.txt

Настройка задержек

FILE_DELAY_MIN и FILE_DELAY_MAX

Случайная задержка перед запросом прямой ссылки на каждый файл:

FILE_DELAY_MIN = 1.5
FILE_DELAY_MAX = 3.5

Скрипт будет ждать от 1.5 до 3.5 секунды перед каждым запросом download-url.

PAGE_DELAY_MIN и PAGE_DELAY_MAX

Задержка между страницами списка файлов:

PAGE_DELAY_MIN = 3.0
PAGE_DELAY_MAX = 6.0

COOLDOWN_EVERY_FILES

Количество запросов файлов, после которого выполняется длинная пауза:

COOLDOWN_EVERY_FILES = 100

При значении 100 длинная пауза выполняется после каждых 100 запросов.

COOLDOWN_MIN и COOLDOWN_MAX

Диапазон длительной паузы:

COOLDOWN_MIN = 60.0
COOLDOWN_MAX = 120.0

После каждых 100 запросов скрипт будет ждать от 60 до 120 секунд.

Коды завершения

Скрипт использует следующие коды выхода:

Код Значение
0 загрузка завершена без ошибок
1 загрузка завершена с ошибками
2 ошибка конфигурации или отсутствует wget
75 Яндекс потребовал CAPTCHA
130 процесс остановлен через Ctrl+C

Проверить код после завершения:

echo $?
S
Description
yandex_disk_folder_downloader downloads a very big folders that couldn`t be downloaded due yandex limitations
Readme
88 KiB
Languages
Python 100%