tgoop.com/super_oleg_dev/122
Last Update:
Привет!
Заметка про Client Hints API
Переходили на это API на сервере, с фаллбэком на парсинг User-Agent через ua-parser-js
, как было раньше.
На сервере это HTTP заголовок sec-ch-ua
который легко разобрать.
Также недавно интегрировали на клиенте, там данные доступны в navigator.userAgentData
.
Про саму апишку писать не буду, главное что это должно упрощять и ускорять определение браузера и устройства, есть свои нюансы с тем что бы получить подробные данные, но это наше будущее.
Столкнулся с проблемой мокирования User-Agent и взаимодействия с этой апишкой в следующих кейсах:
- в Chrome Devtools при эмуляции мобильных устройств
- в Playwright при использовании кастомного User-Agent
Проблема следующая - navigator.userAgentData
не синхронизируется с navigator.userAgent
:
- для устройств с Chrome и Android, где поддержка Client Hints есть, пишет реальную версию текущего браузера, хотя в UA условно 80й хром
- для IOS + Safari - вместо undefined
, как должно быть если апишка не поддержкивается, возвращает бесполезный объект с пустым массивом brands
и пустой строкой в platform
Пример проблемы - https://github.com/microsoft/playwright/issues/14361
Такая вот не приятная особенность, усложняет и внедрение использования этой апишки в приложение с существующими тестами, и локальную проверку в браузере, решается только мокированием или использованием реального браузера.
Надеюсь будет полезно!
BY SuperOleg dev notes

Share with your friend now:
tgoop.com/super_oleg_dev/122