fix(playback): perverzija na nowy hoster, naughtymachinima re-resolve na reset
Dwa zgloszenia z apki, dwa rozne pierwotne powody. perverzija (zgloszenie af9be63a, 520 bledow "Input does not start with #EXTM3U", ZERO sukcesow): strona porzucila player xtremestream/xs1.php i osadza teraz mixdrop. Stare URL-e xs1.php oddaja HTML zamiast manifestu HLS, stad kazdy playback padal. Rejestr przelaczony z natywnego perverzija.extract na _embed_iframe.extract, ktory wyluskuje mixdrop i oddaje type='hoster' -> telefon resolwuje w WebView. Natywny ekstraktor zostaje w drzewie, gdyby xtremestream wrocil. UWAGA co do weryfikacji: mixdrop gejtuje odtwarzanie za adsco.re (antybot). Sprawdzone w prawdziwym Chrome na IP residential - MDCore.wurl zostaje null, zero requestu wideo, bo brama celuje w AUTOMATYZACJE. Dla realnego usera w WebView player mixdrop gra normalnie (to caly biznes mixdropa), ale nie dalo sie tego zautomatyzowac end-to-end. To i tak scisle lepsze niz obecny stan 100% martwy. naughtymachinima (zgloszenie ef728604 "od razu fallbackuje do strony, 502/429"): ekstraktor SPRAWNY, direct mp4 bez tokenu, IP-bound do residential (403 z datacenter, telefon gra). Telemetria 64 sukcesy / 19 bledow, blad to przejsciowy Connection reset z CDN na dzialajacym URL-u. Bez re-resolve pojedynczy reset od razu spychal na WebView, ktory ladowal zdlawiona strone tube'a - stad 502/429 w zgloszeniu. Dopisany do BACKEND_RERESOLVE_ORIGINS: przy bledzie odswieza polaczenie zamiast uciekac do WebView. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
0949091f78
commit
085c0c1dd6
3 changed files with 23 additions and 6 deletions
|
|
@ -219,11 +219,13 @@ _REGISTRY: dict[str, Callable[[str], list[StreamSource] | None]] = {
|
||||||
# 0dayxx + pornditt + pornhat, USUNIĘTE CAŁKOWICIE 2026-06-22 (user request): orphan
|
# 0dayxx + pornditt + pornhat, USUNIĘTE CAŁKOWICIE 2026-06-22 (user request): orphan
|
||||||
# factories (0-0.2% canonical match), zastępujemy lepszymi źródłami. Dane skasowane.
|
# factories (0-0.2% canonical match), zastępujemy lepszymi źródłami. Dane skasowane.
|
||||||
# CF-protected tube, curl_cffi w fetch_tube_html bypassa JA3, embed-iframe pattern.
|
# CF-protected tube, curl_cffi w fetch_tube_html bypassa JA3, embed-iframe pattern.
|
||||||
# perverzija, natywny HLS (2026-07-28). Player xtremestream ma w HTML tylko
|
# perverzija: BYŁ natywny HLS przez xtremestream/xs1.php (2026-07-28), ale strona
|
||||||
# preroll/midroll (grały w pętli, bug 40ec88cc/92e9133e), a wideo dociąga runtime:
|
# przeszła na mixdrop (2026-08-18: 520 błędów "Input does not start with #EXTM3U",
|
||||||
# xs1.php?data=<md5>&q=<480|720> zwraca GOTOWY manifest HLS z pełnymi URL-ami
|
# zero sukcesów, bo xs1.php oddaje już HTML zamiast manifestu). Teraz embed-iframe
|
||||||
# segmentów. Zamiast WebView oddajemy m3u8 wprost.
|
# wyłuskuje mixdrop i oddaje type='hoster' → telefon resolwuje w WebView (mixdrop
|
||||||
"perverzijacom": perverzija.extract,
|
# gejtuje reCAPTCHA v3 na IP datacenter, przechodzi dopiero z residential). Natywny
|
||||||
|
# ekstraktor `perverzija.py` zostaje w drzewie, gdyby xtremestream wrócił.
|
||||||
|
"perverzijacom": _embed_iframe.extract,
|
||||||
# Special: WebView-only (Yii2 session-bound player).
|
# Special: WebView-only (Yii2 session-bound player).
|
||||||
"paradisehillcc": paradisehill.extract,
|
"paradisehillcc": paradisehill.extract,
|
||||||
# PornDoe, dołączony 2026-05-21 (theporndude audit). Stream URL nie inline w
|
# PornDoe, dołączony 2026-05-21 (theporndude audit). Stream URL nie inline w
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,14 @@ export type ChangelogEntry = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: ChangelogEntry[] = [
|
export const CHANGELOG: ChangelogEntry[] = [
|
||||||
|
{
|
||||||
|
id: '2026-08-18b',
|
||||||
|
date: 'August 2026',
|
||||||
|
items: [
|
||||||
|
'naughtymachinima: a video that hit a brief server hiccup no longer drops you straight onto the site page (which was often rate-limited and showed an error). The app now grabs a fresh link and keeps playing.',
|
||||||
|
'perverzija: playback works again. The site switched video hosts, so every link was failing; the app now opens the new host.',
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: '2026-08-18',
|
id: '2026-08-18',
|
||||||
date: 'August 2026',
|
date: 'August 2026',
|
||||||
|
|
|
||||||
|
|
@ -319,7 +319,14 @@ function NativeVideoPlayer({ params }: { params: RouteParams }) {
|
||||||
// manifest w 0,4 s. Padał POJEDYNCZY nod CDN — kolejne wywołania resolve wracają
|
// manifest w 0,4 s. Padał POJEDYNCZY nod CDN — kolejne wywołania resolve wracają
|
||||||
// z RÓŻNYMI adresami (185.237.107.133, potem 203.188.166.163), więc ponowny resolve
|
// z RÓŻNYMI adresami (185.237.107.133, potem 203.188.166.163), więc ponowny resolve
|
||||||
// po prostu ląduje na żywym węźle. Token ma ~2,8 h TTL, czyli wygasanie to nie to.
|
// po prostu ląduje na żywym węźle. Token ma ~2,8 h TTL, czyli wygasanie to nie to.
|
||||||
const BACKEND_RERESOLVE_ORIGINS = ['tube:watchporn', 'tube:galaxyporncom'];
|
// naughtymachinima dopisany 2026-08-18 (zgłoszenie ef728604 „od razu fallbackuje do
|
||||||
|
// strony, z błędami 502 i 429"). Direct mp4 videos.naughtymachinima.com bez tokenu,
|
||||||
|
// IP-bound do residential (403 z datacenter, telefon gra), telemetria 64 sukcesy / 19
|
||||||
|
// błędów = 23% to przejściowy `Connection reset` z CDN na SPRAWNYM URL-u. Bez re-resolve
|
||||||
|
// pojedynczy reset od razu spychał na WebView, który ładował zdławioną stronę tube'a
|
||||||
|
// (stąd 502/429 w zgłoszeniu). Re-resolve otwiera świeże połączenie na tym samym URL-u,
|
||||||
|
// co ratuje transient reset, a gate wstrzymuje WebView-fallback póki nie skończy.
|
||||||
|
const BACKEND_RERESOLVE_ORIGINS = ['tube:watchporn', 'tube:galaxyporncom', 'tube:naughtymachinima'];
|
||||||
const canBackendReresolve =
|
const canBackendReresolve =
|
||||||
!!sceneId && !!params.playbackId && BACKEND_RERESOLVE_ORIGINS.includes(playOrigin ?? '');
|
!!sceneId && !!params.playbackId && BACKEND_RERESOLVE_ORIGINS.includes(playOrigin ?? '');
|
||||||
// Seek/decode recovery (bug f6c86847: doply/playmogo „invalid NAL length” przy
|
// Seek/decode recovery (bug f6c86847: doply/playmogo „invalid NAL length” przy
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue