Задать вопрос

YoutubeDL (yt_dlp) и массовые прокси, кто как подключает список с проксями?

Задолбал ютуб, просить, чтобы я там куки подключил, пытался сделать, подключал автоматическую генерацию куков, добавлял в yt_dlp пакет playwright, но все равно вылезала ошибка.

Ошибка:
ERROR: [youtube] rI01giC57s0: Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication. See  https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp  for how to manually pass cookies. Also see  https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies  for tips on effectively exporting YouTube cookies


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

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

67951b1f8b543793370212.jpeg

Подгружаю так:
with open("/home/shortsvideo/working_proxies.txt", "r") as f: working_proxies = f.read().splitlines()


Мой оптион:
ydl_opts = {
                'http_user_agent': self.ua.random,
                'cookiefile': self.get_cookies_path(),
                'format': 'mp4',
                'outtmpl': f'{self.download_path}/%(id)s.mp4',
                'proxy': ', '.join(working_proxies), 
                'force_ipv6': True,
                'age_limit': 45,
            }



Все ли я правильно делаю, можно ли так? сразу 10 прокси использовать, скрипт при подключению к ютубу, будет использовать разные прокси из списка, я верно понимаю?


У меня вылезает такая ошибка, почему-то показывает список с проксями.
67951bd416fc6144567814.jpeg
  • Вопрос задан
  • 4714 просмотров
Подписаться 5 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 3
@Erriuga
yt_dlp не поддерживает список прокси, тебе нужно передавать по одному.

Для каждого запроса только один прокси.

Вроде того(зависит от того, что ты хочешь сделать) + проверки желательно всегда.

# Считываем список рабочих прокси из файла
with open("/home/shortsvideo/working_proxies.txt", "r") as f:
    working_proxies = f.read().splitlines()

# Функция для проверки доступности прокси
def get_random_proxy(proxies):
    return random.choice(proxies)

# Настройки yt_dlp
ydl_opts = {
    'http_user_agent': 'your_user_agent',
    'cookiefile': '/path/to/cookies.txt',
    'format': 'mp4',
    'outtmpl': '/path/to/downloads/%(id)s.mp4',
    'force_ipv6': True,
    'age_limit': 45,
}

urls = ['https://example.com/video1', 'https://example.com/video2']  # Список видео для скачивания

for url in urls:
    proxy = get_random_proxy(working_proxies)  # Случайно выбираем прокси
    ydl_opts['proxy'] = proxy  # Указываем прокси для текущего запроса
    try:
        with YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])  # Скачиваем видео
        print(f"Видео скачано успешно через прокси: {proxy}")
    except Exception as e:
        print(f"Ошибка при скачивании через прокси {proxy}: {e}")
        # Здесь можно исключить нерабочий прокси из списка


UPD: ещё надо проверять, что список не пуст, если удаляешь из списка нерабочие; что куки вообще есть,
Ответ написан
@uabatumi
qmport com
Качайте тут, кому нужно
Ответ написан
@Phoenix32
Прокси нужно передавать один, в документации к библиотеке это прописано.

Так же обязательно нужно брать куки из рабочего аккаунта, желательно авторизовавшись в режиме инкогнито.

А ещё 99%, что потребуется PO токен, который можно получить через плагин get pot + провайдер.

Я прошел все эти круги ада как раз на днях. Без Кук и токена пустая трата времени, да и сними Ютуб вполне хорошо блочит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы