Jak funguje webový Popcorn Time? Naprogramujeme si ho

Před rokem se objevil první „pirátský Netflix“ Popcorn Time. Letos jej ale doplnily ještě lákavější webové verze, které nepotřebují žádný doplněk a P2P klient. Jak vlastně v nitru fungují?

Na titulní stránky světových technologických médií se tento týden opět dostal nechvalně proslulý pirátský přehrávač Popcorn Time – respektive jedna z jeho webových odnoží, která běží přímo v prohlížeči a k chodu nepotřebuje žádný speciální technologii a doplněk – jen základní schopnosti HTML5.

Něčeho podobného se autorské svazy právem bojí jako čert kříže, protože pirátské streamování filmů přímo v prohlížeči je dostupné prakticky pro každého. Nepotřebujete instalovat žádný speciální software – prostě jen otevřete adresu a vyberete si film.

535466638 624841374
Nebezpečně jednoduchý pirátský Browser Popcorn přímo v prohlížeči a bez potřeby jakýchkoliv doplňků včetně Flash Playeru. I proto vydržel na scéně jen několik málo hodin.

Podobné webové přehrávače nejsou samozřejmě ničím novým, zpravidla ale filmy streamovaly z nějakého pirátského doupěte, jehož provozovateli stačilo pohrozit žalobou a majitelé práv měli brzy klid.

Jenže doba se mění a dnešní webové pirátské přehrávače mohou streamovat data přímo z bittorrentové sítě, jejíž blokace je fakticky i právně mnohem složitější. Spuštění webové stránky, která by fungovala podobně jako zmíněný Browser Popcorn nebo třeba jarní Popcorn in your browser, je ke všemu velmi snadné.

Jak si naprogramovat vlastní Popcorn Time

Dnes si ukážeme, jaké technologie by mohl autor ke zprovoznění vlastního webového popcornu použít.

Nejjednodušším způsobem, jak dostat bittorrentová data do prohlížeče, je klasická HTTP brána. To v praxi znamená, že samotný P2P klient, který stahuje jednotlivé dílky souborů od různých uživatelů rozesetých po internetu, se vůbec nenachází na vašem počítači, ale kdesi na serveru.

No, a tento server vám pak stahovaný torrent předá skrze běžný protokol HTTP, jako byste stahovali třeba soubor MP4 z libovolné webové adresy. Optikou prohlížeče je jediný rozdíl zpravidla v tom, že se soubor začne stahovat až po určité chvíli, než se na straně serveru iniciuje samotná P2P komunikace, což může trvat i desítky sekund v závislosti na počtu a linkové rychlosti seedů – počítačů, na kterých jsou soubory, které chcete získat.

Jakmile prohlížeč obdrží první data třeba videosouboru MP4, zobrazí je pomocí HTML5 prvku <video> a na monitoru se začne přehrávat film.

HTTP BitTorrent jménem Coinado

Přesně na tomto principu byl založený první webový popcorn na adrese popcorninyourbrowser.net, který jako HTTP bránu používal komerční službu Coinado. Tehdy běžela v bezplatné betaverzi, ohromný zájem o zmíněný webový přehrávač však autory přinutil, aby ji krátce na to zpoplatnili, což znamenalo i konec experimentu popcorninyourbrowser.net, který neměl komerční ambice.

105591184 434665276
Letos na jaře se na webu objevila první verze webového Popcorn Timu. FIlmy z BitTorrentu streamovala pomocí služby Coinado.

Coinado.io je nicméně alesoň pro individuální použití docela levné. Neplatí se zde žádný paušál, ale datový tok. Za zhruba 24 korun můžete přenést 20 GB (0,05 dolarů/GB).

Coinado je nerd-friendly aplikace, má tedy výhradně textové rozhraní. Jedná se vlastně o primitivní skript napsaný v Pythonu, který vám vygeneruje váš unikátní identifikátor (který se zapíše natvrdo přímo do skriptu), pomocí kterého si pak nabijete účet buď přes PayPal, nebo Bitcoin.

219791145
Příkaz coinado balance zobrazí stav účtu a instrukce k nabití kreditu
444154092
Coinado v akci. Stahuje torrent, ale skrze běžný protokol HTTP. Je to vlastně jen převlečený linuxový nástroj wget.

Díky  čistě textové formě můžete Coinado elegantně integrovat do dalších aplikací zejména na linuxových systémech, přičemž skript bez jediného zádrhele funguje třeba i na populárních komunitních firmwarech pro domácí routery OpenWrt a DD-Wrt. Pokud to má Python a wget, Coinado tam prostě poběží.

Coinado lze ale použít i přímo zadáním běžného HTTP odkazu, který bude obsahovat identifikátor torrentu (jeho hash) a váš uživatelský klíč. No a to se už konečně dostáváme k tomu, jak lze Coinado elegantně integrovat přímo do prohlížeče.

Dejme tomu, že se budete chtít přímo v Chromu, Firefoxu nebo IE podívat na dokumentární snímek TBP AFK, který se šíří pod svobodnou licencí. Jeho HTTP adresa pro stažení skrze Coinado by pak mohla vypadat třeba takto:

https://coinado.io/i/79816060EA56D56F2A2148CD45705511079F9BCA /auto?u= cdswulkcl8ze8cvpi7

Všimněte si tří tučných součástí adresy. Tou první je tzv. hash torrentu – jedinečný identifikátor v celosvětové bittorrentové síti, který je součástí třeba tzv. magnetických linků. Tím tedy dáváme Coinadu najevo, co má najít a začít stahovat.

Parametr auto pak Coinadu přikazuje, aby z torrentu, který může obsahovat hromadu doprovodných souborů, vybralo největší soubor (což bude náš MP4 soubor). No a úplně na závěr nesmí chybět číslo našeho uživatelského účtu, aby Coinado vědělo, komu má strhnout kredit.

Takže to zrekapitulujme. Když takový odkaz zadáme do prohlížeče, Coinado na serveru spustí bittorrentový klient, začne stahovat torrent a data nám už bude posílat skrze šifrované HTTPS spojení.

Je to elegantní, je to jednoduché, a pokud takovým odkazem nakrmíme integrovaný přehrávač webového prohlížeče pomocí HTML5 značky <video>, zprovozníme tu nejjednodušší variantu Popcorn Timu v prohlížeči opravdu s pomocí několika málo řádků Javascriptu.

334291477
A takto by mohl vypadat kód primitivního webového přehrávače postaveného na Coinadu
472442791 30025193
660592269
A náš testovací bittorrentový filmový přehrávač v akci. HTML5 video podporuje i externí titulky, ty bychom tedy mohli v dalším kroku nahrát z některého katalogu, třeba opensubtitles.org.
150252917
Pokud má torrent kvalitní seedy, Coinado nemá problémy s rychlostí a HTML5 přehrávač tedy může video začít přehrávat z vlastní cache s minimálním zpožděním. Tedy pokud bude rozumět formátu.

Zdrojem torrentů je pirátské YTS

Skutečné webové alternativy Popcorn Timu tento technologický základ rozšiřují vlastně jen o to, že formou miniatur zobrazí seznam dostupných filmů, takže samotný uživatel nemusí hledat hashe konkrétních torrentů.

Jako zdroj prakticky ve všech případech slouží pirátský torrentový producent a katalog YTS (možná jej znáte pod starším označením YIFY). Jelikož všechny Popcorn Timy stojí a padají na funkčností YTS, pokud má výpadek, nefungují ani koncové aplikace. To se děje právě v těchto dnech a pirátská komunita bije na poplach už i na Twitteru

WebRTC + BitTorrrent = WebTorrent

HTTP brány pro bittorrentovou síť jako Coinado a další však nejsou jedinou možností, jak dostat Popcorn Time do prohlížeče. Ostatně i ony trpí tím, že se majitel práv může pokusit právně tlačit právě na podobnou bránu, která je vlastně zprostředkovatelem přenosu a nese tedy v rámci legislativy DMCA veškerou zodpovědnost.

Právě proto vznikají nejrůznější pokusy, jak zprovoznit bittorrentovou komunikaci přímo v prohlížeči s pomoci prostého Javascriptu a technologií z rodiny HTML5. Podařilo se to třeba autorům javascriptová knihovny WebTorrent (GitHub), která realizuje P2P spojení pomocí nativní technologie WebRTC, kterou dnes v největší šíři podporuje především Chrome.

Pokud by tedy některý další Popcorn Time pro prohlížeč využil právě tuto technologii, sám o sobě bude prakticky nezničitelný, data totiž bude do HTML5 přehrávače stahovat opravdu přímo z bittorrentové sítě. Na stranu druhou tím pádem ale přenese i veškerou zodpovědnost na koncového uživatele, který už nebude výhradně pasivním divákem, ale i aktivním prvkem P2P sítě, a může tedy licencované dílo ilegálně šířit dál – stejně jako v desktopovém Popcorn Timu.

S rozvojem nových multimediálních a síťových technologií uvnitř internetových prohlížečů je však jedna věc už dnes docela jistá. Podobných webů bude přibývat a jejich spouštění bude extrémně jednoduché a levné. Uvidíme, jak na to bude postupem času reagovat Hollywood.


V článku se pokoušíme poodhalit technické zákulisí určitého fenoménu posledních měsíců. V žádném případě vás nechceme nabádat k tomu, abyste Coinado a prezentovaný kód, který slouží pouze jako ukázka, používali k čemukoliv, co by mohlo být v rozporu se zákonem.

Diskuze (20) Další článek: Týden Živě: Návrat do budoucnosti

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,