Scaricare video YouTube senza utilizzare strumenti di terze parti

I termini di utilizzo della piattaforma Google indicano quando è possibile scaricare video YouTube. Vediamo come è possibile farlo da riga di comando, anche da Windows, con un semplice JavaScript, Node.js e npm.

YouTube è una delle “proprietà” maggiormente remunerative per Google, che ha acquistato la piattaforma nel 2006 per circa 1,65 miliardi di dollari in azioni. Un’enormità rispetto ad esempio alla somma pagata per Android (50 milioni di dollari). Scaricare video YouTube è un’operazione che Google non permette alla luce del sole, sia per tutelare il copyright dei soggetti che usano la piattaforma al fine di pubblicare e diffondere i loro contenuti, sia per non compromettere il business dell’azienda che, evidentemente, poggia per larga parte sulla pubblicità.

Soltanto i publisher, ovvero coloro che producono contenuti e li caricano su YouTube, possono scaricare i loro video. In alternativa, attivando un abbonamento YouTube Premium è possibile scaricare video per effettuarne ad esempio la riproduzione in modalità offline. Il download, tuttavia, avviene e deve avvenire sempre entro i confini dell’applicazione sviluppata e distribuita da Google. Per qualunque dubbio, a fare fede sono i termini di servizio YouTube che devono in ogni caso essere rispettati. In un altro articolo abbiamo spiegato nel dettaglio quando è legale scaricare video dalle piattaforme di streaming video.

Come scaricare video YouTube velocemente, dalla riga di comando

Google ha sempre strenuamente e giustamente combattuto le applicazioni Web che facilitano il download dei video da YouTube. Sono strumenti automatizzati il cui utilizzo, sulla base dei termini di servizio, non è ammesso. Essi consentono infatti l’acquisizione di qualunque contenuto video senza averne diritto. Molti strumenti di questo tipo sono inoltre “farciti” di messaggi pubblicitari che invitano l’utente a installare software potenzialmente pericolosi, spesso spyware o addirittura vere e proprie applicazioni malevole. Il malvertising pullula in quei generi di servizi online.

Un ricercatore autonomo ha voluto spiegare com’è possibile scaricare video velocemente da YouTube avvalendosi di semplice codice JavaScript.

Nell’interessante trattazione, l’autore del documento mette sotto la lente il funzionamento delle API YouTube descrivendo lo scambio di dati che avviene tra il client e i server Google. L’aspetto forse più interessante è quello relativo all’utilizzo di un parametro aggiuntivo (n) che YouTube ha aggiunto a metà 2021 e che impedisce ai client non autorizzati di scambiare dati alla massima velocità possibile.

Il parametro n è una sfida (challenge) che YouTube utilizza per accertarsi che il download di un video sia richiesto tramite un client ufficiale, approvato da Google. In caso di sfida non superata, YouTube impone una limitazione di banda in downstream pari a 40-70 KB/s: per prelevare un video che pesa diversi gigabyte possono quindi volerci ore o addirittura giorni.

Lo script JavaScript pubblicato a questo indirizzo non fa altro che verificare il valore corretto del parametro n quindi provvede a inviarlo insieme con la richiesta destinata YouTube. Lo stream YouTube ricevuto come risposta è suddiviso in più segmenti, successivamente combinati usando il software FFmpeg per generare il video finale. Servendosi del valore n corretto, il video può essere scaricato alla massima velocità possibile, sfruttando tutta la banda di rete offerta dalla propria connessione.

Predisporre il necessario per avviare lo script con Windows: WSL 2

Posto che lo script presentato in precedenza può essere utilizzato dalla finestra del terminale Linux servendosi dei software Node.js e npm, è possibile raggiungere lo stesso risultato anche da una finestra di Windows Subsystem for Linux (WSL 2) in ambiente Windows. WSL 2 consente infatti di usare Linux in Windows accedendo all’intero ventaglio di comandi disponibile con ciascuna distribuzione del “pinguino”.

Dopo aver installato Ubuntu in WSL 2 (wsl --install -d Ubuntu-20.04) da Windows 10 oppure da Windows 11, si dovrebbe innanzi tutto eseguire il comando seguente per aggiornare la distribuzione:

sudo apt update && sudo apt upgrade -y

A questo punto, si possono installare i pacchetti Node.js e npm seguendo la guida pratica di Microsoft (paragrafo Install nvm, node.js, and npm, punti da 1 a 9).

Cosa sono e quali le differenze tra Node.js e npm

Elementi quali Node.js e npm (Node Package Manager) sono componenti fondamentali dell’ecosistema di sviluppo basato su JavaScript, ma hanno ruoli e funzionalità diversi. Node.js è una runtime JavaScript basato sul motore Google V8: essa consente di eseguire codice JavaScript lato server e comunque in ambienti che non presuppongono l’uso di un browser Web.

Si tratta di uno strumento che permette agli sviluppatori di eseguire gli script da riga di comando e di creare applicazioni server side complesse utilizzando JavaScript. Il modello asincrono e basato sugli eventi di Node.js, consente di gestire molte connessioni simultanee senza bloccare il thread principale.

npm, come suggerisce il suo nome, è invece il gestore di pacchetti che aiuta gli utenti e gli sviluppatori a installare, gestire e condividere pacchetti e librerie JavaScript. I pacchetti possono contenere moduli, librerie, script e risorse per semplificare lo sviluppo.

Uno strumento come npm dà modo di dichiarare le dipendenze di un progetto nel file package.json: esso elenca i pacchetti necessari per eseguire l’applicazione. Offre una serie di comandi “ad hoc” e un repository pubblico che ospita una vasta schiera di pacchetti facilmente installabili con npm install.

Eseguire lo script con Node.js da WSL 2

Prima di avviare lo script JavaScript presentato in precedenza, si deve installare il necessario all’interno della distribuzione Ubuntu in esecuzione tramite WSL 2 su Windows. I comandi che seguono, da impartire nella finestra di WSL, consentono di installare i software curl e FFmpeg nonché di creare una cartella chiamata YouTube portandosi quindi al suo interno:

sudo apt install curl -y
sudo apt install ffmpeg -y
mkdir YouTube
cd YouTube
curl -o dl.js -L https://bit.ly/47KhKXa
nano dl.js

Il comando curl scarica lo script per il download dei video mentre FFmpeg è il framework multimediale open source che integra una suite di strumenti per manipolare, convertire, registrare e riprodurre audio e video in diversi formati.

L’ultimo comando consente di aprire il file JavaScript con l’editor nano e di sostituire, al posto aqz-KE-bpKQ, l’identificativo del video YouTube da scaricare.

Scaricare video YouTube velocemente

L’identificativo può essere letto ed estratto semplicemente consultando l’URL del video di proprio interesse: compare a destra dell’indirizzo https://www.youtube.com/watch?v=. Ovviamente è importante verificare i termini di utilizzo di YouTube e la tipologia della licenza del singolo contenuto prima di valutarne l’eventuale download in locale. Nell’esempio viene scaricato questo video, che gli autori distribuiscono sotto licenza Creative Commons (consentendone espressamente il riutilizzo).

Download video YouTube: licenza e copyright

Dopo aver aggiornato l’ID del video da scaricare, si può salvare il file con l’editor nano semplicemente premendo i tasti CTRL+O quindi CTRL+X.

Inizializzare lo script con npm

I comandi seguenti consentono di configurare l’uso della versione più recente di Node.js e di inizializzare lo script:

nvm use node
npm init

Si può rispondere affermativamente a ogni richiesta premendo il tasto Invio.

Configurazione Node.js e inizializzazione npm

Aggiungere le dipendenze corrette nel file package.json

Il comando che segue permette di aprire il file di configurazione package.json:

nano package.json

Al posto delle righe seguenti

"author": "",
"license": "ISC"
}

vanno sostituite le righe riportate di seguito:

"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"axios": "^x.x.x",
"vm": "^x.x.x"
}
}

Configurazione package.json

Al solito, premendo i tasti CTRL+O quindi CTRL+X è possibile salvare il file JSON.

Come ultimo passaggio, il comando npm installè utilizzato per installare le dipendenze specificate nel progetto Node.js e dichiarate quindi nel file JavaScript visto in precedenza.

Avviare lo script che effettua il download del video

Il comando finale node dl.js consente di avviare lo script con Node.js e scaricare il video in locale da YouTube.

Download video con uno script JavaScript

Al termine del download, le varie porzioni del video YouTube vengono combinate con FFmpeg creando un unico file multimediale in formato WEBM. Il file risultante è salvato nella stessa cartella dello script e può essere aperto, ad esempio con Chrome, con VLC o con il riproduttore Microsoft presente in Windows 10 o in Windows 11.

È possibile portarsi rapidamente nella cartella contenente il video scaricato, premendo Windows+R, digitando \\WSL$ quindi cliccando sul nome della distribuzione Linux installata in WSL e infine sulle cartelle home\nome-utente\YouTube. Qui trova il file WEBM sul quale è possibile fare doppio clic (il nome del file corrisponde al titolo del video).

Scaricare video YouTube con npm e Node.js

Concludiamo ricordando nuovamente che il download dei video va eventualmente effettuato solo nel pieno rispetto di termini di utilizzo YouTube e delle condizioni di licenza fissate dai produttori dei contenuti.

Ti consigliamo anche

Link copiato negli appunti