infra/stacks/f1-stream/files/backend
Viktor Barzin da33919368 f1-stream: verifier — wrap m3u8 fetches through /proxy
The frontend already routes every m3u8 URL through `getProxyUrl` →
`/proxy?url=…` so CORS-restricted hosts work for users. The verifier
was the odd one out: it loaded m3u8 URLs directly into hls.js inside a
`data:` URL test page, which has Origin `null`. Hosts like
`oe1.ossfeed.store` (pitsport's playlist CDN) only set ACAO when the
request's Origin is `https://pushembdz.store`, so hls.js got an instant
`fatal_network_error` and every pitsport stream was marked dead even
though they play fine for real users.

Wrap the m3u8 URL the same way the verifier already wraps embed URLs:
`{PROXY_BASE}/proxy?url=<b64>`. Stays same-origin for hls.js, gets
ACAO:* from our proxy, and the rewritten variants are also proxy-wrapped
so subsequent fetches stay clean.

For sites whose CDN serves any IP without Origin tricks (stremio,
dd12), this is transparent — proxy just forwards.

Side effect: every verified m3u8 hits our proxy once during extraction.
Cheap (1 cluster-internal request + 1 upstream HEAD/GET) and only
during the 5/30-min extraction cycle.
2026-05-24 22:26:56 +00:00
..
extractors f1-stream: revive aceztrims + pitsport, more ppv variants 2026-05-24 22:05:37 +00:00
__init__.py
embed_proxy.py
health.py
m3u8_rewriter.py
main.py
playback_verifier.py f1-stream: verifier — wrap m3u8 fetches through /proxy 2026-05-24 22:26:56 +00:00
proxy.py
requirements.txt
schedule.py
stealth.py chrome-service: in-cluster headed Chromium pool for f1-stream verifier 2026-05-07 10:43:40 +00:00
token_refresh.py