From 9a789a8551deda031b1af3961bc58b23a8e6276d Mon Sep 17 00:00:00 2001 From: jtrzupek Date: Thu, 25 Jun 2026 10:57:33 +0200 Subject: [PATCH] =?UTF-8?q?fix(extract):=20perverzija=20xtremestream=20?= =?UTF-8?q?=E2=86=92=20hoster/WebView=20(was=20bogus=20mp4,=20hung=20playe?= =?UTF-8?q?r)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _embed_iframe returned xtremestream's player endpoint (player/xs1.php?data=) labeled type=mp4, but it's an IP-bound JS player page (403 cross-IP), not a real file — the native player loaded it forever ("perverzija nie działa" / "loading w nieskończoność"). Added xtremestream.* to _IP_BOUND_CDN_RE so Stage 1 skips it and falls through to the hoster fallback: the phone WebView loads the index.php player with its residential IP and the stream plays in-session. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/extractors/tubes/_embed_iframe.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/extractors/tubes/_embed_iframe.py b/app/extractors/tubes/_embed_iframe.py index d7deca9..32bbc26 100644 --- a/app/extractors/tubes/_embed_iframe.py +++ b/app/extractors/tubes/_embed_iframe.py @@ -215,6 +215,12 @@ _IP_BOUND_CDN_RE = re.compile( r"premilkyway\.com" # latestpornvideo r"|tnmr\.org" # mypornerleak (legacy CDN) r"|acek-cdn\.com" # mypornerleak (current CDN, shared KVS infra) + # xtremestream.xyz (perverzija) — `player/xs1.php?data=` to NIE direct mp4 tylko + # IP-bound player endpoint (403 cross-IP z VPS). Stage 1 zwracał go jako type=mp4 + # → natywny player ładował HTML-player w nieskończoność (reports 06-24 "perverzija + # nie działa"/"loading w nieskończoność"). Skip → hoster fallback: WebView ładuje + # index.php playera z residential IP telefonu, xs1.php gra w jego sesji. + r"|xtremestream\.[a-z]{2,8}" # URL signature shared across these CDNs: `/hls2///.../master.m3u8?t=&s=&e=&srv=&asn=` # — `asn` query param = Autonomous System Number bind. Generic match jako safety net. r")\b",