Reguły JavaScript JustZix działają teraz nawet na Facebooku, X i GitHubie
Strony, na których JS userscriptów się rozsypywał — Facebook, X, GitHub i wiele innych z restrykcyjną Content-Security-Policy — były dotąd wąskim gardłem także dla JustZix. W wersji 3.2.0 zmieniliśmy silnik wykonywania kodu tak, by przebił tę barierę bez sztuczek i bez kompromisów dla pozostałych stron. Oto co robi i dlaczego.
Co właściwie blokował CSP
Content-Security-Policy z dyrektywą script-src bez słów 'unsafe-eval' i 'unsafe-inline' mówi przeglądarce: „nie wykonuj kodu zbudowanego z tekstu". To ta polityka blokuje klasyczne new Function('...kod...')(), którym do v3.1.x JustZix uruchamiał JS reguł i akcji w świecie MAIN. Strona, którą najmocniej dotykało to ograniczenie, to facebook.com — od miesięcy w naszym backlogu pod hasłem „nie da się".
Trzy ścieżki, jedna decyzja
W v3.2.0 wprowadziliśmy warstwową strategię — wtyczka próbuje kolejne ścieżki, aż któraś zadziała:
chrome.userScripts.execute— natywne API skryptów użytkownika z Manifestu V3. Wykonuje kod jako string poza światem CSP strony, więc działa wszędzie, łącznie z najtwardszymi politykami. Wymaga uprawnieniauserScriptsw manifeście (mamy je) oraz jednorazowego przełącznika „Zezwól na skrypty użytkownika" w ustawieniach rozszerzeń przeglądarki (sami klikacie, sami kontrolujecie).new Function— szybka, klasyczna ścieżka, gdy CSP strony dopuszcza'unsafe-eval'. Większość typowych stron na to pozwala (Google, YouTube, Reddit, Wikipedia, sklepy internetowe), więc 99% Twoich reguł nadal idzie tą drogą bez żadnej konfiguracji.<script src="blob:…">— fallback, który tworzy lokalny Blob URL i wstrzykuje go jako klasyczny tagscript. Działa, gdy CSP strony dopuszczablob:wscript-src— co robi m.in. facebook.com. Pozwala zadziałać nawet wtedy, gdy użytkownik nie włączył jeszcze „Skryptów użytkownika".
Co to znaczy w praktyce
Reguły JS, akcje JustZix oraz okna TEMP JS i JS Console działają teraz na stronach, na których wcześniej rzucały EvalError:
- facebook.com — fallback blob-script, bez żadnej konfiguracji;
- x.com / twitter.com, github.com, części stron bankowych — pełne wsparcie po jednorazowym włączeniu „Skryptów użytkownika";
- cała reszta sieci — bez zmian, klasyczne
new Functionjak dotąd.
Jeśli żadna ścieżka nie zadziała (rzadkie, wymaga równoczesnego zakazu 'unsafe-eval' oraz blob:), okna JS pane i JS Console pokazują czytelny komunikat z instrukcją „włącz Skrypty użytkownika" w 8 językach. Po jednym kliknięciu w ustawieniach reszta jest automatyczna.
Jak włączyć „Skrypty użytkownika"
- Chrome / Edge / Opera:
chrome://extensions→ włącz „Tryb dewelopera" (prawy górny róg) → znajdź JustZix → włącz przełącznik „Zezwól na skrypty użytkownika". - Firefox:
about:addons→ JustZix → przycisk „Ustawienia" → włącz opcję skryptów użytkownika.
Zgoda zostaje zapamiętana raz na zawsze. Nie wprowadziliśmy własnego ekranu zgody — to świadoma decyzja w ustawieniach przeglądarki, nie zaskakujący prompt z naszej strony.
Dlaczego to różnica względem konkurencji
Wtyczki userscript w stylu Tampermonkey/Violentmonkey wymagają od strony, by przepuściła 'unsafe-eval', albo polegają na własnym sandboxie z eval. JustZix ma trzy ścieżki, więc tam, gdzie one rzucają „CSP error" i czekają na łaskę autora strony, my po cichu wybieramy ścieżkę alternatywną. To największa pojedyncza zmiana architektoniczna od początku projektu — i ta, dzięki której katalog gotowców dla Facebooka, X i GitHuba nareszcie ma sens.
Zobacz też
- Wstrzykiwanie CSS i JavaScript — co jeszcze potrafi silnik reguł
- Hook Output Console na stronach CSP-strict — analogiczna historia dla logów
- JustZix kontra Tampermonkey — pełne porównanie
Zainstaluj JustZix — i pisz reguły na facebook.com bez wymówek.
Oceń ten wpis
Brak ocen — oceń jako pierwszy.