Otwórz narzędzia deweloperskie, wczytaj stronę i przeczytaj nagłówki żądania, zanim wyciągniesz jakikolwiek wniosek o VPN. Zwykle znajdziesz wiersz Accept-Language proszący o określony zestaw języków, a ten wiersz pochodzi z ustawień przeglądarki, nie z twojego adresu wyjściowego. Francuz na wyjściu w Tokio nadal wysyła francuski, a strona odpowiadająca po francusku odpowiada nagłówkowi. Tunel nie przecieka tylko dlatego, że strona przyszła w znanym języku.

Najpierw przeczytaj nagłówek

W przeglądarce desktopowej otwórz panel Sieć, odśwież, kliknij żądanie dokumentu i zajrzyj pod nagłówki żądania. Z terminala zobaczysz to samo bez przeglądarki, a wartość możesz nadpisać, aby przetestować zachowanie strony:

curl -sS -D /tmp/h1 -o /tmp/b1 https://example.com
curl -sS -D /tmp/h2 -o /tmp/b2 -H 'Accept-Language: fr,en;q=0.6' https://example.com
grep -o 'lang="[^"]*"' /tmp/b1 /tmp/b2
diff /tmp/b1 /tmp/b2 | head -40

Teraz treść jest na dysku, więc porównanie dotyczy strony, a nie nagłówka, który może nigdy nie zostać wysłany. Spójrz na atrybut lang znacznika html i widoczny tekst, ponieważ Content-Language jest opcjonalny i wiele serwerów go pomija. Strona, która pod tym samym URL przełącza całą stronę z angielskiego na francuski, może więc w porównaniu samych nagłówków wyglądać na niezmienioną. Jeśli język dokumentu podąża za nagłówkiem, a wyjście pozostaje stałe, nagłówek był decydującym wejściem i VPN nie ma z tym spostrzeżeniem nic wspólnego.

Do tego testu użyj drugiego profilu przeglądarki, a nie przełącznika języka samej strony. Przełącznik zwykle zapisuje ciasteczko, które jest innym wejściem, i w końcu zmierzysz ciasteczko zamiast nagłówka.

Co oznaczają wartości q, a czego nie

RFC 9110 sekcja 12.5.4 definiuje Accept-Language jako listę preferowanych języków naturalnych odpowiedzi. Każdy wpis może nieść wagę od 0 do 1, zakres bez wagi ma wagę 1, a waga 0 oznacza język jako nieakceptowalny. To kolejność preferencji i nic więcej.

Wartość nie jest raportem lokalizacji, nie jest oceną zaufania i nie jest tożsamością. Serwer może ją zignorować, podać jedyne tłumaczenie, jakie ma, albo pozwolić wygrać przekierowaniu opartemu na kraju. Negocjacja treści jest wyborem serwera, a nagłówek jest wejściem do tego wyboru, nie poleceniem.

To właśnie umyka ludziom, gdy traktują zlokalizowaną stronę jako test lokalizacji. Nagłówek mówi, jakie języki dana osoba woli czytać, a preferencja może podróżować wszędzie.

Trzy wejścia decydują, jaki język naprawdę otrzymujesz

Izoluj je po kolei, bo z zewnątrz nie widzisz, które wygrało:

  • Nagłówek. Testuj z drugim profilem ustawionym na inną listę języków i obserwuj, czy strona się zmienia, gdy wszystko inne pozostaje stałe.
  • Zapisany wybór. Testuj w oknie prywatnym bez ciasteczek albo wyczyść pamięć strony. Ustawienia konta i wpisy w localStorage mogą przypiąć język na miesiące.
  • URL lub przekierowanie. Testuj, prosząc o jawną ścieżkę języka, na przykład /fr/, i obserwując kody stanu przekierowania opartego na adresie źródłowym.

Wykonaj trzy testy w tej kolejności i zapisz, który przesunął wynik. Jedno wczytanie strony, które zmienia język po włączeniu VPN, jest słabym dowodem, bo zarówno przekierowanie, jak i ciasteczko w pamięci podręcznej mogą wywołać to wrażenie.

Co zmienia VPN, a czego nie

Tunel zmienia adres źródłowy, który widzi serwer, a wraz z nim wszystko, co serwer wnioskuje z geolokalizacji IP. Nie przepisuje preferencji językowych przeglądarki, nie usuwa zapisanego ustawienia i nie zmienia URL, który wpisałeś. Te wejścia pozostają dokładnie tam, gdzie były, więc strona może zachować stary język po przesunięciu wyjścia.

Geolokalizacja dodaje własny szum. Bazy adresów nie zgadzają się ze sobą, a wyjście zarejestrowane w jednym kraju może zostać przypisane do innego, przez co przekierowanie oparte na kraju wygląda źle z powodów niemających nic wspólnego z twoją przeglądarką.

Szybka kontrola je rozdziela: poproś o stronę od nowa, zanotuj adres, który prezentujesz, a następnie porównaj język odpowiedzi z twoją listą nagłówków. Jeśli język pasuje do twojej listy, a nie do kraju wyjścia, nagłówek był decydującym wejściem i w tunelu nie ma czego naprawiać.

Co dowodzi zlokalizowana strona, a czego nie

Jest tu prawdziwy punkt dotyczący prywatności i jest mniejszy niż ten, który ludzie zwykle podnoszą. Pełna lista preferencji językowych jest wejściem do odcisku palca i może ujawnić coś o tym, kim jesteś lub co czytasz. To prawdziwe ujawnienie preferencji i nie jest tym samym co dowód, że ruch wydostał się z tunelu.

Zlokalizowana strona nie jest wskaźnikiem wycieku. Jeśli naprawdę chcesz testować wyciek, sprawdź adres wyjściowy widziany przez stronę, ścieżkę resolvera używaną do wyszukiwania nazw i kandydatów ujawnianych przez stos WebRTC. Te testy odpowiadają na pytanie, na które język strony nie potrafi.

Następnym razem, gdy strona będzie wyglądać, jakby znała twój kraj, najpierw otwórz nagłówki żądania. Jeśli język odpowiedzi pasuje do listy twojej przeglądarki, nic nie wyciekło, a warstwa, której trzeba się przyjrzeć, jest ta przed tobą.

Powiązane artykuły