Tipsport TV – kompletní technický rozbor
Tipsport má
dvě úplně nezávislé platformy, které spolu technicky nesouvisí:
- tv.tipsport.cz – veřejná TV, neplacená, bez účtu
- www.tipsport.cz (sekce Live) – sázkové streamy, placené, jen pro přihlášené
1. Neplacený obsah: tv.tipsport.cz
Co to je: veřejná stránka se záznamy zápasů, sestřihy a několika živými kanály. Žádné přihlášení, žádné cookies.
Katalog: jeden veřejný JSON
https://tv.tipsport.cz/stream.json (cache 5 min). Sekce liveMatches, upcomingMatches, vodMatches, highlights, heroMatch. Každá položka má týmy, ligu, čas, délku, thumbnail a streamUrl (což je jen ID, ne URL).
CDN: livebox (Wowza), load balancer lb1.tmo.livebox.cz
Jak se skládá URL:- Záznamy a sestřihy: https://lb1.tmo.livebox.cz/tipsport-voda...ylist.m3u8 – load balancer vrátí master s absolutními URL na uzly (n7/n8) a do cesty vloží hash
- Živé kanály hrN: v aplikaci tipsport-voda neexistují (vrací zástupný filenotfound.mp4 se stavem 200), běží v jiné Wowza aplikaci – zatím neověřeno
Token: hash v cestě, generuje ho load balancer per-request.
- Vázaný na IP: NE (ověřeno)
- UA filtr: žádný (hraje i s prázdným UA)
- CORS: * (hraje i ve webovém přehrávači)
- DRM: žádné
Důsledek pro server: triviální. Klientovi stačí vrátit 302 na lb1 smil, token si vygeneruje jeho vlastní přehrávač. Server nenese žádný datový provoz.
Past: neexistující/skončený záznam vrací
200 se zástupným filenotfound.mp4, ne chybu. Platnost nutno kontrolovat podle řetězce "filenotfound" v obsahu, ne podle stavového kódu.
2. Placený obsah: www.tipsport.cz (Live sázkové streamy)
Co to je: živé přenosy u sázkových příležitostí. Jen pro přihlášené, podle hlášky Tipsportu jen pro „aktivní sázkaře".
2a. Jak se přistupuje- POST /rest/offer/v1/live/event-groups/matches (filtr videoStream:true) → seznam ID živých zápasů se streamem – bez přihlášení: 200 OK
- GET /rest/offer/v3/live/matches/{id}/patches → detail + poskytovatel (stream.source) – bez přihlášení: 200 OK
- GET /rest/offer/v2/live/matches/{id}/stream → vlastní URL streamu – bez přihlášení: 403, jen přihlášený
Seznam a poskytovatele zjistíš bez účtu. Samotnou URL streamu jen s přihlášením, a i tu stránka volá s parametrem &ipv4=<IP diváka>.
2b. Přihlášení a ochrany- Login přes BankID (oidc.bankid.cz) – server se nikdy nepřihlásí sám, cookies nutno vkládat ručně
- Cloudflare (cf_clearance, vázané na IP + UA) a F5 (TS01... cookies)
- ThreatMark behaviorální biometrie (js.c555.threatmark.com) – hodnotí, jestli účet ovládá člověk
- Sken localhost portů (127.0.0.1:7070, 63334) – hledá nástroje vzdálené plochy
- Dávka 66 požadavků účet odhlásila
Závěr: účet je pod silným antifraudem, automatizace je riziková, nízká frekvence nutná.
2c. Co víme o session- Cookies z prohlížeče ze serveru nefungují (403, jiná IP než cf_clearance)
- Cookies z prohlížeče fungují z domácí IP (Python) – ověřeno
- Parametr ipv4 Tipsport ignoruje – URL vždy vystaví na IP, ze které požadavek přišel
2d. Poskytovatelé (Tipsport jich má osm)
Rozložení z jednoho vzorku: BETBAZAR (23), SPORTRADAR (17), MANUAL (7), INFRONT (6), PERFORM_WB (4), LIVEBOX (3), SIS (2), IMG (1). Každý má vlastní CDN a vlastní tokeny.
- SPORTRADAR – CDN CloudFront – token s ip= přímo v cestě – vázaný na IP: ANO – ze serveru: 403/401 ✗
- PERFORM_WB (typ HLS) – CDN Akamai (744133.akamaized.net) – token hdnea 60 s → pak hdntl v cestě ~24 h – vázaný na IP: NE – ze serveru: ✓ (nutné hlavičky Referer/Origin tipsport)
- PERFORM_WB (typ URL_IFRAME) – Akamai přes přehrávač Performu – dvoukrokový token: Tipsport /stream-player/perform → csb.js → getToken na Performu → iframe → Akamai – nedokončeno (getToken vrací kód 103 = Invalid Match ID, správná jména parametrů zná jen běžící přehrávač)
- GENIUS – Akamai (geniuslive.geniussports.com) – widgetLoader?customerId=6092&fixtureId=X je veřejný, token hdnts 1 h → hdntl ~24 h – vázaný na IP: NE – ze serveru: ✓ (nutné Firefox UA + Origin/Referer Genius přehrávače), ale fixtureId se získá jen přes přihlášený /stream
- BETBAZAR, INFRONT, SIS, IMG, MANUAL, LIVEBOX – neověřeno
2e. Stream-player vrstva
Z JS přehrávače videotéky (0.cengeis_oon.js) tři endpointy podle poskytovatele:
- GET /rest/offer/v1/stream-player/perform?matchId=X → outletAuthKey, userId, fixtureUuid, livestreamUuid, accessToken, playerUrl (Perform CSB)
- GET + POST /rest/offer/v1/stream-player/geniuslive?matchId=X → konfigurace pro Genius
- GET /rest/offer/v1/stream-player/flussonic?matchId=X → source a streamWss (stream přes WebSocket)
Souhrn: co jde a co ne
Jde bez rizika: neplacený tv.tipsport.cz (záznamy, sestřihy). Token bez IP vazby, redirect, nulová zátěž serveru.
Teoreticky jde, ale přes přihlášený účet s rizikem: PERFORM_WB typ HLS a GENIUS – oba hratelné ze serveru, ale fixtureId/URL se získá jen přes přihlášený /stream, který funguje jen z domácí IP.
Nejde rozumně:- SPORTRADAR (17 zápasů, token vázaný na IP, server by musel téct celý stream přes domov)
- PERFORM_WB typ URL_IFRAME (dvoukrokový token Performu, nedokončeno)
- BETBAZAR a zbytek (neověřeno, každý jiný mechanismus)
Hlavní překážky placené části: BankID login (nejde automatizovat), antifraud (ThreatMark, Cloudflare, sken portů, odhlášení po dávce), osm různých poskytovatelů s různými tokeny, riziko blokace sázkového účtu.