fix(extractor/yespornvip): switch to WebView fallback - both URL paths fail

Previous attempts to extract direct stream URL from yesporn.vip flashvars both
turned out broken (verified 2026-05-30):
- video_url ('/get_file/7/'): requires PHPSESSID cookie from embed page session;
  standalone mobile fetch returns 404
- event_reporting2 ('/get_file/1/'): returns HTTP 200 but Content-Type: image/gif
  (1x1 analytics tracker pixel, not video)

Switch yespornvip -> _vps_blocked_fallback.extract. Mobile loads embed in WebView
with phone IP; kt_player JS decodes URL inside browser context (cookies + session
set properly); INJECTED_JS scrapes <video>.src and posts to ExoPlayer. UX flicker
(page renders before video) is the trade-off but aligns with no-video-proxy policy
(public-app bandwidth/anonymity priority).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
jtrzupek 2026-05-30 12:28:17 +02:00
parent 177a45eee7
commit a0481060f3

View file

@ -116,12 +116,18 @@ _REGISTRY: dict[str, Callable[[str], list[StreamSource] | None]] = {
# mobile dostaje proxy URL od razu, ExoPlayer gra bez WebView. # mobile dostaje proxy URL od razu, ExoPlayer gra bez WebView.
"porn00org": porn00.extract, "porn00org": porn00.extract,
"pornxpph": _vps_blocked_fallback.extract, "pornxpph": _vps_blocked_fallback.extract,
# yesporn.vip — KVS engine. flashvars `video_url: 'function/0/<get_file_url>'`, # yesporn.vip — KVS engine. Initial extractor probował dwóch ścieżek z
# function/0 to passthrough wrapper, URL po prefixie direct streamuje (480p). # flashvars, oba okazały się ślepe (2026-05-30 verify):
# Wymagało odrębnego extractora bo origin `tube:yespornvip` był w # - `video_url` (`/get_file/7/`) wymaga PHPSESSID z embed page session;
# playback_sources ale brak handlera w _REGISTRY → mobile no-source (bug-report # mobile fetch bez cookies → 404.
# 2026-05-27 "Yespornvip dalej nie działa"). # - `event_reporting2` (`/get_file/1/`) zwraca 200 OK ale `Content-Type:
"yespornvip": yespornvip.extract, # image/gif` — to 1px analytics tracker, NIE video.
# Switch na WebView fallback: mobile loaduje embed w WebView z phone IP,
# kt_player JS decoduje URL inside browser context (cookies + session set
# properly), INJECTED_JS scrapuje `<video>.src` po decode. UX flicker
# (page renderuje się przed video) vs bandwidth/anonimowość — public-app
# priorytet wygrywa (zob. [[feedback-no-video-proxy]]).
"yespornvip": _vps_blocked_fallback.extract,
# Direct-scraping tubes (mają też search scraper w connectors/direct_scrapers/) # Direct-scraping tubes (mają też search scraper w connectors/direct_scrapers/)
# — używają identycznego embed-iframe pattern dla streamingu. # — używają identycznego embed-iframe pattern dla streamingu.
# hdporn92com — DELISTED 2026-05-18. Scene pages to SEO shell bez player iframe, # hdporn92com — DELISTED 2026-05-18. Scene pages to SEO shell bez player iframe,