Redukcja ciągu tekstowego klienta użytkownika (UA) minimalizuje ilość informacji identyfikacyjnych udostępnianych w ciągu tekstowym klienta użytkownika, które mogą być wykorzystywane do pasywnego tworzenia odcisków palców. Teraz, gdy te zmiany zostały wdrożone na potrzeby ogólnej dostępności, wszystkie żądania zasobów mają skrócony nagłówek User-Agent
. W rezultacie wartości zwracane przez niektóre interfejsy Navigator
są ograniczone. Dotyczy to m.in. interfejsów navigator.userAgent
, navigator.appVersion
i navigator.platform
.
Deweloperzy powinni sprawdzić kod witryny pod kątem użycia ciągu User-Agent. Jeśli Twoja witryna korzysta z analizowania ciągu znaków User-Agent, aby odczytać model urządzenia, wersję platformy lub pełną wersję przeglądarki, musisz wdrażać interfejs API User-Agent Client Hints.
Wskazówki dotyczące klienta użytkownika (UA-CH)
Wskazówki klienta User-Agent umożliwiają dostęp do pełnego zestawu danych User-Agent, ale tylko wtedy, gdy serwery aktywnie deklarują wyraźną potrzebę uzyskania określonych danych.
Dzięki usuwaniu danych użytkowników udostępnianych pasywnie możemy lepiej mierzyć i zmniejszać ilość informacji celowo udostępnianych przez nagłówki żądań, interfejsy API JavaScript i inne mechanizmy.
Dlaczego potrzebujemy ograniczonych wersji UA i UA-CH?
Wcześniej ciąg znaków User-Agent przekazywał duży ciąg danych o przeglądarce użytkownika, systemie operacyjnym i jego wersji wraz z każdym żądaniem HTTP. Było to problematyczne z 2 powodów:
- Szczegółowość i obfitość szczegółów mogą prowadzić do identyfikacji użytkownika.
- Dostępność tych informacji domyślnie może prowadzić do ukrytego śledzenia.
Zmniejszone UA i UA-CH zwiększają prywatność użytkowników, ponieważ domyślnie udostępniają tylko podstawowe informacje.
Zredukowany ciąg znaków User-Agent zawiera markę i znaczącą wersję przeglądarki, źródło żądania (komputer lub urządzenie mobilne) oraz platformę. Aby uzyskać dostęp do dodatkowych danych, możesz poprosić o konkretne informacje o urządzeniu lub warunkach użytkownika za pomocą wskazówek dotyczących klienta User-Agent.
Z czasem ciąg User-Agent
wydłużał się i stawał się coraz bardziej złożony, co powodowało błędy podczas jego analizowania. UA-CH udostępnia uporządkowane i niezawodne dane, które łatwiej interpretować. Istniejący kod, który analizuje ciąg znaków UA, nie powinien się zepsuć (chociaż zwróci mniej danych). Jeśli Twoja witryna potrzebuje określonych informacji o kliencie, musisz przejść na UA-CH.
Jak działają ograniczone UA i UA-CH?
Oto krótki przykład działania skróconego ciągu tekstowego klienta użytkownika i identyfikatora UA-CH. Aby uzyskać bardziej szczegółowy przykład, przeczytaj artykuł Poprawa prywatności użytkowników i wrażeń deweloperów dzięki wskazówkom dotyczącym klienta użytkownika.
Użytkownik otwiera przeglądarkę i wpisuje example.com
na pasku adresu:
Przeglądarka wysyła żądanie wczytania strony internetowej.
- Przeglądarka zawiera nagłówek
User-Agent
z ograniczonym ciągiem 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 zawiera te same informacje w domyślnych nagłówkach User-Agent i Client Hint. Na przykład:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- Przeglądarka zawiera nagłówek
Serwer może poprosić przeglądarkę o przesłanie dodatkowych wskazówek dotyczących klienta, takich jak model urządzenia, w nagłówku 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ślić, jakie dane może zwracać do serwera w kolejnych nagłówkach żą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 pierwotnym żą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 zwracanych przez funkcję Accept-CH
.
Na przykład początkowe żądanie może zawierać żądanie Device-Memory
i Viewport-Width
, gdzie Device-Memory
jest uważane za krytyczne.
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 potrzebuje wskazówki krytycznej (Critical-CH
) do prawidłowego renderowania strony internetowej, serwer może poprosić o te dodatkowe informacje za pomocą nagłówka Accept-CH
. Następnie przeglądarka może wysłać nowe żądanie strony, w którym uwzględni kluczowy podpowiedź.
Podsumowując, Accept-CH
wysyła wszystkie wartości, których potrzebujesz na stronie, a Critical-CH
wysyła tylko podzbiór wartości, które musisz mieć podczas wczytywania strony, aby ją prawidłowo załadować. Więcej informacji znajdziesz w specyfikacji Zaufanie do wskazówek klienta.
Wykrywanie tabletów za pomocą interfejsu UA-CH API
Granica między urządzeniami mobilnymi, tabletami i komputerami stacjonarnymi staje się coraz mniej wyraźna, a dynamiczne formaty (ekrany składane, przełączanie między trybem laptopa a tabletu) stają się coraz popularniejsze. Dlatego zalecamy korzystanie z responsywnego projektu i wykrywania funkcji, aby wyświetlać odpowiedni interfejs użytkownika.
Informacje dostarczane przez przeglądarkę w przypadku ciągu znaków User-Agent i wskazówek klienta User-Agent pochodzą z tego samego źródła, więc powinny działać te same formy logiki.
Jeśli na przykład w ciągu UA jest zaznaczony ten wzorzec:
- Wzór telefonu:
'Android' + 'Chrome/[.0-9]* Mobile'
- Wzór na tablet:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Dopasowanie domyślnych nagłówków UA-CH może być sprawdzane w interfejsie:
- Wzór numeru telefonu:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- Wzór tabletu:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
Lub odpowiedni interfejs JavaScript:
- Wzór telefonu:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- Wzór na tablet:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
W przypadku zastosowań związanych z konkretnym sprzętem nazwę modelu urządzenia można poprosić za pomocą podpowiedzi o wysokiej entropii Sec-CH-UA-Model
.
Jak używać i testować ograniczoną wersję UA?
Na początek sprawdź kod witryny pod kątem występowania i zastosowania ciągu User-Agent. Jeśli Twoja witryna używa analizowania ciągu User-Agent do odczytania modelu urządzenia, wersji platformy lub pełnej wersji przeglądarki, musisz wdrażać interfejs UA-CH API.
Po przejściu na interfejs UA-CH API przeprowadź testy, aby upewnić się, że otrzymujesz oczekiwane dane o użytkowniku. Testowanie można przeprowadzać na 3 sposoby, a każdy z nich jest coraz bardziej złożony.
Skalowana dostępność funkcji redukcji klienta użytkownika oznacza, że w pełni zredukowany ciąg znaków UA jest dostarczany na wszystkich urządzeniach z Chrome. Zmniejszenie zaczęło się w II kwartale 2022 r. wraz z niewielką aktualizacją Chrome.
Testowanie lokalnie ciągów znaków niestandardowych
Jeśli chcesz przetestować swoją witrynę, używając niestandardowych ciągów tekstowych User-Agent do symulowania różnych urządzeń, uruchom Chrome z flagą wiersza poleceń --user-agent="Custom string here"
. Więcej informacji o flagach wiersza poleceń znajdziesz tutaj.
Możesz też użyć emulatora urządzenia w Narzędziach deweloperskich w Chrome.
Przekształcanie ciągu w kodzie witryny
Jeśli przetwarzasz istniejący ciąg znaków user-agent
w Chrome w kodzie po stronie klienta lub serwera, możesz przekształcić ten ciąg znaków w nowy format, aby przetestować zgodność. Możesz przetestować nowy ciąg znaków, zastępując nim poprzedni, albo wygenerować nową wersję i przetestować ją obok poprzedniej.
Obsługa podpowiedzi klienta i krytycznych podpowiedzi
Na serwer zwracane są 3 domyślne wskazówki dotyczące klienta, w tym nazwa przeglądarki i jej główna wersja, 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 protokołu Transport Layer Security (TLS). Są one już dostępne i obsługiwane w Twojej przeglądarce.
Czasami jednak konieczne jest pobranie ważnych informacji, aby witryna mogła się renderować.
Optymalizacja wskazówek krytycznych
Uzgadnianie połączenia TLS to pierwszy krok do utworzenia bezpiecznego połączenia między przeglądarką a serwerem WWW. Bez interwencji nagłówek odpowiedzi Critical-CH został zaprojektowany tak, aby informować przeglądarkę o konieczności natychmiastowego ponownego wysłania żądania, jeśli pierwsze zostało wysłane bez wskazówki krytycznej.

Sec-CH-UA-Model
jest wysyłana dwukrotnie: raz jako podpowiedź klienta z wartością Accept-CH
i ponownie jako podpowiedź krytyczna z wartością Critical-CH
.Aby optymalizować podpowiedzi krytyczne (nagłówek Critical-CH
), musisz przechwycić to połączenie i podać model dla podpowiedzi klienta. Te czynności mogą być skomplikowane i wymagać zaawansowanej wiedzy.
Ramki ACCEPT_CH
HTTP/2 i HTTP/3 w połączeniu z rozszerzeniem TLS ALPS to optymalizacja na poziomie połączenia, która umożliwia dostarczenie preferencji wskazówek klienta serwera na czas przed pierwszym żądaniem HTTP. Wymagają one złożonej konfiguracji i zalecamy ich używanie tylko w przypadku naprawdę ważnych informacji.
BoringSSL (odgałę OpenSSL) ułatwia korzystanie z eksperymentalnych funkcji Google w Chromium. Obecnie ALPS jest wdrażany tylko w BoringSSL.
Jeśli chcesz używać wskazówek krytycznych, zapoznaj się z naszym przewodnikiem dotyczącym wiarygodności i optymalizacji wskazówek krytycznych.
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 podania innego zestawu wskazówek.
Czy UA-CH działa z HTTP/2 i HTTP/3?
UA-CH działa z połączeniami HTTP/2 i HTTP/3.
Czy domeny podrzędne (i CNAME) wymagają strony najwyższego poziomu Permissions-Policy
, aby uzyskać dostęp do adresu UA-CH o wysokiej entropii?
Wysokiej entropii UA-CH w nagłówkach żądań są ograniczone w przypadku żądań między domenami niezależnie od tego, jak to źródło jest zdefiniowane po stronie DNS. Delegowanie musi być obsługiwane za pomocą Permissions-Policy
w przypadku dowolnego zasobu podrzędnego z innej domeny lub uzyskanego za pomocą kodu JavaScript, który jest wykonywany w kontekście między domenami.
Jak redukcja klienta użytkownika wpływa na wykrywanie botów?
Zmiana w Chrome w ciągu tekstowym User-Agent nie ma bezpośredniego wpływu na ciąg tekstowy User-Agent, który bot zdecyduje się wysłać.
Boty mogą zaktualizować własne ciągi znaków, aby odzwierciedlały ograniczone informacje wysyłane przez Chrome, ale jest to całkowicie ich wybór. Chrome nadal wysyła ten sam format nagłówka User-Agent, a boty, które dodają własny identyfikator na końcu ciągu tekstowego nagłówka User-Agent w Chrome, nadal mogą to robić.
Jeśli masz jakiekolwiek wątpliwości dotyczące konkretnych botów, skontaktuj się bezpośrednio z ich właścicielami i zapytaj, czy planują zmienić ciąg User-Agent.
Zaangażowanie i przesyłanie opinii
- Testowanie origin: prześlij opinię na temat poprzednich wersji próbnych origin.
- Demo: wypróbuj demo redukcji klienta użytkownika.
- GitHub przeczytaj opis UA-CH, zadawaj pytania i obserwuj dyskusję.
- Pomoc dla deweloperów: zadawaj pytania i ucz się na temat Piaskownicy prywatności w repozytorium Pomoc dla deweloperów Piaskownicy prywatności.
Więcej informacji
- Poprawa prywatności użytkowników i wrażeń deweloperów: omówienie dla programistów internetowych
- Migracja z łańcucha UA na UA-CH: samouczek dla programistów stron internetowych
- Więcej informacji o Piaskownicy prywatności