zmiany w ciągu User-Agent, strategie stosowane przez Chrome i Firefox w celu zminimalizowania wpływu tych zmian oraz to, jak możesz pomóc.
Chrome i Firefox osiągną wersję 100 za kilka miesięcy. Może to spowodować problemy w witrynach, które do wykonywania logiki biznesowej polegają na identyfikowaniu wersji przeglądarki. W tym poście znajdziesz chronologię wydarzeń, strategie stosowane przez Chrome i Firefox w celu zminimalizowania wpływu oraz informacje o tym, jak możesz pomóc.
Ciąg znaków klienta użytkownika
User-Agent (UA) to ciąg znaków, który przeglądarki wysyłają w nagłówkach HTTP, aby serwery mogły zidentyfikować przeglądarkę. Ten ciąg znaków jest też dostępny w JavaScript za pomocą navigator.userAgent
.
Zwykle ma format:
<browser_name>/<major_version>.<minor_version>
Na przykład w momencie publikacji tego posta najnowsze wersje przeglądarek to:
- Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
- Firefox:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
- Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
Wersja główna 100 – trzycyfrowy numer wersji
Główna wersja 100 to ważny kamień milowy zarówno w przypadku Chrome, jak i Firefoxa. Może też powodować problemy w witrynach, ponieważ przechodzimy z 2-cyfrowej na 3-cyfrową wersję numeru. Deweloperzy internetowi stosują różne techniki analizowania tych ciągów znaków, od kodu niestandardowego po biblioteki analizowania User-Agent, które można następnie wykorzystać do określenia odpowiedniej logiki przetwarzania. Mechanizmy User-Agent i inne mechanizmy raportowania wersji wkrótce będą raportować 3-cyfrowy numer wersji.
Osie czasu w wersji 100
Przeglądarki w wersji 100 zostaną najpierw udostępnione w wersjach eksperymentalnych (Chrome Canary, Firefox Nightly), a potem w wersjach beta i stabilnych.
Przeglądarka | Oś czasu |
---|---|
Chrome (harmonogram wersji) | 29 marca 2022 r. |
Firefox (harmonogram wersji) | 3 maja 2022 r. |
Dlaczego 3-cyfrowy numer wersji może być problematyczny?
Gdy ponad 12 lat temu przeglądarki osiągnęły wersję 10, zostało odkryte wiele problemów z bibliotekami do analizowania informacji User-Agent, ponieważ liczba główna wersji wzrosła z 1 cyfry do 2.
Ponieważ nie ma jednej specyfikacji, różne przeglądarki mają różne formaty ciągu znaków User-Agent, a analiza User-Agent jest specyficzna dla witryny. Niektóre biblioteki do parsowania mogą zawierać zaszyfrowane założenia lub błędy, które nie uwzględniają 3-cyfrowych numerów wersji głównych. Wiele bibliotek poprawiło logikę analizowania, gdy przeglądarki przeszły na dwucyfrowe numery wersji, więc osiągnięcie trzycyfrowego numeru powinno spowodować mniej problemów. Mike Taylor, inżynier z zespołu Chrome, przeprowadził ankietę dotyczącą popularnych bibliotek do analizowania UA, w której nie wykryto żadnych problemów. W przypadku eksperymentów w Chrome w tym trybie wystąpiły pewne problemy, nad którymi pracujemy.
Co robią przeglądarki?
Zarówno Firefox, jak i Chrome przeprowadzały eksperymenty, w których aktualne wersje przeglądarek raportowały, że są to główne wersje 100, aby wykryć ewentualne problemy z witrynami. W efekcie zgłoszono kilka problemów, z których część została już rozwiązana. Te eksperymenty będą prowadzone do czasu wydania wersji 100.
Wprowadziliśmy też strategie zapobiegania skutkom błędów, na wypadek gdyby wydanie wersji 100 na kanały stabilne spowodowało większe szkody w witrynach, niż przewidywaliśmy.
Zapobieganie w Chrome
W Chrome plan awaryjny polega na tym, że za pomocą flagi zamrażamy wersję główną na 99 i zgłaszamy rzeczywisty numer wersji głównej w części dotyczącej wersji podrzędnej ciągu znaków User-Agent (kod został już opublikowany).
Wersja Chrome podana w ciągu znaków User-Agent jest zgodna ze wzorcem<major_version>.<minor_version>.<build_number>.<patch_number>
.
Jeśli zastosowano plan kopii zapasowej, ciąg User-Agent będzie wyglądał tak:
99.101.4988.0
Chrome przeprowadza też eksperymenty, aby mieć pewność, że raportowanie wartości trzycyfrowej w części ciągu znaków odpowiadającej wersji podrzędnej nie powoduje problemów, ponieważ wersja podrzędna w ciągu znaków User-Agent w Chrome od bardzo dawna raportuje wartość 0. Zespół Chrome zdecyduje, czy skorzystać z opcji zapasowej, na podstawie liczby i powagi zgłoszonych problemów.
Rozwiązanie w Firefoksie
W Firefoksie strategia zależy od tego, jak poważne jest uszkodzenie. Firefox ma mechanizm interwencji w witrynie.
Zespół ds. zgodności z internetem w Mozilla może naprawiać błędy w witrynach w Firefoxie za pomocą tego mechanizmu. Jeśli wpiszesz about:compat
na pasku adresu w Firefoksie, zobaczysz, co jest obecnie naprawiane. Jeśli witryna nie działa, gdy wersja główna w konkretnej domenie to 100, możesz rozwiązać problem, przesyłając wersję 99.
Jeśli problem jest powszechny, możesz zablokować wersję główną. Istnieją różne możliwe strategie, z których każda ma swoje zalety i wady. Mozilla może wysłać rzeczywisty numer wersji jako numer wersji podrzędnej, zamrozić ciąg znaków w całości lub wysłać rzeczywisty numer wersji za pomocą innych parametrów.
Każda strategia, która zwiększa złożoność ciągu User-Agent, ma duży wpływ na ekosystem. Postarajmy się wspólnie uniknąć kolejnych dziwnych zachowań.
Co możesz zrobić, aby pomóc?
W Chrome i Firefox Nightly możesz skonfigurować przeglądarkę tak, aby raportowała wersję 100 już teraz i zgłaszała wszelkie problemy.
Skonfiguruj Chrome tak, aby raportował wersję główną jako 100
- Jedź do:
chrome://flags/#force-major-version-to-100
. - Ustaw opcję na
Enabled
.
Konfigurowanie Firefoxa Nightly tak, aby raportował wersję główną jako 100
- Otwórz menu ustawień Firefoxa Nightly.
- Wyszukaj „Firefox 100”, a potem zaznacz opcję „Ciąg znaków klienta użytkownika Firefox 100”.
Testowanie i zgłaszanie problemów
- Jeśli jesteś administratorem witryny, przetestuj ją w Chrome i Firefoksie 100. Sprawdź kod i biblioteki do parsowania User-Agent i upewnij się, że obsługują one 3-cyfrowe numery wersji. Zebraliśmy niektóre wzorce, które obecnie powodują błędy.
- Jeśli opracowujesz bibliotekę do analizowania nagłówka User-Agent, dodaj testy do analizowania wersji o większej lub równej 100. Nasze wstępne testy wskazują, że najnowsze wersje bibliotek mogą sobie z tym poradzić. Internet ma jednak długą historię, więc jeśli masz stare wersje bibliotek parsowania, nadszedł czas, aby sprawdzić, czy nie występują problemy, i w razie potrzeby je zaktualizować.
- Jeśli przeglądasz internet i zauważysz jakieś problemy z dużą wersją 100, zgłoś je na stronie webcompat.com.