From 58b355b6b527a6c8c50c793b5e4e3e743dcded89 Mon Sep 17 00:00:00 2001 From: jtrzupek Date: Tue, 2 Jun 2026 21:41:38 +0200 Subject: [PATCH] =?UTF-8?q?fix(pornhub):=20WebView=20fallback=20=E2=80=94?= =?UTF-8?q?=20yt-dlp=20gets=20403=20from=20VPS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hoster sweep (2026-06-02) found pornhub resolving to 0 sources: yt-dlp (current, 2026.03.17) gets HTTP 403 fetching the watch page from the Hetzner VPS, while the other yt-dlp tubes (xvideos/xnxx/youporn/redtube) still work — so it's a Pornhub-specific block of the server IP, not a yt-dlp regression. Route pornhub through the WebView fallback so it plays from the phone's residential IP, same as xhamster. 7.3k scenes affected. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/extractors/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/extractors/__init__.py b/app/extractors/__init__.py index e2f23ad..c1b62fa 100644 --- a/app/extractors/__init__.py +++ b/app/extractors/__init__.py @@ -67,7 +67,11 @@ _REGISTRY: dict[str, Callable[[str], list[StreamSource] | None]] = { # NB: 2026-05-18 cross-IP test potwierdził że xvideos/xnxx/pornhub/youporn/redtube # CDN URLs są **time-bound** (nie IP-bound) — mobile_direct_ok auto-detect w # playback.py daje mobile direct fetch, zero VPS bandwidth. - "pornhubcom": _ytdlp.extract, + # pornhub — 2026-06-02: yt-dlp z VPS dostaje HTTP 403 (Pornhub blokuje Hetzner IP; + # yt-dlp aktualny, inne yt-dlp tuby działają → blok specyficzny dla PH). WebView + # fallback gra z residential IP telefonu (jak xhamster). Wcześniej `_ytdlp.extract` + # zwracał 0 źródeł → "nie działa odtwarzanie". + "pornhubcom": _vps_blocked_fallback.extract, "redtubecom": _ytdlp.extract, "xvideoscom": _ytdlp.extract, "xnxxcom": _ytdlp.extract,