Odwiedzając stronę internetową przeglądarka wysyła do serwera swoje dane identyfikujące. Dane te zawierają m.in. nazwę systemu operacyjnego używanego przez Internautę, a informacje te mogą posłużyć do stworzenia odcisku palca (fingerprint) identyfikującego daną osobę w sieci. Oprócz tego inne dane strona może wyciągnąć od przeglądarki poprzez obiekt navigator używając języka javascript, a następnie wysłać na serwer. System Linux jest mało popularny, dlatego jeśli nie chcemy wyróżniać się w Internecie warto zmienić informacje wysyłane przez przeglądarkę na takie, które są wysyłane przez przeglądarki uruchomione na systemie Windows.
Na początek spis linków do strona za pomocą których można sprawdzić wysyłane informacje przez naszą przeglądarkę:
- http://ip-check.info
- http://www.ip-score.com
- https://amiunique.org
- https://panopticlick.eff.org/
- http://browserspy.dk/browser.php
- https://duckduckgo.com/?q=my+user+agent&ia=answer
- https://www.browserleaks.com/
- http://witch.valdikss.org.ru/
Oprócz tego napisałem prostą stronkę za pomocą której można wyświetlić część eksponowanych światu informacji. Wystarczy zapisać ją w pliku np testUA.html i otworzyć ten plik zapisany na dysku w przeglądarce. Warto zauważyć, że strona ta nie wyświetli wielu informacji identyfikujących, a jedynie te zmieniane w tym HOWTO.
<html>
<head>
<script type="text/javascript">
function funkcja(){
NOWALINIA = "\n"
nazwaKodowaAplikacji = navigator.appCodeName;
nazwaAplikacji = navigator.appName;
wersjaAplikacji = navigator.appVersion;
platformaUruchomieniowaFF = navigator.platform;
identyfikatorBudowy = navigator.buildID;
oscpu = navigator.oscpu;
jezyk = navigator.language;
producent = navigator.vendor;
producentSub = navigator.vendorSub;
uAgent = navigator.userAgent;
produkt = navigator.product;
produktSub = navigator.productSub;
zmienna = "nazwaKodowaAplikacji:" + nazwaKodowaAplikacji + NOWALINIA +
"nazwaAplikacji:" + nazwaAplikacji + NOWALINIA +
"wersjaAplikacji:" + wersjaAplikacji + NOWALINIA +
"platformaUruchomieniowaFF:" + platformaUruchomieniowaFF + NOWALINIA +
"identyfikatorBudowy:" + identyfikatorBudowy + NOWALINIA +
"oscpu:" + oscpu + NOWALINIA +
"jezyk:" + jezyk + NOWALINIA +
"UserAgent:" + uAgent + NOWALINIA +
"producent:" + producent + NOWALINIA +
"producentSub:" + producentSub + NOWALINIA +
"produkt:" + produkt + NOWALINIA +
"produktSub:" + produktSub;
alert(zmienna);
return true;
}
</script>
</head>
<body>
<button type="button" onclick="funkcja()" >Kliknij!</button>
</body></html>
A więc zaczynamy. W tym FAQ podam jakimi wpisami warto się zainteresować, a także przykładowe wpisy upodabniające przeglądarkę do Firefox 45 64 bit uruchomionego na Windowsie 8.1. Warto pamiętać, że co 6 tygodni wydana zostaje nowa wersja Firefoksa, co oznacza że wpisy się dosyć szybko deaktualizują. Otwieramy stronę, na której będziemy zmieniać ustawienia przeglądarki: w pasek adresu wpisujemy about:config na stronie, która się otworzy wpisy dodaje się poprzez kliknięcie prawym przyciskiem myszy na obszar z wpisami, wybraniu z menu kontekstowego "Dodaj ustawienie typu" -> "Łańcuch (string)". Wartości wpisów już istniejących zmienia się klikając na nie dwukrotnie. A więc zmieniamy:
general.useragent.override na "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0"
general.useragent.override.[site_address] wartość # dla konkretnej strony
general.oscpu.override na "Windows NT 6.3; Win64; x64"
general.platform.override na "Win64"
general.appversion.override na "5.0 (Windows)"
general.buildID.override na "20160916101415"
Druga linijka pozwala ustawić UA wysyłany konkretnej stronie i można ją pominąć.
Co przez to osiągnęliśmy? Administrator strony na którą wchodzimy widzi w logu fałszywe informacje o systemie. Przeglądarka dalej nie blokuje reklam, szpiegujących elementów ładowanych z serwerów firm zarabiających na sprzedawaniu naszych danych, danych wysyłanych przez wtyczki takie jak np Flash Player. Informację o systemie serwer mógłby uzyskać analizując wysyłane pakiety TCP, gdyż różne systemy operacyjne odrobinę inaczej liczą numery wpisywane do nagłówka pakietu (mimo to wszystkie są zgodne z RFC).