Това хранилище съдържа нормализиран и подбран набор от низове за потребителски агенти, който се съхранява като JSON файлове и е предназначен да се използва като таблица за справки за извличане на прости данни за потребителския агент, включително тип клиента и операционната система.
Използва се като компонент на PageviewsOnline, но е публикуван тук за общо предназначение.
Наборът от данни е допълнен със прости помощни скриптове за валидиране на данните и експортиране в други формати или програмни езици (като Java).
Философия на проекта
Целта на този проект не е да предоставя безпогрешна или напълно точна система за разпознаване на user-agent, а по-скоро практично решение, което се изгражда с най-добрите усилия и се подобрява с времето благодарение на реална употреба и принос от общността.
Разпознаването на потребителския агент е по своята природа несъвършено. Вместо да преследваме пълна точност, този проект се фокусира върху това да бъде:
- Практичен
- Лесно поддържан
- Прозрачен
- Достатъчно добро за аналитика и класификация в реалния свят
Точността се подобрява с времето благодарение на подбрани актуализации, реална употреба и принос от общността.
Хеуристичното парсване и сложните регулярни изрази често жертват предсказуемостта за маргинални подобрения в точността.
Този проект предпочита:
- Прозрачност над магията
- Подбрани данни, вместо непрозрачна логика
- Обясними резултати пред спекулативно откриване
Функции
- Нормализиран, ръчно проверен набор от данни за потребителски агенти
- Просто и предсказуемо поведение при търсене
- Формат, базиран на JSON, лесен за преглеждане и управление на версиите
- Леки скриптове за валидиране
- Експортиране на помощни функции за други езици (напр. Java)
- Активно се използва в продукционна SaaS среда
Нормализирани User-Agent низове
Основната цел на този проект е да извлича информация с високо ниво на абстракция и стабилност от низовете на потребителския агент по бърз и предвидим начин.
За да подпомогнем това, всеки низ от потребителски агент се нормализира преди обработката. Нормализацията премахва нестабилни вариации (като номера на версиите и различия в големината на буквите), докато запазва структурното и семантичното значение на потребителския агент.
Стрингите на потребителския агент се нормализират чрез следните стъпки:
- Заместете всички цифри (0-9) с заместителен символ x. Това премахва шума, причинен от промените във версията, като запазва структурата на токена и дължината.
- Преобразувайте целия низ към малки букви. Токени на потребителския агент са нечувствителни към регистъра по конвенция, а преобразуването към малки букви осигурява консистентни и надеждни търсения.
Например, следният низ на потребителския агент:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Нормализирано до:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Този подход за нормализация улеснява групирането, сравняването и поддържането на потребителските агенти с течение на времето, като едновременно остава достатъчно точен за класифициране на клиентски устройства и операционни системи на високо ниво.
Като премахнем версионо-специфична и свързана с регистъра на буквите вариабилност, процесът на търсене става по-предвидим и по-устойчив към бъдещи промени в потребителския агент.
Формат на данните
Всеки нормализиран запис за потребителски агент съдържа:
- id - Нормализираният низ на потребителския агент
- client_family - Високо ниво на класификация на клиента (напр. браузър, бот, приложение)
- os_family - класификация на операционните системи от високо ниво
Точните полета могат да се променят с времето, докато наборът от данни нараства.
Поведение при търсене
Съпоставянето на потребителския агент се извършва срещу нормализирани низове.
Точни съвпадения са за предпочитане; частични или евристични съвпадения са умишлено избягвани, за да се запази поведението предвидимо и дебъгируемо.
Участие
Приносите са много добре дошли и помагат за подобряване на общото качество и точността на този проект.
Най-ефективният начин да допринесете е да добавяте или актуализирате нормализирани записи за потребителски агенти във файла user_agents.json, заедно с всички релевантни данни за класификация.
След като промените са готови, моля изпратете pull request, съдържащ необходимите данни и/или актуализации на кода.
Дори частична или непълна информация е полезна и ценена - всеки принос помага за подобряване на обхвата и дългосрочната надеждност.
Започване (Бързо ръководство)
Същността на този проект е наборът от JSON файлове с данни, разположени в директорията data/.
За да помогнем за поддържането и повторното използване на тези данни, репозиторията включва малък набор от прости Node.js скриптове, които изпълняват базова валидация и задачи за експортиране.
Често използвани команди:
- npm run test - Валидира данните в JSON и проверява за структурни или консистентни грешки.
- npm run build - Създава, подрежда и експортира нормализираните данни в други формати за езици за програмиране (например Java) за по-лесна интеграция.
Тези инструменти са умишлено минималистични, фокусирани върху точността на данните и преносимостта, вместо сложна обработка.
Низове на потребителския агент не са надеждни
Извличането на точна информация от низовете на потребителския агент е по същество ненадеждно поради няколко причини:
- Няма формален стандарт или спецификация, който регламентира структурата или съдържанието на низовете на потребителския агент.
- Много потребителски агенти целенасочено маскират или имитират други потребителски агенти заради съвместимост и остарели причини
Заради това е изключително трудно да се определят данните за потребителския агент по напълно точен и последователен начин.
Тази библиотека следва да се разглежда като решение, направено с най-големи усилия, а не като източник на гарантирана или авторитетна истина.
С продължително използване и принос от общността, точността може да се подобри с течение на времето.
Версиониране и стабилност
Наборът от данни може да се промени с течение на времето, тъй като потребителските агенти се развиват.
Класификациите не се считат за промени, нарушаващи съвместимостта, дори между по-малки версии.
Потребителите трябва да третират резултатите като ориентировъчни насоки, постигнати с най-големи усилия, а не като договорни гаранции.
Лиценз
Този проект и данните му са лицензирани под Apache License 2.0 (Apache-2.0).
Комерсиалното използване, модифицирането и разпространението са позволени.
Приносите са добре дошли и се ценят.
Търговска марка
PageviewsOnline, Two-Dot-Oh и всички свързани лога, имена на услуги или брандинг са търговски марки на Two-Dot-Oh.
Този проект е с отворен код; обаче използването на името PageviewsOnline или свързаното брандиране във връзка с продукт, услуга или предложение не е разрешено без предварително писмено съгласие.
Форкове и производни творби трябва да използват различно име и бранд идентичност и не трябва да намекват за одобрение или свързаност с PageviewsOnline или Two-Dot-Oh.