Mitä täytyy tapahtua ennen kuin verkkosivu antaa sinulle tiedostonsa
Näet videon. Se toistuu, juuri siinä, selaimessa. Miksi sitä ei sitten voi säilyttää? Vastaus on, että verkkosivu harvoin luovuttaa tiedostoa — se luovuttaa ohjeita, ja tiedosto jonka selain kokoaa niistä ei ehkä ole olemassa yhtenä asiana lainkaan.
FoxDL Neljä tapaa joilla sivu toimittaa videota, joista vain yksi on tiedosto
Vanhin ja yksinkertaisin on suora tiedosto: sivu osoittaa osoitteeseen joka päättyy .mp4:ään ja selain hakee sen. Jos löydät sen osoitteen, sinulla on tiedosto. Näin toimivat edelleen useimmat pienemmät sivustot, foorumit, uutissivut ja tiedostoisännät.
Toinen on adaptiivinen suoratoisto — HLS tai DASH. Sivu lataa soittolistan joka listaa satoja lyhyitä segmenttejä useilla laatutasoilla, ja soitin ompelee ne yhteen edetessään, vaihtaen laatua yhteytesi muuttuessa. Ei ole yksittäistä tiedostoa löydettäväksi. Sen tallentaminen tarkoittaa jokaisen segmentin hakemista ja tiedoston rakentamista niistä uudelleen.
Kolmas on blob-osoite. Sivu on jo hakenut datan JavaScriptillä ja antanut soittimelle viittauksen johonkin joka asuu selaimen omassa muistissa. Osoite jonka näet (blob:https://…) on merkityksetön kyseisen sivun ja istunnon ulkopuolella — sitä ei voi avata, jakaa tai ladata, ja tämä kompastuttaa useimmat naiivit "videohakijat".
Neljäs on suojattu sisältö: salattuja segmenttejä toistettuna DRM-järjestelmän kautta, jossa purkuavain annetaan selaimelle ehdoilla jotka nimenomaisesti kieltävät kopion säilyttämisen. Tämä ei ole este jonka voisi kiertää; se on mekanismi jolle lisenssisopimus on rakennettu, eikä mikään laillinen työkalu voita sitä.
Miten verkkoselain huomaa että jotain on tallennettavana
Sovelluksen sisäinen selain joka tarjoutuu tallentamaan löytämänsä tekee useita töitä yhtä aikaa. Jokainen nappaa tapauksen jonka muut jättävät väliin.
- Sivun mediaelementtien lukeminen
- Asiakirjan läpikäyminen
<video>-,<audio>- ja<source>-tunnisteiden varalta ja niiden osoitteiden lukeminen. Nappaa suoran tiedoston tapauksen välittömästi, jättää väliin kaiken minkä JavaScript rakensi sivun latautumisen jälkeen. - Katsominen shadow DOM:n sisään
- Modernit soittimet ovat mukautettuja elementtejä joiden sisäosat on tarkoituksella eristetty sivusta. Haku joka pysähtyy tavalliseen asiakirjaan näkee tyhjän laatikon missä video on.
- Sen tarkkailu mitä sivu oikeasti pyysi
- Selain tietää jokaisen resurssin jonka sivu haki. Mediatiedosto joka ladattiin — riippumatta siitä mikä skripti sitä pyysi, tai milloin — näkyy tässä vaikka mikään näkyvällä sivulla ei osoittaisi siihen.
- Vastaustyypin haistaminen
- URL joka päättyy
.php:hen voi palauttaa videon, ja URL joka päättyy.mp4:ään voi palauttaa virhesivun.Content-Typejonka palvelin oikeasti lähetti kertoo kumpi — päätteet ovat arvauksia.
Miltä tallentaminen sivulta näyttää kun se toimii
Järjestyksellä on väliä. Useimmat epäonnistumiset johtuvat toisen vaiheen ohittamisesta ja neljän gigatavun kirjautumissivun siirron aloittamisesta.
-
Toista sekunti mediaa ensin
Monet sivut eivät lataa mitään ennen kuin toisto alkaa. Kaksi sekuntia toistoa on usein ero tyhjän ehdokaslistan ja täyden välillä.
-
Tarkista mikä ehdokas oikeasti on
Ennen sitoutumista, katso ilmoitettu koko ja tyyppi. 14 kt:n "elokuva" on HTML-sivu. Tyyppi
text/htmlmissä odotitvideo/mp4:ää tarkoittaa että sinulla on väärä linkki. -
Valitse haluamasi laatu
Striimi tarjoaa yleensä useita. Korkein ei aina ole oikea vastaus puhelimessa, jossa ero on näkymätön ja tallennustila ei ole.
-
Anna istunnon kulkea mukana
Suojatut linkit tarkistavat kuka kysyy: kirjautuneen istuntosi evästeet, sivu joka ohjasi sinut, joskus täsmäävä selainidentiteetti. Ilman niitä aloitettu lataus saa 403:n vaikka sivu toistui hyvin.
-
Vahvista mitä laskeutui
Avaa se. Tiedosto joka toistuu kaksi sekuntia ja pysähtyy on katkaistu — yleensä vanhentunut linkki — ja kannattaa aloittaa uudelleen sen sijaan että säilyttäisi sen.
Mitä sovelluksen sisäisen verkkoselaimen täytyy tehdä oikein
Median löytämisen lisäksi nämä ovat asioita jotka päättävät valmistuuko lataus oikeasti.
- Kanna istunto latauksen läpi
Evästeiden, referer-tiedon ja user agentin täytyy kulkea pyynnön mukana. Ilman niitä suojattu linkki ratkeaa sivulla ja epäonnistuu lataajassa.
- Pidä nuo tunnukset pois tallennustilasta
Istunnon evästeet ovat yhtä hyviä kuin salasana istunnon keston ajan. Ne kuuluvat muistiin siirron keston ajaksi eikä minnekään muualle — ei tietokantaan, ei lokiin.
- Kieltäydy antamasta linkkiä toiselle sovellukselle
iOS avaa mielellään napautetun linkin toisessa sovelluksessa jos se väittää omistavansa kyseisen verkkotunnuksen. Verkkoselaimen joka on tarkoitettu median tallentamiseen täytyy peruuttaa ja antaa navigointi uudelleen itse, tai sivu jonka halusit katoaa jonkun toisen sovellukseen.
- Karsi sivua ennen renderöintiä
Sisällönesto ei ole täällä vain mainontaa varten — vähemmän seurantaa ja peittokerroksia tarkoittaa vähemmän vääriä ehdokkaita medialistassa.
- Käsittele asiakirjoja yhtä lailla kuin videota
PDF:t, ZIP:t ja Office-tiedostot ovat toinen puoli siitä mitä ihmiset tallentavat verkosta, ja niiden pitäisi laskeutua samaan kirjastoon kuin kaikki muu.
Kysymyksiä joita ihmiset kysyvät
Miksi Safari ei osaa tehdä tätä itse?
Safari lataa tiedostoja — se on tehnyt niin iOS 13:sta lähtien. Mitä se ei tee, on sivun tarkastaminen median varalta joka striimataan linkittämisen sijaan, tai segmentoidun striimin uudelleenrakentaminen tiedostoksi. Se on verkkoselain, ja tuo työ kuuluu latausohjelmalle.
Mikä on blob-osoite ja miksi en voi ladata sitä?
Se on kahva dataan jonka sivu jo pitää muistissa. Sillä ei ole olemassaoloa kyseisen välilehden ulkopuolella, joten sen liittäminen minnekään ei tuota mitään. Taustalla oleva media haettiin jostain oikeasta, ja se osoite — ei blob — on se joka kannattaa löytää.
Sivu toistuu hyvin mutta lataus saa 403:n. Miksi?
Latauspyyntö saapui ilman niitä asioita joita sivulla oli: istuntoevästeesi, viittaava sivu, joskus täsmäävä selainidentiteetti. Palvelimet käyttävät juuri tätä yhdistelmää erottaakseen katsojan raapijasta.
Voiko kaiken tallentaa?
Ei, ja se on tarkoituksellista. DRM:llä suojattu sisältö on salattu avaimilla jotka on annettu lisenssillä joka kieltää sen säilyttämisen. Jotkin sivustot myös allekirjoittavat jokaisen segmentin erikseen lyhytikäisillä tokeneilla. Molemmat toimivat kuten on tarkoitettu.
FoxDL:n sisäinen verkkoselain
Se on tavallinen välilehdillinen verkkoselain jonka tehtävä on saada asiat kirjastoosi olematta arkiselaimesi.
- Kuusi tunnistuskanavaa, mukaan lukien shadow DOM ja tallenne siitä mitä sivu oikeasti pyysi, joten kokonaan JavaScriptillä rakennettu soitin on silti näkyvissä.
- Todellinen tyyppi haistetaan vastauksesta pikemmin kuin arvataan päätteestä, ja
blob:-ehdokkaat joita ei voida hakea suodatetaan pois sen sijaan että tarjottaisiin ja epäonnistuttaisiin. - Evästeet, referer ja user agent kuljetetaan mukana lataukseen jotta suojattu linkki ratkeaa — eikä yhtäkään niistä koskaan kirjoiteta levylle.
- Sisällönesto karsii sivua ennen renderöintiä.
- PDF:t, ZIP:t ja asiakirjat tallentuvat samaan kirjastoon kuin media, yhdellä napautuksella.
- Välilehdet, kirjanmerkit ja aloitussivu omilla pikakuvakkeillasi.
FoxDL ei toimita omaa sisältöä. Se minkä tallennat on se minkä toit, ja olet vastuussa siitä että sinulla on oikeus säilyttää se.
Usein kysytyt
- Miten lataan tiedoston verkkosivulta?
- Voiko FoxDL ladata HLS-striimin (m3u8)?
- Jatkuvatko lataukset kun poistun sovelluksesta?
- Tarjoaako FoxDL IPTV-kanavia, elokuvia tai striimejä?
Lue lisää
Mitä latausohjelma tekee mitä selain ei tee
Miksi siirrot pysähtyvät kun vaihdat sovellusta, mitä jatkaminen oikeasti vaatii, ja miten striimeistä tulee tiedostoja.
Mitä puhelimesi mediasovellus voi nähdä, ja mitä sen ei koskaan pitäisi lähettää
Mitä mediasovellus voi nähdä, miten lukea yksityisyysmerkintä, ja miksi lukitus ei ole salausta.
Missä tiedostosi oikeasti asuvat iPhonessa, ja kuka näkee ne
Sandbox, mihin lataukset oikeasti menevät, ja miksi tiedoston uudelleennimeäminen rikkoo niin monta sovellusta.
Kirjastosi, vihdoin yhdessä paikassa.
Ilmainen lataus. Ei tiliä eikä rekisteröitymistä — koko ominaisuusjoukko on ilmaisversiossa.