User: "hdporngg loading forever". DevTools + cross-IP investigation (not guessing): - site is alive (sample scenes 200; the one earlier 404 was a single removed video, not the site — my earlier "site dead" was a hasty generalization). - both are the same platform (<source src=.../get_file/8512/...mp4>), no function/0. - the get_file 302 is fast (~100ms) but the 2160p/4K source on fpvcdn.com TIMES OUT (~30s); 720p/480p resolve in ~1s. The player loading 4K first = the "loading forever". - the final fpvcdn URL embeds the requester IP (ip=<fetcher>) -> IP-bound to whoever resolves it; BUT the get_file itself is stateless (fresh session works) and valid >=90s, and binds fpvcdn to the fetcher. So a VPS resolve would bind to the VPS IP (mobile 403), but returning the get_file URL UNRESOLVED lets the phone follow the 302 itself -> fpvcdn binds to the phone IP -> plays. Fix: new _source_getfile resolver returns get_file URLs as mobile_direct (skip 4K), phone resolves the 302 in-session. Native, multi-quality, no WebView, no proxy. Replaces fullmovies' old force_proxy+4K extractor and the WebView fallback for both. Backend-verified: resolve -> 720/480 mobile_direct, get_file fresh fetch -> 206. Pending on-device confirmation (emulator unstable; same mechanism as porn00/freshporno which work). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
17 lines
778 B
Python
17 lines
778 B
Python
"""hdporn.gg — `<source>/get_file` tube z IP-bound fpvcdn. Patrz _source_getfile.py.
|
|
|
|
Bug: „hdporngg loading który trwa nie wiadomo ile". Przyczyna (DevTools 2026-06-04):
|
|
player ładował 2160p/4K jako pierwsze, a 4K source na fpvcdn time-outuje (~30s); 720/480p
|
|
grają w ~1s. Oddajemy niezresolwowany get_file (mobile sam follow-uje 302 → fpvcdn z IP
|
|
telefonu, bo CDN jest IP-bound do fetchera) i POMIJAMY 4K. Native, multi-quality, bez WebView.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from app.extractors._models import StreamSource
|
|
from app.extractors.tubes import _source_getfile
|
|
|
|
_BASE = "https://www.hdporn.gg"
|
|
|
|
|
|
def extract(page_url: str, *, timeout: float = 30.0) -> list[StreamSource] | None:
|
|
return _source_getfile.resolve(page_url, _BASE, timeout=timeout)
|