Italiano

Video e sottotitoli · Direct Media Downloader

Come un browser scarica un file da un collegamento diretto con fetch e BLOB

· Come funziona

download API del browser cor

Un file multimediale remoto in streaming in un BLOB del browser e download locale
Illustrazione vettoriale originale ToolAcre

Percorre la pipeline utilizzata da uno strumento del browser per trasformare un collegamento diretto in un file salvato: recupera i byte, li conserva come BLOB e li consegna all'attributo di download. Spiega perché non è necessario alcun server in nessun passaggio.

Il collegamento apre un lettore invece di salvare un file: facendo clic su un collegamento diretto MP4 o MP3 di solito viene riprodotto in linea, che è il problema che un downloader risolve

Facendo clic su un collegamento diretto MP3 è possibile aprire un lettore perché il browser sa come riprodurre quel tipo MIME. Il salvataggio degli stessi byte è un'azione separata. La parola chiave è diretta: un collegamento a un file di risposta effettivo, non a una pagina Web contenente un lettore o un manifest che elenca segmenti multimediali. ToolAcre fa questa distinzione prima di offrire un download e non pretende che una pagina URL sia un file URL.

Passo uno: fetch() chiede all'host i byte: come appare una richiesta GET all'host annunciato e cosa ritorna

Dopo aver scelto Controlla collegamento, il browser potrebbe inviare una richiesta HEAD al URL fornito per controllarne lo stato, il tipo e la lunghezza. Il recupero del file utilizza una richiesta GET a quell'host, non un proxy ToolAcre. La richiesta omette deliberatamente le credenziali, quindi un host che richiede il tuo accesso potrebbe rifiutarlo. Il server remoto deve inoltre consentire la lettura di script multiorigine; se CORS blocca l'accesso, lo strumento spiega il rifiuto anziché aggirarlo tramite un relè nascosto. Un reindirizzamento può modificare la destinazione, quindi controlla l'host annunciato.

Passaggio due: il corpo della risposta diventa un BLOB: come vengono raccolti i byte in memoria e perché il BLOB ha un tipo MIME

Il corpo della risposta viene letto come un flusso di blocchi di byte. Progress può utilizzare Content-Length quando l'host lo espone; senza una lunghezza nota lo strumento può mostrare i byte ricevuti ma non una percentuale affidabile. Applica un limite di memoria durante la raccolta di blocchi, quindi assembla un BLOB con il tipo di contenuto restituito. Questo è più sicuro che chiamare response.blob() su un flusso illimitato, ma non è uno streaming con memoria zero su disco: il BLOB completato occupa ancora spazio nella sessione del browser.

Passaggio tre: URL.createObjectURL e l'attributo di download: come un blob temporaneo: URL più un ancoraggio attiva la finestra di dialogo di salvataggio

Un BLOB sono dati in memoria, non un indirizzo Internet. Il browser può creare un blob temporaneo: oggetto URL e allegarlo ad un ancoraggio con un nome file di download; facendo clic su quell'ancora si chiede al browser di salvare i byte. Il nome del file può provenire da un'intestazione Content-Disposition o dal percorso URL anziché dal titolo della pagina. Poiché il collegamento ora è un BLOB della stessa pagina URL, il browser può salvare il risultato senza ospitarlo su ToolAcre. È comunque consigliabile controllare l'estensione e il tipo MIME prima di aprire un file da una fonte sconosciuta.

Esempio funzionante: salvataggio di un episodio podcast dal collegamento allegato, seguendo uno MP3 da URL incollato in un file su disco

Immagina un editore di podcast che espone un allegato autorizzato URL che termina con Episode.mp3. Incolla l'indirizzo esatto, controlla l'host annunciato e utilizza Controlla collegamento. Se HEAD è consentito, potrebbe mostrare audio/mpeg e un conteggio di byte previsto; Fetch chiede quindi all'editore i byte MP3, li trasmette in streaming in un BLOB e salva l'episodio.mp3. Se l'host omette le intestazioni CORS, il browser può riprodurre il collegamento nella propria scheda mentre questa pagina non può recuperarlo tramite script; "Salva collegamento con nome" potrebbe quindi essere il percorso corretto. Il diritto dell'utente di salvare il file è separato dal fatto che il suo server consenta tecnicamente di recuperarlo.

Pulizia: revoca dell'oggetto URL e liberazione di memoria: perché un downloader ben realizzato rilascia il BLOB al termine del salvataggio

Gli URL degli oggetti temporanei mantengono i riferimenti ai BLOB di supporto. Un downloader che lascia in vita ogni URL può conservare file di grandi dimensioni in una scheda di lunga durata. L'utilità di download condiviso di ToolAcre crea un URL locale per l'azione di salvataggio e la revoca al termine; la cancellazione rilascia il lettore di risposta e scarta blocchi parziali. Per file molto grandi, un normale download del browser dall'host è una soluzione migliore rispetto alla raccolta dell'intera risposta nella memoria della pagina.

Cosa non copre: URL di pagine, manifest di streaming, DRM e collegamenti che richiedono un accesso

Questo strumento non troverà i contenuti multimediali nascosti dietro una pagina video, non analizzerà HLS/DASH manifesti .m3u8 o .mpd, ignorerà DRM, spooferà intestazioni o accederà a uno streaming protetto dalla sessione. Non scarica contenuti privati ​​per te e non decide se una licenza concede l'autorizzazione a copiare un file. Un 403, un reindirizzamento a una pagina di accesso o un errore CORS è un limite da comprendere, non uno spunto per cercare un proxy non documentato.

Conclusione: tre API del browser, nessun server: come Direct Media Downloader applica questa pipeline al collegamento che incolli

La pipeline viene recuperata dall'host fornito → riceve blocchi → crea un BLOB → attiva un download locale. Non è coinvolto nessun inoltro ToolAcre, ma è assolutamente coinvolta una vera e propria richiesta all'host di terze parti; i suoi log possono vedere la connessione. Direct Media Downloader annuncia il contatto prima di effettuarlo e ti informa quando le regole di sicurezza del browser rifiutano una lettura multiorigine.