Co to jest zmniejszenie liczby klientów użytkownika?

Redukcja ciągu tekstowego klienta użytkownika (UA) minimalizuje informacje identyfikacyjne udostępniane 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.appVersionnavigator.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 zbioru 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 dwóch 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ę 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 konkretnych 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:

  1. Przeglądarka wysyła żądanie wczytania strony internetowej.

    1. 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
    2. 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"
      
  2. 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

  3. 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 dotyczących 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-MemoryViewport-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 wzór:

  • 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 ze 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 dane, których oczekujesz od nagłówka User-Agent. 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 na wszystkich urządzeniach z Chrome jest wysyłany całkowicie zredukowany ciąg znaków UA. 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 po stronie serwera, możesz przekształcić ten ciąg w nowy format, aby przetestować zgodność. Możesz przetestować nowy ciąg znaków, zastępując nim poprzedni, lub wygenerować nową wersję i przetestować ją obok starszej.

Obsługa podpowiedzi klienta i krytycznych podpowiedzi

Na serwer zwracane są 3 domyślne wskazówki klienta, w tym nazwa i główna wersja przeglądarki, 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.

Diagram sekwencji wskazówek dotyczących klienta z wskazówkami krytycznymi
Gdy serwer poprosi o wskazanie wskazówki krytycznej, klient spróbuje ponownie wysłać pierwsze żądanie strony internetowej z wskazówką krytyczną. W tym przykładzie podpowiedź 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 zoptymalizować 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

Więcej informacji