Browsergate

Skoro jest strona, to sprawa jest poważna, prawda? Coraz głośniej robi się o aferze ochrzczonej Browsergate. Zaczyna się od LinkedIn Is Illegally Searching Your Computer. Czyli grubo. Ale czy słusznie?

Wydaje mi się, że autorzy trochę wyolbrzymiają. Co się dzieje technicznie? Na stronie LinkedIn jest javascript, którego zadaniem jest zebranie informacji o zainstalowanych rozszerzeniach w Chome[1]. Jest to robione przy pomocy paru technik. Najważniejsza z nich opiera się o predefiniowaną listę rozszerzeń i obecnych w nich plików. Skrypt próbował czytać kolejne pliki i – w przypadku sukcesu – zapamiętywał informację, że dane rozszerzenie jest obecne (i aktywne). Tak zebrane informacje były wysyłane do właściciela LinkedIn, czyli Microsoftu. Nie ma natomiast mowy o przeszukiwaniu komputera, co sugeruje nagłówek autorów znaleziska. Aktywność jest ograniczona do plików rozszerzeń.

Autorzy znaleziska argumentują, że za sprawą rozszerzeń w przeglądarce można określić przekonania polityczne, religijne, zdrowotne i dotyczące zatrudnienia. Jestem w stanie się zgodzić, że w specyficznych przypadkach[2] faktycznie da się określić je z wysokim prawdopodobieństwem. I – ponieważ użytkownik jest zalogowany – skorelować z konkretną osobą.

Zatem oburzenie na Microsoft jest słuszne. Czemu jednak jest ograniczone tylko do tej jednej firmy, a Google i twórcy rozszerzeń są tu pominięci? Cała technika możliwa jest tylko dlatego, że przeglądarka Google, podobnie jak wszystkie pochodne Chromium, stosują stałe lokalne identyfikatory rozszerzeń. Nie jest to żadna tajemnica. Nie jest to też norma wśród przeglądarek. Firefox na przykład stosuje losowe identyfikatory lokalne. Takie działanie uniemożliwia stronie próbę odczytu znanego pliku z rozszerzenia, więc technika nie zadziała.

Dodatkowo, twórcy rozszerzenia muszą w manifeście jawnie zezwolić stronie[3] na dostęp do plików przy pomocy dyrektywy web_accessible_resources. Ładny opis, łącznie z tym, że Chrome nie ma losowych identyfikatorów znajdziemy na stronie Mozilli.

Czemu nie ma oburzenia na twórców Chromium, którzy nie randomizują lokalnych ID rozszerzeń? Ani na samych twórców rozszerzeń pozwalających na ustalenie wrażliwych danych, że pozwalają na czytanie plików rozszerzenia stronom[4]? No i w końcu zastanawia mnie, czy to jedyna strona, która tak działa?

Sama funkcjonalność odczytu plików rozszerzeń nie jest nowa i była znana wielu osobom (tak, znałem). Zastosowanie jest… interesujące. Mi masowe skanowanie rozszerzeń nie przyszło do głowy. Może dlatego, że nie mam zastosowania dla tych danych? Czy za sprawą Browsergate będzie mała rewolucja w świecie rozszerzeń i podejściu do prywatności? Zobaczymy.

[1] Tak naprawdę w pochodnych Chromium.
[2] Wymieniają te przypadki i są to konkretne rozszerzenia, których obecność Microsoft celowo sprawdza.
[3] Lub stronom, możliwe wildcardy.
[4] No dobrze, nie zawsze może dać się uniknąć dostępu do plików, zapewne zależy od tego, co dane rozszerzenie robi.

HumanRank

Dziś przeczytałem wpis o human.json i stwierdziłem, że temat jest godny pełnowymiarowego wpisu. Nie dlatego, że jest ciekawy, ale dlatego, jak bardzo nieprzemyślany i słabo wykonany jest to pomysł. Uprzedzam, że będzie stronniczo i trochę mi się uleje.

W skrócie, LLMosceptycy wpadli na pomysł, żeby ludzie zaczęli dodawać plik JSON, w którym będą wskazywać URLe do innych treści (stron) tworzonych przez ludzi. Do tego dodatek do przeglądarki, który pokaże ilu ludzi wskazało odwiedzaną stronę na tworzoną przez człowieka i jaka jest odległość (ilu pośredników) względem naszej strony.

Czyli – cytując wytłuszczenia ze strony projektu – autor strony deklaruje się jako człowiek i umieszcza plik. Następnie poręcza za inne strony. I rozszerza scope poręczeń.

Jeśli komuś się z czymś to kojarzy, to – jeśli jeszcze nie zorientował się na podstawie tytułu wpisu – jest to w założeniu bardzo podobne do PageRank stworzonego przez Google. Może i Google stwierdziło, że to nie działa dobrze, jest podatne na manipulacje SEO i wycofało się z projektu, ale tym razem się uda. OK, jest różnica, bo aktualnie human.json nie uwzględnia wag. Ale to wczesna wersja, więc możliwe, że wszystko przed nami.

Wersja Google była o tyle lepsza/prostsza, że nie wymagała osobnego pliku i używała po prostu linków ze strony. Ale to nic, wiadomo, że wszyscy ludzie są techniczni, tu sobie nagłówek dopiszą, tam plik wygenerują. Na ironię zakłada wybór formatu JSON, który jest pomyślany jako przetwarzalny przez automaty i niezbyt przyjazny ludziom.

Dalsze wady pomysłu? Ależ proszę bardzo. Rozwiązanie jest podatne na manipulację. Nie ma żadnego problemu, żeby kupić kilka(-naście, -set) stron, umieścić na nich human.json, który będzie linkować do pozostałych. Zapewne będą miały wyższą ilość potwierdzeń, niż wiele stron tworzonych przez ludzi.

Kolejny problem to założenie, że wszyscy pieczołowicie będą utrzymywać swoje pliki. O ile z dodaniem pliku nie ma większego problemu, to z czasem domeny wygasają, zmieniają właścicieli. Po kilku latach może być na nich zupełnie inna treść. Znam to doskonale i z linków na blogu, i z czytnika RSS. W przypadku PageRank był jeden opiekun, który dbał o jakość wskaźnika.

Czy to koniec problemów? Na pewno nie. Na pewno znajdą się chętni do „wymiany linków” tj. wzajemnego potwierdzenia swojego człowieczeństwa. Pamiętacie sprzedaż linków? Gdyby pomysł jakimś cudem się przyjął (w co nie wierzę) to handel linkami powróci w wielkim stylu. Tym razem linkami w human.json.

Czym więc jest human.json, albo jakie widzę jego niezamierzone skutki? Przede wszystkim jest deklaracją nie lubię LLM. Do tego oczywiście każdy ma prawo. Ale czy człowiek musi polegać na automatycznym, algorytmicznym wskaźniku z przeglądarki, żeby ocenić czy treść jest wartościowa? Wydaje mi się to dziwne.

Ostatni niezamierzony skutek, który widzę, to tworzenie kolejnego bąbelka. Bo czy strony ludzi, z których poglądami się nie zgadzamy, trafią do human.json równie często, jak tych, z którymi się zgadzamy? Szczerze w to wątpię.

Głodny wilk

We wpisie o optymalizacji strony pisałem tym, że wilk może być syty, i owca cała. Czyli, w kontekście reklam AdSense, można mieć reklamy i nie mieć reklam. Zarabiać i nie psuć strony wolnymi reklamami.

Dawno temu pisałem co prawda, że wyłączyłem reklamy AdSense. Przynajmniej na podstawowym blogu. Jednak było zgromadzone sporo środków, ale poniżej progu wypłaty. Co skłoniło mnie do salomonowego rozwiązania – włączenia reklam na wybranych stronach. Dokładnie na tych, które mają najwięcej wejść z wyszukiwarki.

Uznałem rozwiązanie za mało inwazyjne z jednej strony, a z drugiej okazało się zaskakująco dochodowe. To nawet nie było słynne 80/20, to bardziej 95/5. Znaczy się kilka(naście) najpopularniejszych stron robiło praktycznie cały dochód. A skoro nie widać różnicy, to po co spowalniać resztę? Brak inwazyjności objawił się także względnie dopasowanymi reklamami. Może nie były tematyczne, ale gdy zerknąłem parę razy, widziałem reklamy po polsku, bez paramedycznych itp. Raczej duże sklepy itp. Czyli jakby znośnie.

Gdybym był zwolennikiem teorii spiskowych stwierdziłbym, że Google specjalnie zwiększa dochód po włączeniu reklam, a potem steruje tak, żeby się wyświetlały, ale żeby jak najdłużej nie można było wypłacić środków. Bo wykres przychodów z reklam AdSense w czasie wygląda tak:

wykres zarobków AdSense w latach 2023-2025. widoczny wyraźny trend spadkowy
Zarobki AdSense, 2023-2025

Nie trzeba doktoratu ze statystyki, żeby zobaczyć, że zarobki spadają. Systematycznie. I to pewnie mimo dodania reklam na jednej czy dwóch popularnych wpisach w tzw. międzyczasie. Próg wypłaty środków znowu jest blisko ale… jakoś ciągle jest to „za parę miesięcy”. Od paru miesięcy. Czyli ewidentne gotowanie żaby. Czy też bardziej: głodzenie wilka.

Dla jasności, mimo pewnych chwilowych aberracji w pozycji, ilości wejść i odsłon, jest stabilnie. Nic się istotnie nie zmienia – ani ilość wejść, ani pozycja. W panelu AdSense też niby wszystko na zielono. A może to globalny trend?

Cóż, skoro tak to ma wyglądać, to jednak nie będzie połowicznego rozwiązania, tylko reklamy AdSense wylecą. Tym razem zupełnie i na dobre. Ale najpierw chcę uzbierać do progu wypłaty…

Zamiast tego[1] uruchomiłem możliwość postawienia kawy. Zupełnie nieinwazyjne, całkowicie dobrowolne. Czy działa? Za wcześnie, by wnioskować. No ale bez złudzeń, przy blogach tego typu raczej sprawdziłyby się mikropłatności, coś w stylu tego, co próbował kiedyś wdrożyć Brave.

To, co mi jeszcze chodzi po głowie to jakaś sieć, która wyświetla „reklamy” non-profit. Społeczne, jakiś open source itp. I czasami, rzadko, tak 1:20 reklamy stron, które należą do sieci. Znacie coś takiego? A może to pomysł na biznes/startup?

[1] W sumie to nie do końca zamiast, bo trochę szerzej i trochę inna motywacja. Więc to „zamiast” to tylko w kontekście „jest blog i są pieniądze”.