chore(seekplayer): przestan przekazywac martwy cf_fallback
Zadanie bylo "podpiac albo usunac". Sprawdzone i NIE DA SIE podpiac.
Fallback za Cloudflare (svb.professionalvisibility.cyou/...cf-master.<ts>.txt)
oddaje 403 w szesciu wariantach:
httpx + Referer hostera httpx + Referer galaxyporn.net
curl_cffi chrome120 z Ref curl_cffi bez Ref (oddaje strone CF)
znacznik czasu biezacy znacznik z linku glownego
I to samo 403 z lacza RESIDENTIAL, wiec to nie blokada datacenter. Adres
jest najpewniej zwiazany z sesja tego samego wywolania /api/v1/video,
a my siegamy po niego osobno i po czasie (znacznik w nazwie pliku bywa
5 dni stary). Podpiecie dokladaloby request, ktory ZAWSZE pada, na
sciezce bledu — czyli opoznienie zamiast ratunku.
Cel, ktoremu mial sluzyc (przezyc padniety nod CDN), jest juz osiagniety
inaczej: ponowny resolve wraca z innym adresem CDN (47547fe).
`proxy_no_verify` ZOSTAJE mimo ze nic go nie czyta: zapisuje realne
ryzyko (cert niepasujacy do golego IP), a jego usuniecie skasowaloby te
informacje. Falszywy komentarz o istniejacej galezi `verify=False` juz
poprawiony.
Wszystkie szesc prob zapisane w docstringu, zeby nikt ich nie powtarzal.
Kontrola po zmianie: extractor oddaje m3u8, proxy 200.
This commit is contained in:
parent
47547fe694
commit
f70082e7de
1 changed files with 21 additions and 7 deletions
|
|
@ -139,7 +139,6 @@ def extract(page_url: str, *, timeout: float = 30.0) -> list[StreamSource] | Non
|
|||
raise HosterDead(f"seekplayer-engine {page_url}: {data['error']}")
|
||||
|
||||
source = (data.get("source") or "").strip()
|
||||
cf = (data.get("cf") or "").strip()
|
||||
|
||||
# Source: m3u8 na CDN edge pod GOŁYM IP (np. `185.237.107.146/v4/<sig>/<exp>/…/master.m3u8`).
|
||||
# Token ma ~2,8 h TTL i NIE jest związany z IP (sprawdzone 2026-08-14), a węzły
|
||||
|
|
@ -147,11 +146,27 @@ def extract(page_url: str, *, timeout: float = 30.0) -> list[StreamSource] | Non
|
|||
# padnięcie odtwarzania na tym źródle leczy się ponownym resolve, a nie WebView-em
|
||||
# (`BACKEND_RERESOLVE_ORIGINS` w PlayerScreen).
|
||||
#
|
||||
# UWAGA: `proxy_no_verify` i `cf_fallback` niżej NIE SĄ przez nic czytane. Wcześniejszy
|
||||
# komentarz twierdził, że `stream_proxy.py` ma gałąź `verify=False` dla hostów-IP —
|
||||
# nie ma jej, w tym pliku nie występuje słowo `verify` ani razu. W praktyce certyfikaty
|
||||
# tych węzłów przechodzą weryfikację (fetch przez proxy oddaje 200), więc to flagi
|
||||
# informacyjne, nie działające przełączniki.
|
||||
# `proxy_no_verify` NIE JEST przez nic czytane. Wcześniejszy komentarz twierdził, że
|
||||
# `stream_proxy.py` ma gałąź `verify=False` dla hostów-IP — nie ma jej, w tym pliku nie
|
||||
# występuje słowo `verify` ani razu. W praktyce certyfikaty tych węzłów przechodzą
|
||||
# weryfikację (fetch przez proxy oddaje 200), więc flaga jest informacyjna. Zostaje,
|
||||
# bo zapisuje realne ryzyko: gdyby któryś nod zaczął serwować cert niepasujący do IP,
|
||||
# trzeba będzie tę gałąź dopisać.
|
||||
#
|
||||
# `cf` (fallback za Cloudflare) CELOWO NIE JEST PRZEKAZYWANY DALEJ. Sprawdzone
|
||||
# 2026-08-14, sześć wariantów, wszystkie 403:
|
||||
#
|
||||
# httpx + Referer hostera · httpx + Referer galaxyporn.net
|
||||
# curl_cffi chrome120 z Refererem · curl_cffi bez Referera (oddaje stronę CF)
|
||||
# znacznik czasu bieżący · znacznik z linku głównego
|
||||
#
|
||||
# I to samo 403 z łącza RESIDENTIAL, więc to nie jest blokada datacenter. Adres jest
|
||||
# najpewniej związany z sesją tego samego wywołania `/api/v1/video`, a my sięgamy po
|
||||
# niego osobno i po czasie (znacznik w nazwie pliku bywa 5 dni stary). Podpięcie go
|
||||
# jako zapasowego źródła dokładałoby request, który ZAWSZE pada, na ścieżce błędu.
|
||||
#
|
||||
# Padnięcie pojedynczego noda leczy ponowny resolve: kolejne wywołania wracają z
|
||||
# różnymi adresami CDN (`BACKEND_RERESOLVE_ORIGINS` w PlayerScreen, commit 47547fe).
|
||||
sources: list[StreamSource] = []
|
||||
if source:
|
||||
sources.append(
|
||||
|
|
@ -162,7 +177,6 @@ def extract(page_url: str, *, timeout: float = 30.0) -> list[StreamSource] | Non
|
|||
referer=f"{host}/",
|
||||
raw={
|
||||
"proxy_no_verify": True,
|
||||
"cf_fallback": cf or None,
|
||||
"engine": "seekplayer",
|
||||
},
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue