Co musí proběhnout, než ti webová stránka dá svůj soubor
Vidíš to video. Hraje, přímo tady, ve webovém prohlížeči. Tak proč ho nejde uložit? Odpověď je, že webová stránka málokdy předá soubor — předává instrukce, a soubor, který z nich prohlížeč sestaví, nemusí vůbec existovat jako jedna věc.
FoxDL Čtyři způsoby, jak stránka dodává video, jen jeden je soubor
Nejstarší a nejjednodušší je přímý soubor: stránka odkazuje na adresu končící .mp4 a prohlížeč ji stáhne. Pokud tu adresu najdeš, máš soubor. Takhle stále fungují menší weby, fóra, zpravodajské servery a souborové hostingy.
Druhý je adaptivní streamování — HLS nebo DASH. Stránka načte playlist, který vypisuje stovky krátkých segmentů na několika kvalitativních úrovních, a přehrávač je za chodu spojuje, přepínaje kvalitu podle tvého připojení. Neexistuje jeden soubor, který by se dal najít. Uložit ho znamená stáhnout každý segment a z nich soubor znovu poskládat.
Třetí je blob URL. Stránka si už data stáhla pomocí JavaScriptu a předala přehrávači odkaz na něco, co žije v paměti samotného prohlížeče. Adresa, kterou vidíš (blob:https://…), je mimo tu stránku a tu relaci nesmyslná — nejde ji otevřít, sdílet ani stáhnout, a na tomhle ztroskotá většina naivních „vyhledávačů videa“.
Čtvrtý je chráněný obsah: šifrované segmenty přehrávané přes DRM systém, kde je dešifrovací klíč vydán prohlížeči za podmínek, které výslovně zakazují uchování kopie. Tohle není překážka k obejití; je to mechanismus, na kterém stojí licenční smlouva, a žádný legitimní nástroj ho nepřekonává.
Jak webový prohlížeč pozná, že je co uložit
Vestavěný webový prohlížeč, který nabízí uložit, co najde, dělá několik věcí najednou. Každá zachytí případ, který ostatní minou.
- Čtení mediálních prvků stránky
- Procházení dokumentu kvůli tagům
<video>,<audio>a<source>a čtení jejich adres. Zachytí případ přímého souboru okamžitě, mine všechno postavené JavaScriptem po načtení stránky. - Nahlédnutí do shadow DOM
- Moderní přehrávače jsou vlastní prvky, jejichž vnitřek je záměrně uzavřený před stránkou. Hledání, které se zastaví u běžného dokumentu, uvidí prázdnou krabici tam, kde je video.
- Sledování toho, co stránka skutečně vyžádala
- Prohlížeč zná každý zdroj, který stránka stáhla. Mediální soubor, který se načetl — bez ohledu na to, který skript si o něj řekl, nebo kdy — se tady objeví, i když na něj nic ve viditelné stránce neodkazuje.
- Zjišťování skutečného typu odpovědi
- URL končící
.phpmůže vrátit video, a URL končící.mp4může vrátit chybovou stránku. SkutečnýContent-Type, který server poslal, ti řekne, které je které — přípony jsou jen odhad.
Jak vypadá uložení ze stránky, když to funguje
Na pořadí záleží. Většina selhání pochází z přeskočení druhého kroku a spuštění čtyřgigabajtového přenosu přihlašovací stránky.
-
Nejdřív přehraj vteřinu média
Řada stránek nenačte nic, dokud nezačne přehrávání. Dvě vteřiny přehrávání jsou často rozdíl mezi prázdným seznamem kandidátů a plným.
-
Zkontroluj, čím kandidát skutečně je
Než se do toho pustíš, podívej se na hlášenou velikost a typ. „Film“ o 14 KB je HTML stránka. Typ
text/html, kde jsi čekalvideo/mp4, znamená, že máš špatný odkaz. -
Vyber kvalitu, kterou chceš
Stream obvykle nabízí několik. Nejvyšší není vždy správná odpověď na telefonu, kde je rozdíl neviditelný a úložiště ne.
-
Nech relaci přenést s sebou
Chráněné odkazy kontrolují, kdo se ptá: cookies z tvé přihlášené relace, stránku, která tě odkázala, občas identitu prohlížeče. Stahování spuštěné bez toho dostane 403, i když se stránka přehrávala v pořádku.
-
Ověř, co přistálo
Otevři to. Soubor, který se přehraje dvě vteřiny a zastaví, byl useknutý — obvykle vypršelý odkaz — a stojí za to ho spustit znovu místo si ho ponechat.
Co musí vestavěný webový prohlížeč zvládnout správně
Kromě nalezení média jsou tohle věci, které rozhodují, jestli stahování skutečně dokončí.
- Přenést relaci až ke stahování
Cookies, referer a user agent musí cestovat s požadavkem. Bez nich se chráněný odkaz vyřeší na stránce a selže ve stahovači.
- Držet ty přihlašovací údaje mimo úložiště
Cookies relace jsou po dobu relace stejně dobré jako heslo. Patří do paměti po dobu přenosu a nikam jinam — ne do databáze, ne do logu.
- Odmítnout předat odkaz jiné aplikaci
iOS rád otevře ťuknutý odkaz v jiné aplikaci, pokud si na tu doménu dělá nárok. Webový prohlížeč určený k ukládání médií musí navigaci sám zrušit a znovu vydat, jinak stránka, kterou jsi chtěl, zmizí do cizí aplikace.
- Ořezat stránku před vykreslením
Blokovač obsahu tady není jen o reklamě — méně sledovacích prvků a překryvů znamená míň falešných kandidátů v seznamu médií.
- Zvládat dokumenty stejně jako video
PDF, ZIP a soubory Office jsou druhá polovina toho, co lidé z webu ukládají, a měly by přistát ve stejné knihovně jako všechno ostatní.
Časté otázky
Proč to Safari neumí samo?
Safari soubory stahuje — umí to od iOS 13. Co neudělá, je prohledat stránku kvůli médiu, které je streamované místo odkazované, nebo poskládat segmentovaný stream do souboru. Je to webový prohlížeč, a tahle práce patří správci stahování.
Co je blob URL a proč to nejde stáhnout?
Je to odkaz na data, která stránka už drží v paměti. Neexistuje mimo tu záložku, takže vložení kamkoli jinam nevytvoří nic. Skutečné médium bylo staženo odněkud reálného, a ta adresa — ne blob — je ta, kterou stojí za to najít.
Stránka se přehrává v pořádku, ale stahování dostane 403. Proč?
Požadavek na stažení dorazil bez toho, co měla stránka: tvou cookie relace, odkazující stránku, občas odpovídající identitu prohlížeče. Servery používají přesně tuto kombinaci k rozlišení diváka od scraperu.
Dá se uložit úplně všechno?
Ne, a je to záměr. Obsah chráněný DRM je šifrovaný klíči vydanými pod licencí, která zakazuje uchování. Některé stránky navíc podepisují každý segment zvlášť krátkodobými tokeny. Obojí funguje podle plánu.
Webový prohlížeč uvnitř FoxDL
Je to normální prohlížeč se záložkami, jehož úkolem je dostat věci do tvé knihovny, ne být tvým každodenním prohlížečem.
- Šest kanálů detekce, včetně shadow DOM a záznamu toho, co stránka skutečně vyžádala, takže přehrávač postavený celý v JavaScriptu je pořád viditelný.
- Skutečný typ se zjišťuje z odpovědi místo odhadování z přípony, a kandidáti
blob:, které nejde stáhnout, se vyfiltrují místo toho, aby se nabídly a selhaly. - Cookies, referer a user agent se přenášejí až ke stahování, takže se chráněný odkaz vyřeší — a žádný z nich se nikdy nezapíše na disk.
- Blokovač obsahu ořeže stránku před vykreslením.
- PDF, ZIP a dokumenty se ukládají do stejné knihovny jako média, jedním ťuknutím.
- Záložky, oblíbené a startovací stránka s vlastními zkratkami.
FoxDL neposkytuje žádný vlastní obsah. Co si uložíš, je to, co jsi přinesl, a je na tobě mít právo si to ponechat.
Časté otázky
- Jak stáhnu soubor z webové stránky?
- Umí FoxDL stáhnout HLS (m3u8) stream?
- Pokračuje stahování, i když aplikaci opustím?
- Dodává FoxDL IPTV kanály, filmy nebo streamy?
Číst dál
Co dělá správce stahování, co webový prohlížeč neumí
Proč se přenosy zastaví při přepnutí aplikace, co skutečně vyžaduje obnovení, a jak se ze streamů stanou soubory.
Co mediální aplikace na tvém telefonu vidí a co by nikdy neměla poslat
Co mediální aplikace vidí, jak číst štítek soukromí, a proč zámek není šifrování.
Kde tvé soubory na iPhonu skutečně žijí a kdo je vidí
Sandbox, kam stahování skutečně jde, a proč přejmenování souboru rozbije tolik aplikací.
Tvá knihovna, konečně na jednom místě.
Zdarma ke stažení. Bez účtu a registrace — celá sada je ve free verzi.