test(player): nie wstrzykuj naszego skryptu na stronach z Turnstile

Kolejny podejrzany o negatywna weryfikacje Cloudflare: nasz wlasny INJECTED_JS.
Wstrzykujemy go PRZED zaladowaniem strony, a on podmienia gettery i settery na
prototypie HTMLMediaElement (wyciszanie autoplay) oraz usuwa elementy uznane za
reklamy. Turnstile potrafi uznac tak zmodyfikowane srodowisko za podejrzane.

Na hostach vikingfile konczymy teraz wykonanie zaraz po naszym bloku: zostaje tylko
podswietlenie ramki z zabezpieczeniem, meldunek needs_interaction i podsluch POST-a
z bezposrednim linkiem. Reszta patchy sie nie wykonuje. Na stronie pliku i tak nie
potrzebujemy ani wyciszania autoplay, ani ad-blocka.

To jest TEST HIPOTEZY, nie potwierdzona naprawa. Nie udalo mi sie odtworzyc bledu u
siebie: w Chrome na emulatorze, na tej samej sieci, weryfikacja przechodzi zarowno w
trybie mobilnym, jak i desktopowym. Do apki na emulatorze nie dojde ta scena, bo ma
duration NULL i w glownym feedzie jest ukryta progiem 60 s, a przez strone aktorki
trzeba by przewinac 701 pozycji.

Przy okazji: naprawiony pojedynczy backslash w regexie hosta (szablon go zjadal) i
zaktualizowany komentarz naglowkowy, ktory dalej opisywal chowanie strony, usuniete
dwie zmiany wczesniej.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
goon-foss 2026-08-22 21:35:42 +02:00
parent 2071b36311
commit 646f03d7be
2 changed files with 23 additions and 10 deletions

View file

@ -16,6 +16,13 @@ export type ChangelogEntry = {
};
export const CHANGELOG: ChangelogEntry[] = [
{
id: '2026-08-22f',
date: 'August 2026',
items: [
'Another attempt at hosts that ask you to confirm you are human: the app no longer runs its own ad-blocking and autoplay tweaks on those pages, in case the check was rejecting the modified page. If the confirm box still refuses you, long-press the source on the scene and open it in your browser, which does work.',
],
},
{
id: '2026-08-22e',
date: 'August 2026',

View file

@ -1156,16 +1156,15 @@ const INJECTED_JS = `
if (window.__goonPatched) return;
window.__goonPatched = true;
// -- 0. vikingfile: to STRONA PLIKU, nie goly odtwarzacz. UWAGA: serwis rotuje
// domena, vikingfile.com oddaje 302 na vik1ngfile.site, stad luzniejszy wzorzec. Galaxyporn przeniosl tam
// swoj katalog, a my podajemy ja do WebView, bo wideo odslania sie dopiero po
// recznym przejsciu zabezpieczenia Cloudflare. Bez tego bloku user widzi
// naglowek serwisu, nazwe pliku i stopke, a wlasciwy widget bywa pod zgieciem,
// wiec zglaszal to jako "loading, a potem pusta strona" (zgloszenie 21d6f5af).
// Zostawiamy wiec na ekranie WYLACZNIE widget i odtwarzacz, reszte chowamy.
// Gdy strona zdejmie z <video> klase hidden, chowamy tez widget i oddajemy
// obraz w calosci; dalej dziala zwykly scrape <source>, wiec i tak przeskoczymy
// na natywny odtwarzacz, gdy tylko pojawi sie adres pliku.
// -- 0. vikingfile: STRONA PLIKU, nie goly odtwarzacz. Galaxyporn przeniosl tam swoj
// katalog. Serwis rotuje domena (vikingfile.com oddaje 302 na vik1ngfile.site),
// stad luzniejszy wzorzec hosta.
//
// Robimy tu TYLKO trzy rzeczy: podswietlamy i przewijamy do ramki z
// zabezpieczeniem, meldujemy aplikacji, ze strona czeka na klikniecie, oraz
// podsluchujemy POST zwracajacy bezposredni link. NICZEGO nie chowamy: pierwsza
// wersja chowala oprawe strony i przy nierenderujacym sie widgecie zostawal
// czarny ekran, gorzej niz przed zmiana.
try {
if (/vik[i1]ngfile\\./i.test(location.hostname)) {
// UWAGA: NIE chowamy tu reszty strony. Pierwsza wersja robila dokladnie to i user
@ -1243,6 +1242,13 @@ const INJECTED_JS = `
return vkSend.apply(this, arguments);
};
}
// Na hosterze z zabezpieczeniem Cloudflare KONCZYMY tutaj. Ponizej patchujemy
// prototypy HTMLMediaElement i usuwamy elementy uznane za reklamy, a Turnstile
// potrafi uznac tak zmodyfikowane srodowisko za podejrzane i odrzucic weryfikacje
// (zgloszenie: "wywolanie cloudflare dziala, ale weryfikacja jest negatywna").
// Na stronie pliku i tak nie potrzebujemy ani wyciszania autoplay, ani ad-blocka,
// a bezposredni link i tak przechwytujemy podsluchem POST-a powyzej.
if (/vik[i1]ngfile\\./i.test(location.hostname)) return;
} catch (e) {}
// -- 0a. Mute autoplay until the FIRST user gesture (kills the unmuted-audio flash