YouTube — один из крупнейших источников общедоступных веб-данных в Интернете: более 800 миллионов видеороликов, миллиарды комментариев, текстовые транскрипты большинства загруженных материалов, а также структурированные метаданные, которые лежат в основе всего — от маркетинговых исследований до обучения искусственного интеллекта. Кроме того, это один из наиболее тщательно защищенных ресурсов в сети, и методы, которые позволяли извлекать данные с него три года назад, сегодня в основном уже не работают.
Эта статья заменяет более старое руководство, которое было технически верным в 2022 году. Сейчас оно уже не актуально. YouTube значительно ужесточил свои меры по борьбе с ботами до 2025 года: токены Proof of Origin теперь ограничивают доступ ко многим конечным точкам, при загрузке большинства страниц с видео требуются файлы cookie с данными о посетителе, а диапазоны IP-адресов центров обработки данных вызывают CAPTCHA-проверки уже после нескольких сотен запросов. CSS-селекторы, используемые в старых руководствах, не соответствуют текущей разметке YouTube. Даже данные о «дизлайках», на которые ссылаются эти руководства, не доступны публично с ноября 2021 года.
Вот что действительно работает в 2026 году — код, который действительно запускается.
Устали от того, что IP-блокировки тормозят вашу работу? Воспользуйтесь нашими прокси-серверами из частных сетей для высокоскоростной ротации или безопасными прокси-серверами от интернет-провайдеров, чтобы обеспечить максимальный срок службы аккаунта.
Что можно собирать с помощью скрейпинга (а что — нет)
Общедоступные данные:
- Метаданные видео — название, описание, количество просмотров, дата загрузки, канал, продолжительность, теги
- Данные канала — название, описание, количество подписчиков (приблизительное), список видео, информация на странице «О канале»
- Комментарии — включая ответы, количество лайков, метки времени
- Транскрипты и субтитры — для любого видео с включенными субтитрами
- Результаты поиска — полные страницы результатов поиска (SERP) по любому запросу
- Плейлисты — полное содержание и метаданные
- Записи чатов в реальном времени — для завершившихся трансляций
Запрещено независимо от метода:
- Личные видео
- Непубличные видео, URL-адреса которых у вас нет
- Всё, что находится за входом в систему, которой не принадлежит данная учетная запись
- Данные о взаимодействии отдельных зрителей
- Точное количество подписчиков (YouTube публично отображает только округленные цифры)
Важен и правовой аспект: Условия предоставления услуг YouTube ограничивают автоматизированный доступ. Сбор открытых данных в целом разрешен законом в большинстве юрисдикций, однако нарушение Условий предоставления услуг может привести к блокировке аккаунта, а в некоторых случаях — к гражданскому иску. Не собирайте данные, доступ к которым требует входа в систему. Не собирайте личную информацию, выходящую за рамки того, что публично отображается. Не распространяйте видеоконтент. Если вы собираете данные для обучения ИИ, указывайте источник и уважайте права авторов — в этой сфере все активнее применяются Закон ЕС об ИИ и аналогичные нормативные акты.
Четыре метода, о которых стоит знать
В 2026 году существует четыре подхода — выбор подходящего из них зависит от того, чего вы хотите добиться и в каком масштабе.
| Метод | Идеально подходит для | Требуется авторизация | Масштаб |
|---|---|---|---|
| API данных YouTube v3 | Структурированные запросы, небольшой и средний объем | Ключ API | Ограничено (10 000 единиц квоты в день бесплатно) |
| yt-dlp | Всё остальное — метаданные, комментарии, стенограммы, пакетная обработка | Нет (файлы cookie для некоторых видео) | От среднего до высокого с использованием прокси-показателей |
| youtube-transcript-api | Только стенограммы | Нет | Средний |
| Пользовательский скрапинг (запросы + InnerTube) | Особые случаи, не охваченные вышеуказанным | Нет | Развитая инфраструктура |
На практике в большинстве крупных проектов в качестве основного инструмента используется yt-dlp, а к другим прибегают только в тех случаях, когда yt-dlp не справляется с задачей.
Способ 1: YouTube Data API v3
Самый чистый вариант, когда это уместно. Официальный API Google возвращает структурированные данные в формате JSON для видео, каналов, плейлистов, результатов поиска и комментариев. Здесь нет никаких препятствий, связанных с защитой от ботов — запрос либо выполняется успешно, либо возвращает чёткую ошибку, связанную с квотой.
Загвоздка в квоте. В рамках бесплатного тарифа вам предоставляется 10 000 единиц в день. A videos.list Один вызов стоит 1 единицу; один поиск — 100. Это примерно 100 поисковых запросов в день или 10 000 запросов метаданных видео. Для многих сценариев использования этого вполне достаточно; но для масштабных задач это бесполезно.
python
from googleapiclient.discovery import build
API_KEY = "YOUR_API_KEY"
youtube = build("youtube", "v3", developerKey=API_KEY)
# Get metadata for a specific video
response = youtube.videos().list(
part="snippet,statistics,contentDetails",
id="dQw4w9WgXcQ"
).execute()
video = response["items"][0]
print(video["snippet"]["title"])
print(video["statistics"]["viewCount"])
print(video["contentDetails"]["duration"])
Используйте API, если объем ваших запросов укладывается в квоту и вам нужны чистые и стабильные данные. Подайте заявку на увеличение квоты, если у вас есть обоснованное деловое обоснование — Google одобряет такие заявки для реальных приложений, но не для случаев типа «Я разрабатываю скрейпер».
Способ 2: yt-dlp
yt-dlp — это де-факто стандарт для всего того, что API не охватывает должным образом. Это активно поддерживаемый форк youtube-dl, не требующий API-ключа и позволяющий обрабатывать метаданные, комментарии, транскрипты и загрузки с помощью одного инструмента.
Установка:
bash
pip install yt-dlp
Получить метаданные для одного видео без скачивания:
python
import yt_dlp
def get_video_metadata(url):
opts = {
"quiet": True,
"skip_download": True,
"no_warnings": True,
}
with yt_dlp.YoutubeDL(opts) as ydl:
info = ydl.extract_info(url, download=False)
return {
"title": info.get("title"),
"channel": info.get("uploader"),
"views": info.get("view_count"),
"likes": info.get("like_count"),
"duration_sec": info.get("duration"),
"upload_date": info.get("upload_date"),
"description": info.get("description"),
"tags": info.get("tags", []),
}
data = get_video_metadata("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
print(data)
Извлечь комментарии (включая ответы):
python
import yt_dlp
def get_comments(url, max_comments=500):
opts = {
"quiet": True,
"skip_download": True,
"getcomments": True,
"extractor_args": {
"youtube": {
"max_comments": [str(max_comments)],
"comment_sort": ["top"],
}
},
}
with yt_dlp.YoutubeDL(opts) as ydl:
info = ydl.extract_info(url, download=False)
return info.get("comments", [])
comments = get_comments("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
for c in comments[:5]:
print(f"{c['author']}: {c['text']} ({c['like_count']} likes)")
Пакетный сбор списка идентификаторов видео из результатов поиска:
bash
yt-dlp --flat-playlist -j "ytsearch50:web scraping tutorial" | jq -r '.id'
Несколько практических советов, которых нет в большинстве руководств:
- Регулярно обновляйте yt-dlp. YouTube регулярно обновляет экстрактор — как минимум раз в месяц. Использование устаревшей версии — главная причина того, что скрипты по непонятным причинам возвращают пустые результаты.
pip install -U yt-dlpдолжно быть включено в ваш график технического обслуживания. - Для просмотра видео с возрастными ограничениями требуются файлы cookie. Экспортировать файлы cookie из сеанса браузера и передать их через
cookiefileвydl_opts. - Для работы с большими объёмами данных требуются прокси-серверы. Без них вы быстро достигнете лимитов частоты запросов и столкнётесь с блокировкой IP-адресов. Подробнее об этом — ниже.
Способ 3: youtube-transcript-api
Если вам нужны только стенограммы — а это происходит всё чаще, поскольку текст стенограмм является наиболее полезным исходным материалом для анализа контента с помощью моделей большого языка (LLM) — youtube-transcript-api он легче и быстрее, чем yt-dlp.
python
from youtube_transcript_api import YouTubeTranscriptApi
def get_transcript(video_id, languages=("en",)):
try:
transcript = YouTubeTranscriptApi.get_transcript(
video_id, languages=list(languages)
)
return " ".join(entry["text"] for entry in transcript)
except Exception as e:
print(f"No transcript available: {e}")
return None
text = get_transcript("dQw4w9WgXcQ")
print(text[:500] if text else "None")
Транскрипты органично сочетаются с анализом тональности, конвейерами RAG и любыми рабочими процессами на основе больших языковых моделей (LLM), в которых требуется извлечение текстового контента из видео. Это один из самых быстрорастущих сценариев использования скрапинга в 2026 году.
Способ 4: InnerTube и ytInitialData
В особых случаях — например, при работе с данными канала, конкретными маркерами продолжения или любой другой информацией, которую вышеуказанные инструменты не предоставляют в удобном виде, — можно напрямую обращаться к внутренним конечным точкам YouTube. Фронтенд использует закрытый API по адресу /youtubei/v1/, и на большинстве страниц с видео встраивается ytInitialData Объект JSON в <script> тег, содержащий состояние отображаемой страницы.
Этот способ менее надежен, чем другие — YouTube периодически меняет структуру — но при этом он является самым гибким:
python
import requests
import re
import json
def extract_initial_data(video_url):
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/120.0.0.0 Safari/537.36",
}
response = requests.get(video_url, headers=headers)
match = re.search(r"var ytInitialData = ({.*?});</script>", response.text)
if not match:
return None
return json.loads(match.group(1))
data = extract_initial_data("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# data is the full page state — navigate it for whatever you need
Используйте этот подход только в тех случаях, когда другие методы не подходят для данной ситуации. Структура ytInitialData огромна и постоянно меняется; для навигации по ней каждый раз приходится тщательно изучать инструменты разработчика браузера.
Уровень прокси
При превышении нескольких сотен запросов в день с одного IP-адреса YouTube начинает принимать ответные меры. В 2026 году наблюдается следующая закономерность: сначала 429 Too Many Requests, затем мягкий блок, при котором запросы выполняются успешно, но возвращаются неполные данные, а затем жесткий блок, при котором каждый запрос наталкивается на экран с просьбой «войти, чтобы подтвердить, что вы не бот».
Эффективность масштабного сбора данных зависит от трёх факторов:
Тип IP-адреса. IP-адреса центров обработки данных блокируются уже после нескольких сотен запросов. Прокси-серверы, расположенные в жилых районах или принадлежащие интернет-провайдерам, обходят эту блокировку — для YouTube трафик с жилого IP-адреса выглядит как трафик обычного пользователя, подключенного через домашнее интернет-соединение.
Схема ротации. Для yt-dlp стандартом является ротация IP-адресов при каждом запросе видео. При скрапинге на основе сеансов (страничная навигация по комментариям, просмотр канала) «фиксированные» сеансы (использование одного и того же IP-адреса в течение 10–30 минут) выглядят более естественно, чем ротация в середине сеанса.
Географическое распределение. YouTube предоставляет разный контент для разных регионов. Если вы собираете данные, специфичные для конкретных регионов — списки трендов, локализованные результаты поиска, доступность видео в разных регионах — ваши прокси-серверы должны находиться в этих регионах.
Подключение прокси к yt-dlp не представляет сложности:
bash
yt-dlp --proxy "http://USER:PASS@proxy.example.com:8080" \
--skip-download --write-info-json \
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Или на Python:
python
opts = {
"quiet": True,
"skip_download": True,
"proxy": "http://USER:PASS@proxy.example.com:8080",
}
Для сбора данных на основе запросов (метод 4, приведённый выше):
python
proxies = {
"http": "http://USER:PASS@proxy.example.com:8080",
"https": "http://USER:PASS@proxy.example.com:8080",
}
response = requests.get(video_url, headers=headers, proxies=proxies)
Прокси IPBurger — как домашние, так и прокси-серверов интернет-провайдеров — созданы именно для такой работы: чистые IP-адреса, таргетинг на уровне страны, «липкие» сессии, когда они нужны. При этом общий принцип действует независимо от провайдера: при значительных объемах нагрузки именно прокси-слой является несущей частью системы. Скрипт для сбора данных состоит из 50 строк; от инфраструктуры зависит, дойдет ли он до конца или застрянет на 30 %.
Разумный рабочий процесс по умолчанию
Если вы сегодня запускаете проект по сбору данных с YouTube, вот какой подход обеспечит его масштабируемость:
- Определите, какие данные вам действительно нужны. В большинстве проектов не требуется использовать все данные — сужение области охвата позволяет избежать нецелевого использования квоты и сократить количество потенциальных препятствий.
- Сначала попробуйте использовать API YouTube Data, если он подходит. Если ваш объем не превышает 10 000 единиц в день и API предоставляет необходимые вам данные, это самый надежный вариант.
- Если API не подходит, воспользуйтесь yt-dlp. Он поддерживает работу с комментариями, транскриптами, пакетными операциями и любыми задачами, основанными на результатах поиска.
- Как только начнут появляться ошибки 429, добавьте уровень прокси-серверов с домашними адресами. Не пытайтесь обойти ограничитель скорости, полагаясь только на задержки — если ваш IP-адрес попал в черный список, то он там и останется.
- Для обработки больших объемов транскрипций используйте youtube-transcript-api. Этот инструмент менее ресурсоемкий, чем yt-dlp, и работает быстрее при выполнении именно этой задачи.
- Индивидуальные запросы + InnerTube — только в тех случаях, когда ничего другого не подходит. Стоит знать об этом, но не стоит начинать с этого.
- Разрабатывайте с учетом возможных сбоев. Все, что вы выпускаете сегодня, перестанет работать в течение шести месяцев. YouTube меняет интерфейс, экстрактор успевает адаптироваться, вы обновляете зависимости. Будьте к этому готовы.
Что на самом деле изменилось с 2022 года
Для тех, кто переходит с более старой конфигурации для сбора данных, стоит обратить внимание на следующие существенные изменения:
- Данные о «дизлайках» утрачены. В ноябре 2021 года YouTube удалил публичные показатели количества «дизлайков». Восстановить их невозможно; оценки «дизлайков», предоставленные сторонними ресурсами, носят предположительный характер.
- Теперь токены Proof of Origin ограничивают доступ ко многим конечным точкам потокового вещания и подробных метаданных. yt-dlp обрабатывает это внутренне, когда это возможно; при ручном сборе данных с этим приходится работать явно.
- Файлы cookie, содержащие данные о посетителях, необходимы для загрузки большинства страниц с видео. Новый IP-адрес без «разогретой» сессии часто сталкивается с окном запроса согласия вместо самого видео.
- CSS-селекторы из старых учебников не совпадают. В 2023 и 2024 годах YouTube значительно реорганизовал свой интерфейс. Любой учебник, в котором упоминаются такие классы, как
yt-uix-tile-linkссылается на версию разметки, которой уже много лет не существует. - Стоимость квот для некоторых конечных точек увеличилась. Для поиска она по-прежнему составляет 100 единиц, но для некоторых других конечных точек она изменилась. Перед составлением сметы ознакомьтесь с актуальным руководством по квотам.
Честный обзор
Сбор данных с YouTube в 2026 году — задача более выполнимая, чем кажется: с 2022 года инструментарий значительно улучшился (yt-dlp — действительно отличный инструмент), а официальный API надежно справляется с подходящими задачами. Сложность заключается не в логике сбора данных, а в лежащей в ее основе инфраструктуре. Используйте прокси-серверы частных пользователей или провайдеров, еженедельно обновляйте инструменты и предусматривайте меры на случай неизбежных сбоев — и данные будут ваши.
Успех вашего бизнеса напрямую зависит от времени безотказной работы ваших прокси-серверов. Перейдите на статические прокси-серверы бизнес-класса от интернет-провайдера, чтобы обеспечить выделенную пропускную способность и непоколебимую надежность. ИЛИ внедрите ротирующиеся прокси-серверы для частных пользователей и достигните коэффициента успешности сбора данных на уровне 99,9%.
