Недавно я попытался загрузить видео с YouTube с помощью специальной программы, которая использует ytdl-core в NPM. Однако, попробовав несколько URL-адресов, я получил 403 Forbidden по всем из них.
Пример кода приведен ниже:
import { ytdl } from "ytdl-core";
import * as fs from "node:fs";
// ...
const info = ytdl.getInfo("some-video-id");
const stream = ytdl.downloadFromInfo(info, { filter: 'videoandaudio' });
fs.createWriteStream(`${makeSafe(info.videoDetails.title)}.mp4`);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


YouTube недавно выпустил обновление, которое ломает работу большинства загрузчиков видео. Это изменение реализует новые требования, которые в случае неудачи приводят к ответу 403 Forbidden. К сожалению, поскольку ytdl-core больше не поддерживается активно, рекомендуется переместить в @distube/ytdl-core . Разработчики этого пакета выпустили исправление в коммите 3df824e, которое исправляет проблему, присутствующую здесь. Чтобы переместить, выполните следующие действия:
ytdl-core, чтобы предотвратить конфликты пакетов с одинаковыми именами.npm uninstall ytdl-core
@distube/ytdl-corenpm install @distube/ytdl-core
@distube/ytdl-core.Из примера:
import { ytdl } from "@distube/ytdl-core";