User agent parsing: где ломаются библиотеки и как не словить мусор в логах
Парсинг UA часто используют как быстрый фильтр для device class, OS и браузера. Проблема в том, что строка user agent — не источник истины, а набор подсказок, который легко ломается при спуфинге, webview и кривых прокси-цепочках.
Главные подводные камни:
— одинаковые UA у разных устройств, особенно в мобильных webview;
— пустые или урезанные строки из-за privacy-режимов и встроенных браузеров;
— библиотека знает модель, но не видит реальный viewport, touch, canvas и timezone.
Если вы строите антифрод или трекинг, не делайте decision только по UA. Сверяйте его с Client Hints, Accept-Language, экраном, platform, cookie-jar и поведением сессии. Несовпадение одного поля — шум, нескольких сразу — уже сигнал.
Для продакшена лучше хранить сырую строку и нормализованный результат отдельно. Тогда можно перепарсить логи после обновления библиотеки и не терять историю. И не забывайте: регулярки в самописных парсерах быстро стареют, а edge-case'ы чаще всего сидят в iOS и Chromium-обвязках.
Практика простая: UA — это классификатор верхнего слоя, а не фильтр доверия. Чем больше источников вы сводите вместе, тем меньше ложных срабатываний и лишних банов.
Tracker Lab
@tracker_lab
User agent parsing: где ломаются библиотеки и как не словить мусор в логах
Этот пост опубликован в Telegram-канале Tracker Lab. Подписаться можно по ссылке: @tracker_lab.