fix(player): rodzina DoodStream, warstwy reklamowe nad playerem nie lapia juz stukniec

- DOOD_OVERLAY_JS (injectedJavaScript po zaladowaniu): fixed + z-index > 100000 bez
  Cloudflare -> pointer-events none, iframe sandbox/srcdoc usuwany; co 700 ms
- diagnoza devtools: pelnoekranowy div opacity 0.01 z z 2147463647, iframe reklamowy i
  pusty kwadrat 80x80 dokladnie na przycisku play; popunder u nas zablokowany, wiec
  warstwa nigdy nie znikala (zgloszenia e9fc12e8, 1278eb49)
- changelog 2026-09-14c, OTA 69b27e52 na 1.3

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
goon-foss 2026-09-14 15:40:42 +02:00
parent 656604e868
commit f28acf8f0d
2 changed files with 57 additions and 0 deletions

View file

@ -29,6 +29,13 @@ export type ChangelogEntry = {
}; };
export const CHANGELOG: ChangelogEntry[] = [ export const CHANGELOG: ChangelogEntry[] = [
{
id: '2026-09-14c',
date: 'September 2026',
items: [
'Movies on playmogo, myvidplay and doply: taps reach the play button again. The host lays an almost invisible ad layer over the player that swallows every tap; the app now disables it once the page has loaded. The human check, when it appears, is untouched.',
],
},
{ {
id: '2026-09-14b', id: '2026-09-14b',
date: 'September 2026', date: 'September 2026',

View file

@ -109,6 +109,55 @@ function isGoneError(msg: string | undefined | null): boolean {
return /\b(404|410)\b|response code:\s*4(0[14])|not found|gone/i.test(msg); return /\b(404|410)\b|response code:\s*4(0[14])|not found|gone/i.test(msg);
} }
// Rodzina DoodStreama (playmogo, dood*, myvidplay, doply): INJECTED_JS ich omija, zeby nie
// ruszac Turnstile. Ale po przejsciu wyzwania nad playerem zostaja warstwy sieci
// reklamowej: pelnoekranowy div fixed z z-index 2147463647 i opacity 0.01 (#d2bkrbp) plus
// iframe sandbox srcdoc z reklama. Kazde stukniecie trafia w nie, a nie w przycisk play.
// W zwyklej przegladarce pierwszy klik otwiera popunder i warstwa znika; u nas okna sa
// zablokowane (setSupportMultipleWindows=false), wiec warstwa zostawala na zawsze i film
// „nie gral" (zgloszenia e9fc12e8 i 1278eb49, diagnoza devtools 2026-09-14: video mialo
// juz src z cloudatacdn, readyState 0, trzy stukniecia bez efektu).
//
// Zdejmujemy tylko warstwy, ktore NIE sa Cloudflare (iframe challenges.cloudflare zostaje):
// fixed + z-index > 100000 i (prawie niewidoczne, albo iframe reklamowy, albo duze).
// Uruchamiane PO zaladowaniu strony (injectedJavaScript), co 700 ms, bo warstwy sa
// dokladane pozniej przez skrypty reklam.
const DOOD_OVERLAY_JS = `
(function () {
try {
if (!/vik[i1]ngfile\\.|playmogo\\.|dood|d0000d|dooood|do0od|do7go|ds2play|doply\\.|myvidplay\\./i.test(location.hostname)) return;
var isCf = function (el) {
try {
if ((el.src || '').indexOf('challenges.cloudflare') >= 0) return true;
if (el.querySelector && el.querySelector('iframe[src*="challenges.cloudflare"]')) return true;
} catch (e) {}
return false;
};
var sweep = function () {
var els = document.querySelectorAll('div,iframe,a,span');
for (var i = 0; i < els.length; i++) {
var el = els[i];
var s = getComputedStyle(el);
if (s.position !== 'fixed') continue;
var z = parseInt(s.zIndex || '0', 10);
if (!(z > 100000)) continue;
if (isCf(el)) continue;
// Kazda warstwa fixed z takim z-indexem, ktora nie jest Cloudflare, to lapacz
// klikniec sieci reklamowej: pelnoekranowy div opacity 0.01, iframe sandbox z
// reklama albo pusty przezroczysty kwadrat 80x80 polozony DOKLADNIE na przycisku
// play (diagnoza devtools 2026-09-14). Player hostera (video.js) nie uzywa fixed.
var adFrame = el.tagName === 'IFRAME' && (el.hasAttribute('srcdoc') || el.hasAttribute('sandbox'));
el.style.setProperty('pointer-events', 'none', 'important');
if (adFrame) { try { el.remove(); } catch (e) {} }
}
};
sweep();
setInterval(sweep, 700);
} catch (e) {}
})();
true;
`;
const DEFAULT_UA = const DEFAULT_UA =
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'; 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36';
@ -2090,6 +2139,7 @@ function EmbedWebViewPlayer({ params }: { params: RouteParams }) {
style={styles.video} style={styles.video}
userAgent={webViewUa} userAgent={webViewUa}
injectedJavaScriptBeforeContentLoaded={INJECTED_JS} injectedJavaScriptBeforeContentLoaded={INJECTED_JS}
injectedJavaScript={DOOD_OVERLAY_JS}
onMessage={onMessage} onMessage={onMessage}
onShouldStartLoadWithRequest={onShouldStartLoad} onShouldStartLoadWithRequest={onShouldStartLoad}
onLoadEnd={() => { onLoadEnd={() => {