Redukcja ciągu tekstowego klienta użytkownika minimalizuje informacje identyfikacyjne udostępniane w ciągu tekstowym klienta użytkownika, które mogą być wykorzystywane do pasywnego pobierania odcisków cyfrowych. Po wprowadzeniu tych zmian w ramach ogólnej dostępności wszystkie żądania zasobów mają mniejszy nagłówek User-Agent. W związku z tym zmniejszyliśmy liczbę wartości zwracanych przez niektóre interfejsy Navigator, w tym navigator.userAgent, navigator.appVersion i navigator.platform.
Deweloperzy stron internetowych powinni sprawdzić kod witryny pod kątem użycia ciągu User-Agent. Jeśli Twoja witryna opiera się na analizowaniu ciągu User-Agent w celu odczytania modelu urządzenia, wersji platformy lub pełnej wersji przeglądarki, musisz wdrożyć interfejs User-Agent Client Hints API.
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 konkretnych danych.
Usuwając dane użytkowników, które są udostępniane pasywnie, możemy lepiej mierzyć i ograniczać ilość informacji, które są celowo udostępniane przez nagłówki żądań, interfejsy API JavaScript i inne mechanizmy.
Dlaczego potrzebujemy skróconych ciągów UA i UA-CH?
W przeszłości ciąg znaków klienta użytkownika przy każdym żądaniu HTTP przesyłał długi ciąg danych o przeglądarce, systemie operacyjnym i wersji użytkownika. Było to problematyczne z 2 powodów:
- Szczegółowość i obfitość informacji mogą prowadzić do identyfikacji użytkownika.
- Domyślna dostępność tych informacji może prowadzić do ukrytego śledzenia.
Ograniczone 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ę przeglądarki i ważną wersję, informację o tym, skąd pochodzi żądanie (z komputera czy urządzenia mobilnego), oraz platformę. Aby uzyskać dostęp do większej ilości danych, interfejs User-Agent Client Hints umożliwia wysyłanie zapytań o konkretne informacje o urządzeniu użytkownika lub warunkach.
Ponadto z czasem ciąg User-Agent stawał się coraz dłuższy i bardziej złożony, co prowadziło do błędów w jego analizowaniu. UA-CH dostarcza uporządkowane i wiarygodne dane, które są łatwiejsze do interpretacji. Istniejący kod, który analizuje ciąg UA, nie powinien ulec uszkodzeniu (chociaż będzie zwracać mniej danych). Jeśli Twoja witryna potrzebuje konkretnych informacji o kliencie, musisz przejść na UA-CH.
Jak działa zmniejszona liczba jednostek reklamowych i jednostek reklamowych w kanale?
Oto krótki przykład działania zredukowanego ciągu tekstowego klienta użytkownika i UA-CH. Bardziej szczegółowy przykład znajdziesz w artykule Poprawa prywatności użytkowników i wrażeń programistó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.
- Przeglądarka zawiera nagłówek
User-Agentze skróconym ciągiem znaków klienta użytkownika. 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 uwzględnia te same informacje w domyślnych nagłówkach User-Agent 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 klienta, np. modelu urządzenia, za pomocą
Accept-CHnagłówka odpowiedzi. Przykład:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-ModelPrzeglądarka stosuje zasady i konfigurację użytkownika, aby określić, jakie dane mogą być zwracane 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 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 żądanych przez Accept-CH.
Na przykład pierwsze żądanie może obejmować Device-Memory i Viewport-Width, przy czym Device-Memory jest uznawane 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 krytycznej wskazówki (Critical-CH), aby prawidłowo wyrenderować stronę internetową, serwer może poprosić o te dodatkowe informacje za pomocą nagłówka Accept-CH. Przeglądarka może wtedy wysłać nowe żądanie strony, w tym wskazówkę o krytycznym znaczeniu.
Podsumowując, Accept-CH żąda wszystkich wartości, które chcesz uzyskać na stronie, a Critical-CH żąda tylko podzbioru wartości, które musisz mieć podczas wczytywania, aby prawidłowo wczytać stronę. Więcej informacji znajdziesz w specyfikacji niezawodności wskazówek klienta.
Wykrywanie tabletów za pomocą interfejsu UA-CH API
Granica między urządzeniami mobilnymi, tabletami i komputerami stacjonarnymi zaciera się, a dynamiczne formy urządzeń (składane ekrany, przełączanie między trybem laptopa i tabletu) stają się coraz bardziej popularne. Dlatego zalecamy stosowanie responsywnego projektowania i wykrywania funkcji, aby wyświetlać odpowiedni interfejs.
Informacje przekazywane przez przeglądarkę w przypadku ciągu znaków User-Agent i interfejsu User-Agent Client Hints pochodzą jednak z tego samego źródła, więc powinny działać te same formy logiki.
Jeśli na przykład ten wzorzec zostanie sprawdzony w ciągu UA:
- Wzór telefonu:
'Android' + 'Chrome/[.0-9]* Mobile' - Wzorzec tabletu:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Odpowiedni interfejs domyślnych nagłówków UA-CH może być zaznaczony:
- Wzorzec 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 równoważny interfejs JavaScript:
- Wzór telefonu:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true - Wzorzec tabletu:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
W przypadku zastosowań związanych z konkretnym sprzętem nazwę modelu urządzenia można uzyskać za pomocą wskazówki o wysokiej entropii Sec-CH-UA-Model.
Jak korzystać z ograniczonego zakresu danych o użytkownikach i go testować?
Na początek sprawdź kod witryny pod kątem wystąpień i użycia ciągu User-Agent. Jeśli Twoja witryna opiera się na analizowaniu ciągu User-Agent w celu odczytania modelu urządzenia, wersji platformy lub pełnej wersji przeglądarki, musisz wdrożyć interfejs UA-CH API.
Po zaktualizowaniu interfejsu UA-CH przeprowadź test, aby upewnić się, że otrzymujesz z ciągu User-Agent oczekiwane dane. Istnieją 3 sposoby testowania, z których każdy jest bardziej złożony od poprzedniego.
Skalowana dostępność redukcji klienta użytkownika oznacza, że w przypadku wszystkich urządzeń z Chrome będzie wysyłany w pełni zredukowany ciąg klienta użytkownika. Ograniczenie zaczęło obowiązywać w drugim kwartale 2022 r. w ramach aktualizacji Chrome.
Testowanie niestandardowych ciągów znaków lokalnie
Jeśli chcesz przetestować witrynę za pomocą niestandardowych ciągów tekstowych klienta użytkownika, aby symulować różne urządzenia, 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łć ciąg znaków w kodzie witryny
Jeśli w kodzie po stronie klienta lub serwera przetwarzasz ciąg znaków user-agent Chrome, możesz przekształcić go w nowy format, aby sprawdzić zgodność. Możesz to zrobić, zastępując ciąg znaków lub generując nową wersję i testując ją równolegle z obecną.
Obsługa wskazówek klienta i wskazówek krytycznych
Serwerowi są zwracane 3 domyślne wskazówki klienta, w tym nazwa przeglądarki i wersja główna, wartość logiczna wskazująca, czy przeglądarka jest na urządzeniu mobilnym, oraz nazwa systemu operacyjnego. Są one wysyłane po uzgodnieniu połączenia protokołu TLS. Są one już dostępne i obsługiwane w Twojej przeglądarce.
Czasami jednak możesz potrzebować pobrać ważne informacje, aby witryna mogła się wyświetlić.
Optymalizacja wskazówek o znaczeniu krytycznym
Uzgadnianie połączenia TLS to pierwszy krok do utworzenia bezpiecznego połączenia między przeglądarką a serwerem internetowym. Bez interwencji nagłówek odpowiedzi Critical-CH miał informować przeglądarkę, aby natychmiast ponowiła żądanie, jeśli pierwsze zostało wysłane bez krytycznej wskazówki.
Sec-CH-UA-Model jest żądana 2 razy: raz jako wskazówka klienta z Accept-CH i ponownie jako wskazówka krytyczna z Critical-CH.Aby zoptymalizować krytyczne wskazówki (Critical-CH nagłówek), musisz przechwycić to uzgadnianie i udostępnić model wskazówek klienta. Te kroki mogą być złożone i wymagać zaawansowanej wiedzy.
ACCEPT_CH Ramki HTTP/2 i HTTP/3 w połączeniu z rozszerzeniem TLS ALPS to optymalizacja na poziomie połączenia, która umożliwia dostarczanie preferencji wskazówek klienta serwera na czas pierwszego żądania HTTP. Wymagają one złożonej konfiguracji, dlatego zalecamy używanie ich tylko w przypadku naprawdę krytycznych informacji.
BoringSSL (odmiana OpenSSL) pomaga korzystać z eksperymentalnych funkcji Google w Chromium. Obecnie ALPS jest wdrożony tylko w BoringSSL.
Jeśli musisz użyć wskazówek krytycznych, zapoznaj się z naszym przewodnikiem na temat niezawodności i optymalizacji wskazówek krytycznych.
Najczęstsze pytania
Jak długo będą wysyłane wskazówki 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 zarówno w przypadku połączeń HTTP/2, jak 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?
Nagłówki żądań z informacjami UA-CH o wysokiej entropii są ograniczone w przypadku żądań pochodzących z innych domen, niezależnie od tego, jak ta domena jest zdefiniowana po stronie DNS. Delegowanie musi być obsługiwane za pomocą Permissions-Policy w przypadku wszystkich zasobów podrzędnych z innych domen lub uzyskiwane za pomocą kodu JavaScript wykonywanego w kontekście innej domeny.
Jak redukcja klienta użytkownika wpływa na wykrywanie botów?
Zmiana w ciągu tekstowym klienta użytkownika Chrome nie ma bezpośredniego wpływu na ciąg tekstowy klienta użytkownika, który bot wybiera do wysłania.
Boty mogą aktualizować własne ciągi znaków, aby odzwierciedlały zmniejszoną ilość informacji wysyłanych przez Chrome, ale to zależy wyłącznie od ich implementacji. Chrome nadal wysyła ten sam format klienta użytkownika, a boty, które dodają własny identyfikator na końcu ciągu klienta użytkownika Chrome, mogą to nadal robić.
Jeśli masz wątpliwości co do konkretnych botów, warto skontaktować się bezpośrednio z ich właścicielami i zapytać, czy planują zmienić ciąg klienta użytkownika.
Angażowanie się i przesyłanie opinii
- Wersja próbna origin: prześlij opinię o wcześniejszych wersjach próbnych origin.
- Demo: wypróbuj nasze demo redukcji klienta użytkownika.
- GitHub przeczytaj wyjaśnienie UA-CH, zadawaj pytania i śledź dyskusję.
Więcej informacji
- Zwiększanie prywatności użytkowników i poprawianie komfortu pracy deweloperów: omówienie dla deweloperów stron internetowych
- Przenoszenie ciągu UA do UA-CH: samouczek dla programistów stron internetowych
- Szczegółowe informacje o Piaskownicy prywatności