Od jakiegoś czasu krążyła mi po głowie myśl, żeby zrobić wpis pokazujący trochę ciemnych stron przeglądarki Firefox.

Mówię to jako jej wieloletni użytkownik, a zarazem krytyk Google’a, wobec którego Firefox jest prywatniejszą, przyjazną alternatywą. Zresztą pozostaję stały w poglądach. Nadal planuję używać Lisa i punktować Wujka G… Ale na niektóre rzeczy wolę nie przymykać oka.

W każdym razie to jeszcze nie będzie ta przekrojowa krytyka. Pokażę tylko jedną dziwną akcję Firefoksa, która ostatnio zirytowała grono użytkowników. Prowadząc nawet do powstania tytułowej stronki, Make Firefox Private Again.

Najpierw będzie część bardzo lekka, czyli przybliżenie afery i proste rzeczy, które warto sobie wyklikać w opcjach, żeby wyłączyć reklamowe nowinki.

Potem będzie szczypta techniki. Omówię, na czym polegają skrypty ze stronki, która mnie do wpisu zainspirowała. Ale na tyle przystępnie, żeby było to strawne dla osób spoza cyfrowej bańki, za to obdarzonych ciekawością świata.

Zapraszam!

Mężczyzna z mema, mający zamiast głowy logo przeglądarki Firefox, kieruje się ku lewej stronie kadru, gdzie widać las jaskrawych billboardów. Zatrzymuje go ręką drugi mężczyzna, oznaczony jako wyłączona opcja dopasowywania reklam.

Źródło: popularny mem na podstawie reklamy Gillette, logo Firefoksa, billboardy wygenerowane przez Binga. Aranżacja moja.

Spis treści

Część całkiem nietechniczna

Zwrot Firefoksa ku reklamom

Zacznę od ogólnych informacji z nowopowstałej stronki, Make Firefox Private Again (będę czasem skracał do MFPA).
Autor, uzasadniając jej powstanie, linkuje między innymi do wpisu z oficjalnego bloga Mozilli, firmy tworzącej Firefoksa.

Wpis wspomina o tym, że Firefox zaczął współpracę z firmą Meta nad nowym modelem reklam, rzekomo „szanujących prywatność”.

Advertising provides critical support for the Web. We’ve been looking to apply privacy preserving advertising technology (…)
For the last few months we have been working with a team from Meta (formerly Facebook) on a new proposal that aims to enable conversion measurement – or attribution – for advertising called Interoperable Private Attribution, or IPA.

Gdyby chodziło o zwykłe, „martwe” obrazki, dodawane do stron internetowych na wzór plakatów i billboardów, to jeszcze pół biedy. Ale mowa o tzw. reklamach śledzących, które analizują działania użytkowników i dopasowują się do nich.

Firefox ramię w ramię z Facebookiem, w interesie reklamodawców? Gorzka coś ta IPA i trudna do przełknięcia.
Ale czemu nie zaciekawiło to innych, czujniejszych ode mnie osób? Nie wznieciło ognia buntu, choć post ma już swoje lata, pochodzi z 2022 roku?

Może dlatego, że firma Mozilla z wieloma rzeczami eksperymentowała. Pocket, Mozilla Location Services, Deepspeech od komputerowego rozpoznawania mowy, wirtualna rzeczywistość, że tak wymienię parę przykładów. Nie wszystkie doprowadzili do końca, z niektórych się wycofali. Eksperymenty z reklamami mogły zostać uznane za jedną z takich inicjatyw i przemknąć bez protestów.

Ogólnikowo o nowej propozycji: ma polegać na tym, że przeglądarka będzie stała między użytkownikami a reklamodawcami okupującymi wiele stron internetowych. Ma im ujawniać na życzenie pewne informacje o skuteczności reklam. Ponoć jedynie zagregowane, uśrednione dla większych grup osób.

W ten sposób reklamodawcy nie powinni być w stanie ustalić: „ta osoba była wcześniej na stronach X i V, a na stronie Z podała swoje imię i nazwisko, czyli…”, jak to obecnie mogą zrobić, opierając się głównie na plikach cookies (tutaj dokładniejszy opis tej metody śledzenia).

Zmiana na lepsze? Nie jestem przekonany. Podejście Mozilli wydaje się opierać na appeasemencie, ugłaskaniu reklamodawców. Zakłada, że wybiorą wygodną opcję zamiast tradycyjnego, inwazyjnego śledzenia.
Tymczasem dotychczasowa zachłanność ad techu sugerowałaby raczej, że będą zbierali, co tylko się da (jak nie przez pliki cookies, to przez bardziej inwazyjne metody). A łagodniejszych reklam od Firefoksa użyją oprócz tego.

Gdy nie pytasz, to nie odmówią

Nawet gdybym widział potencjał w samej strategii… Za nic nie mogę zaakceptować innej rzeczy, o której autor Make Firefox… akurat nie napisał. W ramach ostatniej aktualizacji Firefox domyślnie włączył eksperymentalny model reklam, nie informując użytkowników.

Nie było żadnego pytania o zgodę. Ba, nie było nawet informacji o fakcie dokonanym. Mimo że po każdej aktualizacji pojawia się zwięzły ekran z informacjami, który byłby idealnym miejscem na wzmiankę.
Po prostu wśród opcji programu po aktualizacji do wersji 128 pojawiła się nowa. Domyślnie włączona.

Jeśli dodać do tego parę innych faktów – jak to, że firma Mozilla zwolniła parę lat temu część ekipy od przeglądarki, podczas gdy pani prezes podwyższyła sobie wynagrodzenie do poziomów kilkumilionowych – to zrozumiałe stają się obawy przed możliwą korporatyzacją Firefoksa.

Ciekawostka

Stronka MFPA linkuje też do artykułu z portalu The Register z czerwca tego roku. Wspomina on o zakupie przez Mozillę firmy Anonym, zajmującej się właśnie „prywatnymi reklamami”.
Z drugiej strony dyrektor ds. technicznych z Mozilli wypowiedział się na forum Reddit i pisze wprost, że dodany chyłkiem „prywatny pomiar reklam” nie ma związku z zakupem Anonyma.
W związku z tym proponuję potraktować tę sprawę jako wątek poboczny. Który jednak potwierdzałby tezę, że Firefox wyszedł w sprawie reklam poza luźne eksperymenty.

W internecie pojawiło się sporo poradników mówiących, w jaki sposób wyłączyć nową opcję. Jedno z rozwiązań zaproponował autor Make Firefox….
Jest ono jednak nieco bardziej hakierskie i działa tylko na systemie Linux. Dlatego zostawię je na potem. Póki co opiszę, jak osiągnąć niemal ten sam efekt w parę kliknięć, przez ustawienia samego Firefoksa.

Wyłączanie nowych ustawień

Na szczęście Firefox nie robi żadnych problemów z wyłączeniem nowej opcji. Wystarczy kliknąć w ikonę trzech kresek w górnym prawym rogu, a potem wejść w Ustawienia.

Zrzut ekranu pokazujący górny prawy róg programu Firefox oraz opcje, jakie należy kliknąć

Następnie po lewej stronie należy kliknąć zakładkę Prywatność i bezpieczeństwo.

Zrzut ekranu pokazujący zaznaczony na niebiesko tekst 'Prywatność i bezpieczeństwo'

Na koniec trzeba znaleźć i odhaczyć odpowiednią funkcję.

Zrzut ekranu z opcji, pokazujący wyłączoną funkcję dopasowywania reklam

I tyle! Co pewien czas, zwłaszcza po aktualizacji, można dla pewności sprawdzać, czy Mozilla przypadkiem nie przywróciła opcji. Gdyby to zrobili, to już oficjalnie poszliby w ślady Microsoftu czy Google’a.

Sposób alternatywny

Firefox pozwala zmieniać swoje ustawienia na kilka sposobów. Żeby osiągnąć ten sam efekt co wyżej, ale potencjalnie trwalszy (opisana wyżej opcja stała się u mnie szara, nieklikalna), można również:

  • wpisać w górny pasek, tam gdzie są zwykle adresy stron, about:config,
  • zamknąć jednym kliknięciem rutynowe ostrzeżenie,
  • zacząć wpisywać obok ikony lupy
    dom.private-attribution.submission.enabled
    (już po kilku pierwszych literkach na ekranie powinna pozostać jedyna pasująca opcja),
  • kliknąć opcję, aby zmieniła wartość na false.

Na tym koniec części najważniejszej dla codziennych użytkowników. Ale zachęcam do pozostania ze mną, mimo że pojawi się teraz odrobina konsoli. Zawsze to jakiś wgląd do Firefoksa oraz świata automatyzacji i zlecania brudnej roboty skryptom :smile:

Przystępna część techniczna

Ogólnie o stronce

Adres stronki to, przypomnę, https://make-firefox-private-again.com/.
Po jej załadowaniu ukazuje się prosty, czarny tekst na białym tle. Nietypowa, prosta szata graficzna? Nie; to tak naprawdę plik tekstowy. Skrypt w języku Bash.

Uwaga

Choć sam autor o tym nie wspomina, takie skrypty są przeznaczone z założenia dla systemu Linux. Dlatego żadna z instrukcji nie zadziałałaby na zwyczajnym Windowsie.
Poza tym skrypt nie zadziałałby też na smartfonach z Androidem, wewnątrz apki Termux. Choć jest tam konsola i potrzebne programiki, przeszkodą są zabezpieczenia Androida. Aplikacje nie mogą ingerować w wewnętrzne pliki innych aplikacji. A skrypt ze strony musi zajrzeć do folderów Firefoksa, żeby zadziałać.

Raczej nikogo nie zdziwi fakt, że przeglądarka umie otwierać inne rzeczy niż strony internetowe. W końcu może otwierać nawet pliki PDF, jak ten losowy przykład. O ile ktoś ręcznie nie zmieniał opcji, to takie pliki wyświetlą się w trybie specjalnie pod PDF-y. W prostym czytniku.

Zaskakiwać może natomiast fakt, że górny pasek nie sugeruje żadnego pliku tekstowego. Jest tam tylko adres: https://make-firefox-private-again.com/.

To dlatego, że ścieżka z górnego paska jest tak naprawdę czymś innym, niż w świadomości codziennych użytkowników.
Intuicyjnie można powiedzieć, że przeglądarka mówi górnym paskiem: „oto, o co poprosiłam czyjś serwer”. Reszta ekranu, pod paskiem, wskazuje z kolei: „oto rzecz, którą dostałam w odpowiedzi, plus wszystkie elementy powiązane”.
Zwykle między tymi dwiema rzeczami jest zgodność. Ale nie zawsze.

Ciekawostka

W naturze trafiają się też odwrotne sytuacje – gdy link sugeruje nietypowy plik, a dostajemy zwykłą stronę internetową.
W przypadku Facebooka niektóre linki kończą się na przykład na profile.php (plus zwykle dodatkowe parametry po znaku zapytania). A jednak po kliknięciu nasza przeglądarka wyświetla nie skrypt w języku PHP, tylko jakąś stronę internetową.

Wyświetlony skrypt jest dość krótki, więc dla wygody załączam jego screena:

Oznaczona kolorami, pełna treść skryptu ze strony Make Firefox Private Again. Poza pierwszymi dwoma linijkami wszystko jest zaznaczone na niebiesko, jako komentarze

Źródło: cała zawartość Make Firefox Private Again. Kolorowanie składni w programie Gedit. Górne linijki rozpoczynające się słowem echo są zawinięte dla czytelności, ale tak naprawdę są tylko dwie.

Najważniejsza informacja na początek – za podstawową jednostkę w skryptach Basha można uznać linijki tekstu. W każdej z tych linijek tekst po krzyżyku (#) to komentarz, który zostanie przez konsolę zignorowany. Jest przeznaczony dla czytelników.

Wniosek? Skrypt składa się tak naprawdę tylko z dwóch linijek. Tych u góry. Reszta to czytelne instrukcje dla użytkownika. Dobrze to widać, jeśli otworzy się plik w jakimkolwiek programie rozpoznającym i kolorującym składnię, jak Gedit z przykładu wyżej.

Echo

To teraz czas omówić te dwie linijki. Zacznę od drugiej, krótszej:

echo 'Restart Firefox for the change to have effect'

Pierwsza po lewej jest nazwa programu – echo.
Potem jest spacja, która oddziela nazwę programu od argumentów, czyli wrzucanych do niego rzeczy.
Na końcu jest tekst, który można poznać po obecności cudzysłowów na początku i końcu. Jest traktowany jak pojedynczy element, niepodzielny i nierozbijany na spacjach.

Konsola jest miejscem, w którym można wpisywać nazwy programów albo wrzucanych do nich rzeczy, ewentualnie specjalne zmienne. Nic więcej. Jeśli wpisze się luzem nazwę, której nie ma w bazie rzeczy dopuszczalnych, to wyskoczy błąd.

Jak zatem wprowadzić do konsoli zwykły tekst, niemający dla niej specjalnego znaczenia? Trzeba go przemycić jako „wsad” do któregoś z dozwolonych programów. Wiele osób, tak jak autor stronki w tym skrypcie, wykorzystuje do tego celu Echo. Minimalistyczny program, który po prostu podaje tekst dalej.

Przy prostej postaci echo TEKST nie będą się z tym tekstem działy żadne szczególne rzeczy. Przeleci sobie przez „układ pokarmowy” konsoli i trafi do wyjścia. Najczęściej: wyświetli się na ekranie.

Wniosek? Linijka druga oznacza po prostu, że po wykonaniu linijki pierwszej wyświetli się tekst „Restart Firefox for the change to have effect”.

Uproszczenie pierwszej linijki

Linijka numer jeden jest dużo dłuższa! Pojawiają się w niej aż cztery programy: echo, tee, grep, cut, do tego rura (|), do tego parę zmiennych, zagnieżdżone w sobie cudzysłowy, ukośniki…

echo 'user_pref("dom.private-attribution.submission.enabled", false);' | tee -a  $HOME/.mozilla/firefox/$(grep "Default=.*\.default*" "$HOME/.mozilla/firefox/profiles.ini" | cut -d"=" -f2)/user.js

Ale spokojnie. W takich sytuacjach lubię sobie rozbijać większego dziada na mniejsze, z których każdy już mieści się w mózgu.

Proponuję zacząć od lewej strony, bo jest tam wspomniane przed chwilą echo, którego znaczenie jest względnie jasne. Jego ogólny sens jest ten sam co poprzednio – wprowadza tekst do konsoli.

Tekst zaczyna się i kończy pojedynczymi cudzysłowami ('). Na razie go sobie odłożę na bok, bo dla konsoli nie ma żadnego specjalnego znaczenia. Mogłoby tam być wpisane „lorem ipsum”, a skrypt zadziałałby tak samo (choć Firefox zapewne by później dostał czkawki).

Kolejną rzecz do uproszczenia można zobaczyć bliżej końca linijki. Jest tam dolar, a po nim tekst w nawiasach – $(COŚ).
W skryptach Basha oznacza się w ten sposób zmienne. Wewnątrz nawiasów mogą znajdować się nie tylko proste wartości, ale również, jak tutaj, całe instrukcje dla programów.

Ten tekst również można chwilowo odłożyć na bok. Po obu uproszczeniach zostaje coś znacznie przyjemniejszego do czytania:

echo JAKIŚ_TEKST | tee -a  $HOME/.mozilla/firefox/$(ZMIENNA)/user.js

Czytając od lewej: echo tradycyjnie wprowadza do konsoli tekst.
Po nim znajduje się pionowa kreska, czyli „rura” (ang. pipe). Jej zasada działania jest prosta – pozwala wziąć efekt działania programu przed sobą i podać go programowi po swojej prawej stronie. A jest nim…

Tee

O tym programiku można poczytać choćby na stronce Linuxize. Pozwala on zapisać otrzymany tekst do jednego lub więcej plików, jednocześnie wyświetlając go w konsoli. Poświęćmy mu parę sekund.

Ciekawostka

Tajemnicza nazwa programu wynika z tego, że tee w języku angielskim to potoczne określenie na literę T (zresztą w ten sposób mówi się czasem na T-shirty). Z kolei litera T może symbolizować rozgałęzienie. Które pasuje do przypadku, gdy program wyrzuca tę samą rzecz w kilka miejsc, do pliku i konsoli.
Można go zatem nazwać intuicyjnie „rozgałęźnikiem”.

Do programu tee, oprócz tekstu wpadającego przez rurę, trafiają dwa argumenty:

  • Opcja -a.

    Od słowa append. Mówi programowi, żeby dopisywał nową treść na końcu pliku. To ważne, bo w innym wypadku by ten plik nadpisał, usuwając całą jego poprzednią zawartość.

  • Ścieżka do pliku.

    Skąd wiem, że ścieżka? Rozpoznaję po ukośnikach, które rozdzielają pliki i foldery – to skrypt na Linuksa, więc są skierowane w prawą stronę (/), odwrotnie niż na Windowsie.
    Skąd wiem, że jedna? Nie wiem tego na pewno, ale tak obstawiam, bo nie ma w niej żadnych spacji i nie jest otoczona cudzysłowami. Dla konsoli byłaby traktowana jak jeden ciąg. Ale z drugiej strony spację mogłaby zawierać $(ZMIENNA), więc jeszcze nie wiem na 100%.

Nazwa pliku, jak to w ścieżkach, znajduje się na końcu, po ostatnim ukośniku. To user.js. Z kolei fragment .mozilla/firefox sugeruje, że mowa tu o folderach związanych z przeglądarką Firefox.

Zatem esencja pierwszej linijki skryptu jest taka – zapisuje tekst wskazany na początku do pliku user.js w folderze wewnętrznym Firefoksa.

Dopasowanie do działania Firefoksa

Na chwilę zrobię odskocznię od konsoli, żeby wyjaśnić parę spraw. Dlaczego poprzez echo wprowadzono akurat taki tekst? Dlaczego do jakiegoś user.js?

Tu akurat wyjaśnienie jest proste. W tych nazwach nie ma nic specjalnego z punktu widzenia konsoli. To wszystko konwencja przyjęta przez twórców Firefoksa.

  • Firefox na systemach Linux zapisuje różne swoje ustawienia do podfolderu .mozilla/firefox (na innych systemach do innych lokalizacji).
  • Plik user.js zawiera ustawienia odbiegające od domyślnych, dodane przez użytkowników. Jest wczytywany podczas uruchamiania Firefoksa.
  • Za nowe reklamy odpowiada ustawienie
    dom.private-attribution.submission.enabled.
  • Rozszerzenie .js oznacza, że to plik w języku JavaScript, innym skryptowym. Ludzie z Firefoksa zapewne udostępnili publicznie funkcję user_pref(ZMIENNA, WARTOŚĆ), która pozwala zmieniać wartości różnych ustawień.

Autor Make Firefox… zapewne wyszukał na początku, skąd Firefox bierze ustawienia. Po czym stworzył skrypt wprowadzający te zmiany tam, gdzie będą dla Lisa czytelne.
Na tym się często opiera automatyzacja – trzeba poczytać o wewnętrznym działaniu jakiegoś innego programu i dopasować się do niego. Czasem przeklinając, jeśli ten nie ułatwia współpracy :wink:

Zmienna $HOME

W dwóch miejscach pojawia się tekst $HOME. Dolar na początku sugeruje, że to jakaś zmienna o specjalnym znaczeniu.

Nie trzeba jej nigdzie wcześniej określać, bo to jedna ze zmiennych wbudowanych w konsolę. Takie zmienne to zwykle różne informacje na temat komputera, plików, czy samej konsoli.

Autor Make Firefox…, tworząc swój skrypt, musiał podać pełną ścieżkę do paru plików. Ta ścieżka zawsze zawiera folder domowy, którego nazwa jest zależna od użytkownika. Dla jednej osoby będzie to /home/dorota, dla kogoś innego /home/marek
Używając zmiennej, autor może sprawić, że jego skrypt zadziała u wszystkich, dopasowując się do ich urządzenia.

Grep

Przejdę teraz do ostatniej nieomówionej rzeczy. Oto wnętrze tej złożonej zmiennej, która pojawiła się wewnątrz ścieżki:

grep "Default=.*\.default*" "$HOME/.mozilla/firefox/profiles.ini" | cut -d"=" -f2

Ponownie – można czytać od lewej, aż trafi się na pionową kreskę. Nieotoczona cudzysłowami, więc to nie tekst, tylko rura o specjalnym działaniu. Po jej lewej stronie jest program grep i jego argumenty, a wynik jego działania trafia do programu cut.

Zacznę od Grepa. Służy do wyszukiwania tekstu wewnątrz plików i ma składnię:

grep TEKST_DO_ZNALEZIENIA PLIK

W roli pliku jest tutaj (ścieżka do) jakiegoś profiles.ini, również w wewnętrznym folderze Firefoksa.

Żeby zrozumieć sens tego fragmentu, warto wiedzieć, że Firefox dopuszcza wiele profili użytkowników, z których każdy ma jakieś własne ustawienia. I własny folder wewnętrzny, którego nazwa to ciąg losowych znaków, inny dla każdego użytkownika.

Plik profiles.ini to porządkuje. Jest jak taki spis, przypisujący rodzaje profili do wspomnianych nazw folderów. Autor MFPA potrzebuje nazwy, żeby ułożyć pełną ścieżkę „w głąb” Firefoksa, więc musi do tego pliku zajrzeć.

Tekstem do znalezienia jest natomiast "Default=.*\.default*". Dla jasności można zerknąć do pliku i zobaczyć, co w ten sposób znajduje:

Zrzut ekranu z notatnika, pokazujący format pliku z profilami. Trzy z nich, których nazwy zakryto różnymi kolorami, pasują do wzorca.

Warto też wiedzieć, że kropki, gwiazdki i ukośniki zaserwowane Grepowi mają dla niego specjalne znaczenie:

  • . oznacza jeden dowolny znak (niekoniecznie kropkę!);
  • …ale \. oznacza już konkretnie kropkę, bo ukośnik wyłącza specjalność;
  • * oznacza „zero lub więcej tej rzeczy, która stoi bezpośrednio przed gwiazdką”
    (przykład: ba* wyłapywałoby b, ba, baaa itd.);
  • .* oznacza dowolną ilość znaków, aż do napotkania tego po prawej stronie.
Nieoczekiwany błąd

Swoją drogą na tym etapie coś poszło nie tak, bo Grep wykrył u mnie trzy pasujące nazwy folderów. Potem podał je dalej jako trzy rzeczy rozdzielane spacjami. W oczach programu tee: trzy ścieżki, z czego tylko jedna sensowna.
Ogólnie: nie zadziałało :roll_eyes:
Być może to przez to, że mam u siebie kilka różnych Firefoksów, z czego jeden jest dość wiekowy. Może mam przez to więcej folderów z profilami niż oczekiwałby skrypt. A może to niedopatrzenie w skrypcie.
W każdym razie, gdybym chciał profilu kończącego się słowem default, pomogłaby zamiana (w tekście dla Grepa) ostatniej gwiazdki na dolara, wskazującego koniec tekstu. Wówczas skrypt znalazłby tylko jeden profil.

Cut

Znaleziony fragment tekstu trafia do programu cut. Jego zadaniem, jak angielska nazwa wskazuje, jest wycięcie z otrzymanej linijki tylko tej części, która go interesuje. Dostaje dwie opcje:

  • -d, od delimiter (znak rozdzielający)
    mówi, na jakich znakach program powinien podzielić otrzymany tekst. W tym wypadku na znakach =. Kiedy to zrobi, zostaje z kilkoma częściami składowymi. W tym wypadku z dwiema, które sobie numeruje jako 1 i 2.
  • -f
    mówi, którą z tych rzeczy powinien wybrać. Jest 2, czyli drugą. To, co będzie po znaku równości.

Podsumowując współpracę programów grepcut – pierwszy wyciąga ze spisu rodzaj profilu (domyślny) wraz z nazwą folderu. Drugi wycina z tego samą nazwę folderu.
Ta nazwa zostaje wstawiona zamiast zmiennej, w której siedzą oba programy. Dzięki temu cały skrypt dostaje pełną ścieżkę do pliku z ustawieniami (a przynajmniej powinien, gdyby mi działał). I może do niego wrzucić tekst wyłączający reklamy.

Podsumowanie w formie schematu

Na koniec coś dla wzrokowców. Działanie najważniejszej, pierwszej linijki, pokazane w formie autorskiego schematu.

Schemat pokazujący przepływ informacji między czterema konsolowymi programami, oznaczonymi jako podpisane, rysunkowe maszynki do mięsa: grep, cut, echo oraz tee. Po drodze strzałka wskazuje również wczytanie danych z pliku z profilami, a na końcu odchodzą dwie strzałki. Jedna z nich trafia do konsoli, a druga do pliku users.js

Źródło: ikony plików systemu Linux Mint; maszynki do mięsa i niektóre strzałki z serwisu Flaticon (autorstwa odpowiednio: Freepik i Creative Stall Premium). Przeróbki moje.

Wątki poboczne

Skoro działanie skryptu już wyjaśnione, to przejdę do paru spraw luźniej powiązanych, które warto przy okazji poznać.

Wątek cyber(nie)bezpieczeństwa

Skrypt zawiera jeszcze parę programów, choć jedynie w części opisowej, instruktażowej. Pod hasłem „jak uruchomić” znajduje się linijka do wykonania w konsoli:

curl https://make-firefox-private-again.com | sh

Wzbudziła ona pewien sprzeciw u paru komentujących na forum HN. Dlaczego? Ano dlatego, że sugerowany sposób instalowania jest dość niefrasobliwy. Oznacza po prostu „pobierz w ciemno i uruchom” (gdzie curl to pobieracz, a sh to uruchamiacz).

Ale przecież kod źródłowy jest na widoku? I, jak pokazałem wyżej, nieszkodliwy?
Problem w tym, że nawet przeczytanie kodu źródłowego może nie dać wystarczającej ochrony, jeśli po przeczytaniu, już uspokojeni, pobierzemy skrypt innym programem.

Wynika to z podstaw działania internetu. Podczas wysyłania cudzemu serwerowi próśb o różne rzeczy – strony, obrazki, skrypty – wiele programów ujawnia pewne podstawowe informacje. W tym swoją zwięzłą wizytówkę, zawartą w polu nazywającym się user agent.
Tak robi również curlprzedstawia się inaczej niż popularne przeglądarki. Każdy serwer, z którym się kontaktuje, może go rozpoznać i wręczyć mu niespodziankę, której nie dałby użytkownikom przeglądarek.

Bezpieczniejszym rozwiązaniem jest ręczne pobranie skryptu, zapoznanie się z kodem źródłowym (przynajmniej pobieżne) i dopiero wtedy uruchomienie tego samego zapisanego pliku programem sh lub innym.

Świat majsterkowania z user.js

Rozwiązanie ze stronki MFPA jest krótkie i eleganckie (o ile działa), ale samo nie aspiruje do miana nowatorskiego. To dlatego, że wokół Firefoksa już od dawna działa aktywna społeczność, personalizująca swoje ustawienia właśnie przez gmeranie w pliku user.js.

Jednym z przykładów jest BetterFox, czyli skrypt user.js z ustawieniami poprawiającymi szybkość Firefoksa. Linkują też do paru innych wariantów, skupiających się na innych aspektach.

Innym przykładem jest plik user.js od użytkownika Arkenfox, pozwalający uszczelnić prywatność Firefoksa (kosztem wyłączenia pewnych bajerów, więc warto dokładnie się wczytać przed jego użyciem).

Te rozwiązania są idealne dla osób, które chcą wyższego poziomu prywatności, ale obawiałyby się niezależnych projektów opartych na kodzie źródłowym Firefoksa (jak Waterfox czy LibreWolf). Mamy tu bowiem oficjalnego Firefoksa, od Mozilli. Ale dopasowanego pod siebie.

Istnienie tych możliwości daje nadzieję, nawet w obliczu wieści takich jak te o zabawach Mozilli z reklamami. Niezależnie od tego, co wymyśli sobie bardziej „byznesowa” część twórców Firefoksa, zawsze pozostaną ręczne modyfikacje i alternatywy od społeczności.
Przynajmniej dopóty, dopóki kod źródłowy Lisa jest otwarty, a opcje personalizacji rozbudowane. Oby się to nie zmieniło! :smile: