fix(player): skip VAST preroll ad mp4s in WebView stream scrape

WebView-fallback hosts (pornditt, xhamster, 0dayxx, sxyland, fpoxxx, porndoe)
inject a VAST preroll ad video (trafostatic.com / bkcdn.net / gripi.online / ...)
that loads before the real content. The INJECTED_JS performance scrape grabbed
that ad mp4 and handed it to ExoPlayer, so the native player showed the 30s ad
instead of the video (user bug: "pornditt łapie reklamę zamiast video").

report() now calls isAdHost() and skips ad-network video URLs; extended AD_HOSTS
with the video-ad CDNs. Content CDNs (sacdnssedge etc.) still pass through.
Shipped via OTA runtime 1.1 (update ea4b9901).

NOTE: this fixes ad-scraping for the WebView class generally, but pornditt itself
is separately broken — its content get_file fails to load even in a real desktop
browser from a residential IP (MEDIA_ERR code 4; only the ad mp4 loads) and its
player config is dynamic/obfuscated (no inline flashvars to resolve server-side).
pornditt effectively unplayable for now — see task; deprioritize / fall back to
other sources. yespornvip (clean backend resolve) is unaffected by this.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
jtrzupek 2026-06-01 10:24:17 +02:00
parent fbfe2b2bf4
commit 31d9076f27

View file

@ -688,6 +688,11 @@ const INJECTED_JS = `
// Popunder networks często widywane na DoodStream-rebranding hostach
'ib.hoirms.com','traffichaus.com','plugrush.com','clickadu.com',
'redirectvoluum.com','clickaine.com','hilltopads.net','popshq.com',
// VIDEO-ad CDN/VAST preroll (mp4) — KVS hosty (yespornvip/pornditt) wstrzykują
// preroll który scrape inaczej łapie zamiast contentu. 2026-06-01.
'trafostatic.com','bkcdn.net','gripi.online','dipi.online','tsyndicate.com',
'marzaent.com','yomeno.xyz','cdn-fc.com','tapioni.com','fh-wgt.com',
'xlivrdr.com','dynspt.com','svtrck.site','urlhaus.com',
];
const isAdHost = function(url) {
if (!url) return false;
@ -915,6 +920,7 @@ const INJECTED_JS = `
if (!VIDEO_RE.test(url)) return;
if (INTERMEDIATE_RE.test(url)) return; // KVS get_file — niegrywalny standalone
if (PREVIEW_RE.test(url)) return; // scrubber preview / heatmap clip
if (isAdHost(url)) return; // VAST preroll mp4 (trafostatic/bkcdn/...) — NIE content
seen.add(url);
try {
window.ReactNativeWebView.postMessage(JSON.stringify({type: 'video_url', url: url}));