Изменения в строке User-Agent, стратегии, которые Chrome и Firefox применяют для смягчения воздействия, и то, как вы можете помочь.
Chrome и Firefox достигнут версии 100 через пару месяцев. Это может привести к сбоям на сайтах, которые полагаются на определение версии браузера для выполнения бизнес-логики. В этом посте рассказывается о хронологии событий, стратегиях, которые Chrome и Firefox применяют для смягчения воздействия, а также о том, как вы можете помочь.
Строка пользовательского агента
User-Agent (UA) — это строка, которую браузеры отправляют в заголовках HTTP, чтобы серверы могли идентифицировать браузер. Строка также доступна через JavaScript с помощью navigator.userAgent
. Обычно он оформляется следующим образом:
<browser_name>/<major_version>.<minor_version>
Например, последние версии браузеров на момент публикации этого поста:
- 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
Основная версия 100 — трехзначный номер версии.
Основная версия 100 — это важная веха как для Chrome, так и для Firefox. Это также может привести к поломке веб-сайтов по мере перехода от двухзначного к трехзначному номеру версии . Веб-разработчики используют всевозможные методы анализа этих строк: от специального кода до использования библиотек анализа User-Agent, которые затем можно использовать для определения соответствующей логики обработки. User-Agent и любые другие механизмы отчетности о версиях вскоре будут сообщать трехзначный номер версии.
Хронология версии 100
Браузеры версии 100 сначала будут выпущены в экспериментальных версиях (Chrome Canary, Firefox Nightly), затем в бета-версиях и, наконец, в стабильной версии.
Браузер | График |
---|---|
Chrome ( график выпуска ) | 29 марта 2022 г. |
Firefox ( график выпуска ) | 3 мая 2022 г. |
Почему трехзначный номер версии может быть проблематичным?
Когда чуть более 12 лет назад браузеры впервые достигли версии 10, было обнаружено множество проблем с библиотеками анализа User-Agent, поскольку основной номер версии изменился с одной цифры на две.
Без единой спецификации, которой необходимо следовать, разные браузеры имеют разные форматы строки User-Agent и анализ User-Agent для конкретного сайта. Вполне возможно, что некоторые библиотеки синтаксического анализа могут иметь жестко запрограммированные предположения или ошибки, которые не учитывают трехзначные основные номера версий. Многие библиотеки улучшили логику синтаксического анализа, когда браузеры перешли на двузначные номера версий, поэтому ожидается, что достижение трехзначного рубежа вызовет меньше проблем. Майк Тейлор , инженер команды Chrome, провел исследование распространенных библиотек синтаксического анализа UA, которое не выявило никаких проблем. Эксперименты с Chrome в полевых условиях выявили некоторые проблемы, над которыми ведется работа.
Что с этим делают браузеры?
И Firefox, и Chrome проводят эксперименты, в которых текущие версии браузера сообщают о основной версии 100, чтобы обнаружить возможную поломку веб-сайта. Это привело к появлению нескольких проблем , некоторые из которых уже исправлены . Эти эксперименты будут продолжаться до выпуска версии 100.
Существуют также стратегии резервного копирования на случай, если выпуск версии 100 на стабильных каналах нанесет веб-сайтам больший ущерб, чем ожидалось.
Устранение проблем Chrome
В Chrome план резервного копирования состоит в том, чтобы использовать флаг для замораживания основной версии на уровне 99 и сообщать реальный номер основной версии в части дополнительной версии строки User-Agent (код уже получен ).
Версия Chrome, указанная в строке User-Agent, соответствует шаблону <major_version>.<minor_version>.<build_number>.<patch_number>
.
Если используется план резервного копирования, строка User-Agent будет выглядеть следующим образом:
99.101.4988.0
Chrome также проводит эксперименты, чтобы гарантировать, что сообщение о трехзначном значении в младшей версии строки не приведет к поломке, поскольку младшая версия в строке Chrome User-Agent в течение очень долгого времени сообщала 0. Команда Chrome примет решение о том, следует ли прибегать к резервному копированию, в зависимости от количества и серьезности обнаруженных проблем.
Устранение последствий Firefox
В Firefox стратегия будет зависеть от того, насколько важна поломка. Firefox имеет механизм вмешательства на сайт . Команда Mozilla webcompat может оперативно исправлять неработающие веб-сайты в Firefox, используя этот механизм. Если вы наберете about:compat
в строке URL-адреса Firefox, вы увидите, что в настоящее время исправляется. Если сайт не работает, поскольку основная версия 100 в определенном домене, это можно исправить, отправив вместо него версию 99.
Если поломка широко распространена, можно заморозить основной номер версии. Существуют различные возможные стратегии, каждая из которых имеет свои плюсы и минусы. Mozilla может отправить реальный номер версии как дополнительный номер версии, полностью заморозить строку как есть или отправить реальный номер версии через другие параметры.
Любая стратегия, усложняющая строку User-Agent, оказывает сильное влияние на экосистему. Давайте работать вместе, чтобы избежать еще одного странного поведения.
Что вы можете сделать, чтобы помочь?
В Chrome и Firefox Nightly вы можете настроить браузер так, чтобы он прямо сейчас сообщал о версии 100 и сообщал о любых проблемах, с которыми вы сталкиваетесь.
Настройте Chrome так, чтобы он сообщал об основной версии как 100.
- Перейдите на
chrome://flags/#force-major-version-to-100
. - Установите для параметра значение
Enabled
.
Настройте Firefox Nightly, чтобы сообщать о основной версии как 100.
- Откройте меню настроек Firefox Nightly.
- Найдите «Firefox 100», а затем установите флажок «Строка пользовательского агента Firefox 100».
Тестируйте и сохраняйте отчеты
- Если вы занимаетесь сопровождением веб-сайта , протестируйте свой веб-сайт с помощью Chrome и Firefox 100. Проверьте код и библиотеки синтаксического анализа User-Agent и убедитесь, что они способны обрабатывать трехзначные номера версий. Мы собрали некоторые шаблоны, которые в настоящее время ломаются .
- Если вы разрабатываете библиотеку анализа User-Agent , добавьте тесты для анализа версий больше и равных 100. Наши ранние тесты показывают, что последние версии библиотек могут обрабатывать ее правильно. Однако Интернет имеет давнее наследие, поэтому, если у вас есть старые версии библиотек синтаксического анализа, пришло время проверить их на наличие проблем и, в конечном итоге, обновить их.
- Если вы просматриваете Интернет и заметили какие-либо проблемы с основной версией 100, отправьте отчет на webcompat.com .