Redukcja danych klienta użytkownika (UA) minimalizuje ilość informacji identyfikujących udostępnianych w ciągu znaków User-Agent, które mogą być używane do pasywnego odcisków cyfrowych. Po wprowadzeniu tych zmian dla ogólnej dostępności wszystkie żądania zasobów mają ograniczony nagłówek User-Agent
. W rezultacie wartości zwracane z niektórych interfejsów Navigator
, m.in. navigator.userAgent
, navigator.appVersion
i navigator.platform
, są ograniczone.
Programiści stron internetowych powinni sprawdzić kod witryny pod kątem użycia ciągu znaków User-Agent. Jeśli w celu odczytania modelu urządzenia, wersji platformy lub pełnej wersji przeglądarki Twoja witryna korzysta z analizy ciągu znaków User-Agent, musisz zaimplementować interfejs User-Agent Client Hints API.
Wskazówki dla klienta użytkownika (UA-CH)
Wskazówki dla klienta użytkownika umożliwiają dostęp do pełnego zbioru danych klienta użytkownika, ale tylko wtedy, gdy serwery aktywnie deklarują wyraźne zapotrzebowanie na określone dane.
Usuwając pasywne dane użytkowników, możemy dokładniej mierzyć i ograniczać ilość informacji ujawnianych celowo przez nagłówki żądań, interfejsy API JavaScript i inne mechanizmy.
Dlaczego potrzebujemy mniejszej liczby UA i UA-CH?
Dawniej ciąg znaków User-Agent rozgłaszał duży ciąg danych o przeglądarce, systemie operacyjnym i wersji użytkownika przy każdym żądaniu HTTP. Było to problematyczne z dwóch powodów:
- Szczegółowość i mnóstwo szczegółów może ułatwić identyfikację użytkownika.
- Domyślna dostępność tych informacji może prowadzić do ukrytego śledzenia.
Ograniczone działanie UA i UA-CH zwiększa domyślnie prywatność użytkowników, ponieważ domyślnie udostępniają tylko podstawowe informacje.
Ograniczony identyfikator użytkownika zawiera markę przeglądarki, znaczącą wersję, z której żądanie pochodzi (komputer lub urządzenie mobilne), oraz platformę. Wskazówki dotyczące klienta użytkownika pozwalają uzyskać dostęp do większej ilości danych, dzięki czemu możesz zażądać określonych informacji o urządzeniu lub warunkach użytkownika.
Poza tym ciąg User-Agent
stawał się dłuższy i bardziej złożony, co powodowało analizowanie ciągu podatnego na błędy. UA-CH udostępnia uporządkowane i wiarygodne dane,
które łatwiej interpretować. Dotychczasowy kod, który analizuje ciąg tekstowy UA, nie powinien zepsuć się (choć będzie zwracał mniej danych). Jeśli Twoja witryna potrzebuje określonych informacji o kliencie, musisz przejść na UA-CH.
Jak działa ograniczona liczba UA i UA-CH?
Oto krótki przykład działania zredukowanego ciągu znaków User-Agent i UA-CH. Bardziej szczegółowy przykład znajdziesz w artykule Poprawianie prywatności użytkowników i wygody programistów przy użyciu wskazówek dla klienta użytkownika.
Użytkownik otwiera przeglądarkę i wpisze example.com
w pasku adresu:
Przeglądarka wysyła żądanie wczytania strony internetowej.
- Przeglądarka uwzględnia nagłówek
User-Agent
o zmniejszonym ciągu znaków User-Agent. Przykład:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
Przeglądarka umieszcza te same informacje w domyślnych nagłówkach podpowiedzi klienta użytkownika. Na przykład:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- Przeglądarka uwzględnia nagłówek
Serwer może poprosić przeglądarkę o wysłanie dodatkowych wskazówek klienta, np. dotyczących modelu urządzenia, z nagłówkiem odpowiedzi
Accept-CH
. Przykład:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
Przeglądarka stosuje zasady i konfigurację użytkownika, aby określać, jakie dane mogą być zwracane na serwer w nagłówkach kolejnych żądań. Przykład:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
Krytyczne wskazówki dotyczące klienta
Jeśli w pierwszym żądaniu potrzebujesz określonego zestawu wskazówek klienta, możesz użyć nagłówka odpowiedzi Critical-CH
. Wartości Critical-CH
muszą być podzbiorem wartości, których żąda Accept-CH
.
Wstępne żądanie może na przykład zawierać żądania Device-Memory
i Viewport-Width
, gdzie parametr Device-Memory
jest uważany za krytyczny.
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
Jeśli przeglądarka wymaga krytycznej podpowiedzi (Critical-CH
), aby prawidłowo wyrenderować stronę internetową, serwer może zażądać tych dodatkowych informacji w nagłówku Accept-CH
. Następnie przeglądarka może wysłać nowe żądanie dotyczące strony, łącznie z krytyczną wskazówką.
Podsumowując, Accept-CH
wysyła żądania wszystkich wymaganych wartości dla strony, a Critical-CH
żąda tylko podzbioru wartości, które są niezbędne do prawidłowego wczytania strony. Więcej informacji znajdziesz w specyfikacji instrukcji klienta dotyczących niezawodności.
Wykrywanie tabletów za pomocą interfejsu UA-CH API
Ponieważ granica między urządzeniami mobilnymi, tabletami i komputerami coraz bardziej się różni, a formaty są coraz bardziej dynamiczne (składane ekrany oraz przełączanie się między trybem laptopa i tabletu), zalecamy stosowanie elastycznego projektowania i wykrywania funkcji, aby zapewnić odpowiedni interfejs.
Jednak informacje dostarczane przez przeglądarkę w przypadku ciągu znaków User-Agent i wskazówek klienta klienta użytkownika pochodzą z tego samego źródła, więc powinny działać te same formy logiki.
Jeśli np. ten wzorzec jest sprawdzany w ciągu znaków UA:
- Wzór telefonu:
'Android' + 'Chrome/[.0-9]* Mobile'
- Wzór tabletu:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Można sprawdzić pasujący domyślny interfejs nagłówków UA-CH:
- Wzór telefonu:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- Wzór na tablecie:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
Albo odpowiednik interfejsu JavaScript:
- Wzór telefonu:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- Wzór tabletu:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
W przypadkach specyficznych dla sprzętu nazwę modelu urządzenia można zażądać za pomocą podpowiedzi Sec-CH-UA-Model
o wysokiej entropii.
Jak mogę wykorzystać i przetestować zmniejszoną liczbę UA?
Najpierw sprawdź, czy w swoim kodzie witryny nie występują przypadki użycia ciągu znaków User-Agent. Jeśli do odczytania modelu urządzenia, wersji platformy lub pełnej wersji przeglądarki Twoja witryna używa analizy ciągu znaków User-Agent, musisz zaimplementować interfejs UA-CH API.
Po zaktualizowaniu interfejsu UA-CH API do jego interfejsu musisz przeprowadzić test, aby mieć pewność, że otrzymujesz od klienta użytkownika odpowiednie dane. Są 3 sposoby testowania, a każdy z nich jest coraz bardziej złożony.
Skalowana dostępność redukcji klienta użytkownika oznacza w pełni zredukowany ciąg znaków UA wysyłany na wszystkie urządzenia z Chrome. Redukcja zaczęła się od wersji Chrome w drugim kwartale 2022 r.
Testowanie ciągów niestandardowych lokalnie
Jeśli chcesz przetestować witrynę za pomocą niestandardowych ciągów znaków klienta użytkownika, aby symulować różne urządzenia, uruchom Chrome z flagą wiersza poleceń --user-agent="Custom string here"
. Więcej informacji na temat flag wiersza poleceń znajdziesz tutaj.
Możesz też użyć emulatora urządzenia w Narzędziach deweloperskich w Chrome.
Przekształcanie ciągu znaków w kodzie swojej witryny
Jeśli przetwarzasz istniejący ciąg znaków user-agent
Chrome w kodzie po stronie klienta lub po stronie serwera, możesz przekształcić ten ciąg znaków do nowego formatu, aby sprawdzić zgodność. Aby przetestować działanie, zastąp i zastąp ciąg lub wygeneruj nową wersję i przetestuj obok siebie.
Pomoc dotycząca wskazówek dla klientów i kluczowych wskazówek
Na serwer są zwracane 3 domyślne wskazówki klienta – m.in. nazwa przeglądarki i wersja główna, wartość logiczna wskazująca, czy przeglądarka działa na urządzeniu mobilnym, oraz nazwa systemu operacyjnego. Są one wysyłane po uzgadnianiu połączenia TLS. Są one już dostępne i obsługiwane przez Ciebie w przeglądarce.
Czasem jednak trzeba pobrać kluczowe informacje, by witryna została wyrenderowana.
Optymalizacja kluczowych wskazówek
Uzgadnianie połączenia TLS to pierwszy krok do stworzenia bezpiecznego połączenia między przeglądarką a serwerem WWW. Bez interwencji nagłówek odpowiedzi critic-CH informuje przeglądarkę o natychmiastowym ponowieniu żądania, jeśli pierwsza wiadomość została wysłana bez krytycznej podpowiedzi.
![Diagram sekwencji wskazówek dla klienta z krytycznymi wskazówkami.](https://developers.google.cn/privacy-sandbox/assets/images/sequence-diagram-with-critical-client-hints.avif?authuser=6&hl=pl)
Sec-CH-UA-Model
jest wywoływana 2 razy: raz jako wskazówka klienta w Accept-CH
i ponownie jako krytyczna wskazówka w Critical-CH
.Aby zoptymalizować krytyczne wskazówki (nagłówek Critical-CH
), musisz przechwycić to uzgadnianie połączenia i udostępnić model dla wskazówek klienta. Czynności te mogą być złożone i wymagać zaawansowanej wiedzy.
Ramki HTTP/2 i HTTP/3 ACCEPT_CH
w połączeniu z rozszerzeniem TLS ALPS to optymalizacja na poziomie połączenia, która zapewnia ustawienie podpowiedzi klienta dla serwera w czasie oczekiwania na pierwsze żądanie HTTP. Wymagają one złożonej konfiguracji i zalecamy korzystanie z niej tylko w przypadku naprawdę kluczowych informacji.
BoringSSL (rozwinięcie OpenSSL) pomaga w korzystaniu z eksperymentalnych funkcji Google w Chromium. Obecnie protokół ALPS jest zaimplementowany tylko w protokole BoringSSL.
Jeśli musisz skorzystać z najważniejszych wskazówek, zapoznaj się z naszym przewodnikiem dotyczącym krytycznych wskazówek dotyczących niezawodności i optymalizacji.
Najczęstsze pytania
Jak długo będą wysyłane podpowiedzi określone w nagłówku Accept-CH
?
Wskazówki określone w nagłówku Accept-CH
będą wysyłane przez cały czas trwania sesji przeglądarki lub do momentu określenia innego zestawu wskazówek.
Czy UA-CH działa z protokołami HTTP/2 i HTTP/3?
UA-CH działa w przypadku połączeń HTTP/2 i HTTP/3.
Czy subdomeny (i rekordy CNAME) wymagają strony najwyższego poziomu Permissions-Policy
, aby uzyskać dostęp do UA-CH o wysokiej entropii?
UA-CH o dużej entropii w nagłówkach żądań jest ograniczone w przypadku żądań z innych domen niezależnie od tego, jak to źródło jest zdefiniowane po stronie DNS. Przekazywanie dostępu musi być obsługiwane za pomocą metody Permissions-Policy
w przypadku wszystkich zasobów podrzędnych z innych domen lub uzyskane za pomocą kodu JavaScript, który jest wykonywany w kontekście zasobów z innych domen.
Jak redukcja klienta użytkownika wpływa na wykrywanie botów?
Zmiana w ciągu znaków klienta użytkownika w Chrome nie ma bezpośredniego wpływu na ciąg znaków User-Agent wysyłany przez bota.
Boty mogą aktualizować własne ciągi znaków, aby odzwierciedlały mniejszą ilość informacji wysyłanych przez Chrome, ale zależy to wyłącznie od implementacji. Chrome nadal wysyła ten sam format klienta użytkownika, a boty, które dodają własny identyfikator na końcu ciągu znaków tego klienta użytkownika Chrome, mogą to robić.
W przypadku wątpliwości związanych z konkretnymi robotami warto skontaktować się bezpośrednio z ich właścicielami i zapytać, czy planują zmienić ciąg znaków User-Agent.
Angażuj i dziel się opiniami
- Testowanie origin: podziel się opinią na temat poprzednich wersji próbnych origin.
- Demonstracja: wypróbuj naszą prezentację redukcji klienta użytkownika.
- GitHub przeczytaj wyjaśnienie UA-CH, zadawaj pytania i śledź dyskusję.
- Pomoc dla deweloperów: zadawaj pytania i dołączaj do dyskusji w repozytorium pomocy dla deweloperów Piaskownicy prywatności.
Więcej informacji
- Większa prywatność użytkowników i wrażenia programistów: omówienie dla programistów stron internetowych
- Migracja z ciągu znaków UA do UA-CH: samouczek dla programistów stron internetowych
- Piaskownica prywatności