fix(extractors): route 4k69 to WebView fallback after player migration

4k69 swapped its player from get_file (4kporno.xxx) to jwplayer + okcdn.ru, whose token
carries srcIp= (IP-bound); the site is also behind Cloudflare (VPS fetch only via proxy).
The native get_file extractor matched nothing and returned None, surfacing as a "host
problem" error even though the video plays fine (report 5de3fbc5). Switch 4k69com to
_vps_blocked_fallback: the on-device WebView (residential IP) clears Cloudflare, the
okcdn token binds to the phone IP, and INJECTED_JS hands the jwplayer source to ExoPlayer.
fourk69.extract stays in the module in case the site reverts to get_file.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jtrzupek 2026-06-14 11:17:18 +02:00
parent 9269b02a4c
commit 29da1fbaa6

View file

@ -181,10 +181,14 @@ _REGISTRY: dict[str, Callable[[str], list[StreamSource] | None]] = {
# Cross-IP test 2026-06-10: oba CDN-y portable (`ip=`/`srcIp=` nie egzekwowane), # Cross-IP test 2026-06-10: oba CDN-y portable (`ip=`/`srcIp=` nie egzekwowane),
# tokeny time-bound → on-demand fetch daje świeży URL. Mobile direct, zero proxy. # tokeny time-bound → on-demand fetch daje świeży URL. Mobile direct, zero proxy.
"hqfapcom": hqfap.extract, "hqfapcom": hqfap.extract,
# 4k69 — get_file (www.4kporno.xxx, rodzina fullmovies/hdporngg): binduje CDN do IP # 4k69 — 2026-06-14 PRZEPIĘTE na _vps_blocked_fallback (WebView). Strona zmigrowała
# fetchera → oddajemy niezresolwowane (mobile_direct), telefon follow-uje 302. # player z get_file (4kporno.xxx) na jwplayer + okcdn.ru z `srcIp=` w tokenie =
# Skip 2160p (CDN time-out). Cross-IP test 2026-06-10: 206 z lokalnego ISP. # IP-bound; plus 4k69 jest za Cloudflare (VPS fetch tylko przez proxy). Native
"4k69com": fourk69.extract, # extractor (get_file regex) zwracał None → "host problem" (zgłoszenie 5de3fbc5).
# WebView na telefonie: residential IP przechodzi CF, okcdn token bound do IP
# telefonu, INJECTED_JS łapie jwplayer video.src → ExoPlayer gra. fourk69.extract
# zostaje w module gdyby strona wróciła do get_file.
"4k69com": _vps_blocked_fallback.extract,
# neporn — KVS function/0 + license (jak freshporno). Server-side _kvs resolve → # neporn — KVS function/0 + license (jak freshporno). Server-side _kvs resolve →
# data001.neporn.com/remote_control.php portable (cross-IP 206, 2026-06-10). # data001.neporn.com/remote_control.php portable (cross-IP 206, 2026-06-10).
"neporncom": neporn.extract, "neporncom": neporn.extract,