Современные браузеры поддерживают множество языков для отображения контента, локализации интерфейса и работы с пользовательскими предпочтениями. Эта функциональность, будучи изначально направленной на удобство пользователей, стала важной частью антифрод-систем. Анализ языковых настроек позволяет выявлять возможные несоответствия между заявленным профилем пользователя и его реальными параметрами устройства. #### Что такое языки браузера? Языки браузера определяют, какой язык используется для отображения веб-страниц, интерфейса браузера и других элементов. Они представлены в виде списка предпочтительных языков, который браузер отправляет серверу в HTTP-заголовке Accept-Language. Также языковая информация может быть получена через объект navigator.language или navigator.languages в JavaScript. #### Как формируется языковой отпечаток? Языковой отпечаток (language fingerprint) включает следующие данные: 1. **Accept-Language** — перечень предпочтительных языков и их приоритет. • Пример: en-US,en;q=0.9,ru;q=0.8 2. **navigator.language** — основной язык браузера. • Пример: en-US 3. **navigator.languages** — массив предпочтительных языков. • Пример: [ "en-US", "en", "ru-RU" ] 4. **Язык интерфейса браузера** — язык, на котором отображается сам браузер. 5. **Язык операционной системы **— язык, установленный на уровне ОС. Эти параметры формируют комбинацию, которая может быть использована для идентификации пользователя. #### Применение языков в антифрод-системах Антифрод-системы анализируют языковые данные для выявления потенциально подозрительных пользователей. Вот несколько ключевых сценариев их использования: 1. **Выявление несоответствий:** • Если язык интерфейса браузера не совпадает с языком операционной системы. • Если Accept-Language содержит языки, не используемые в регионе пользователя. • Если предпочтительные языки пользователя меняются слишком часто. 2. **Проверка соответствия геолокации:** • Языковые настройки сравниваются с географическим положением пользователя, определённым по IP-адресу или GPS. • Например, если IP-адрес указывает на Францию, а языковые параметры настроены на китайский язык, это может вызвать подозрения. 3. **Определение подмены параметров:** • Если параметры navigator.language и navigator.languages противоречат друг другу. • Если язык браузера меняется при каждом новом визите. ###### Методы подмены языковых параметров Злоумышленники, стремясь обойти антифрод-системы, могут использовать различные методы для изменения языковых настроек: 1. **Подмена HTTP-заголовка Accept-Language:** • С помощью прокси или специального ПО изменяется содержимое заголовка, чтобы оно соответствовало желаемому профилю. 2. **Изменение параметров браузера:** • Использование антидетект-браузеров, позволяющих задавать произвольные значения navigator.language и navigator.languages. 3. **Эмуляция локализации:** • В браузере изменяется язык интерфейса, чтобы создать иллюзию соответствия региону. 4. **Частичная маскировка:** • Добавление дополнительных языков в Accept-Language, чтобы создать более универсальный профиль. ###### Как антифрод-системы выявляют подмену языков? 1. **Анализ согласованности:** • Проверка, чтобы все языковые параметры (HTTP-заголовок, navigator.language, язык интерфейса) соответствовали друг другу. 2. **Проверка на редкие комбинации:** • Выявление необычных языковых предпочтений, которые редко встречаются в реальной жизни (например, en-GB,ar-KW,ja-JP). 3. **Сравнение с эталонными данными:** • Использование базы данных для проверки вероятности использования определённых языков в конкретном регионе. 4. **Динамическое тестирование:** • Изменение языковых параметров на сайте и проверка реакции браузера. Например, если браузер не отражает изменения, это может указывать на подмену. 5. **Локализация ошибок и сообщений:** • Анализ языка системных сообщений браузера. Это трудно подделать, так как язык сообщений зависит от настройки ОС. #### Анализ языковых отпечатков Проверим, какие данные о местонахождении пользователя может получить сайт, откроем страницу browserleaks.com/javascript в нашем браузере Chrome:  На этой странице сайт получает информацию о дате и времени на устройстве пользователя, часовом поясе, локали, формате часов, типе календаря, системе записи чисел, основном и предпочтительных языках и информацию о синтезированных голосах в интерфейсе контроллера речевого сервиса. Проверим информацию о местонахождении по ip-адресу, откроем страницу browserleaks.com/ip  На этой странице сайт получает подробную информацию об ip-адресе пользователя и языках в http-заголовках. Посмотрим на нашей тестовой странице test-webapi.tech/language, какую ещё информацию может собирать сайт о местонахождении из браузера пользователя, Откроем страницу в браузере Chrome на сервере. Раздел T**ime Accuracy Check:**  В этом разделе мы получаем ip-адрес посетителя, проверяем Location с помощью стороннего сервиса по ip-адресу, получаем Coordinates и Browser Timezone из браузера пользователя **Важно:** на тестовой странице, все выводы о несоответствии параметров не являются точными и представлены только для примера анализа полученных данных. В разделе **Geolocation Services Results** страница получает информацию об ip-адресе из нескольких баз и сравнивает с полученной информацией в разделе Time Accuracy Check:  В разделе **Local Time Information** мы видим время, дату и часовой пояс непосредственно из браузера посетителя:  В разделе **Browser Language Settings** определяются языки браузера с помощью JavaScript и http-заголовков в основном потоке, web worker и service worker, после чего значения сравниваются между собой:  Заметим, что наличие русского языка у пользователя из Финляндии, уже может определяться Антифрод-системами как нетипичный показатель, особенно при массовых регистрациях аккаунтов. Рассмотрим следующий раздел - **System Messages Language Analysis:**  В этом разделе определяется язык сообщений об ошибках, язык текста валидации сообщений форм и язык системных сообщений в браузере пользователя. В разделе **Internationalization Details** мы видим региональные настройки, тип календаря, часовой пояс и систему счисления с помощью браузера из системных настроек устройства пользователя. Так же определяются форматы дат и формат отображения валют:  Формат отображения валют зависит от языковых настроек системы   Перейдём к последнему разделу **Speech Synthesis Voices**. В этом разделе проверяются доступные голоса для синтеза речи в браузере:  Набор голосов и их количество отличаются в браузерах, устройствах, и этот параметр позволяет Антифрод-системам достаточно точно идентифицировать пользователей и определять подозрительные визиты, особенно в сравнении с языковыми настройками браузера. Далее представлены несколько примеров с разных устройств: ПК Intel (браузер Chrome)  ПК Intel (браузер Chromium)  Пк Intel (браузер Firefox)  ПК AMD (браузер Chrome)  ПК AMD (браузер Chromium)  ПК AMD (браузер Firefox)  В результатах тестов, мы видим, что список голосов для синтеза речи отличается как между разными устройствами, так и в разных браузерах. Проверим антидетект-браузер, откроем страницу без профиля, с базовыми настройками: В результатах этого теста есть несколько расхождений в значениях: • Антидетект-браузер указывает на Time Zone - Europe/Moscow. • Представляет использование только en-US языка. • Использует всего 2 Voices из Ru локали (аналогично браузеру Chromium). • Представляется в заголовке User-Agent браузером Chrome. Попробуем применить профиль в антидетект-браузере и повторить тест: После применения профиля, антидетект-браузер правильно подменяет все параметры языка относительно заданного местоположения, кроме одного: сообщения валидации форм браузер показывает на En – языке, что является подозрительным при использовании основным Ru – языка в браузере. #### Определение Языка в браузере пользователя на примере Amazon и Google Проверим, какую информацию о языках из нашего браузера получает сайт Amazon. Откроем главную страницу в браузере Chrome:  При простом анализе файлов JavaScript можно заметить, что сайт получает информацию о предпочтительном языке и доступных языках в нашем браузере. Проверим, какую информацию о языках собирает Google. Откроем поисковую выдачу и посмотрим на код.  Сайт точно определил, что мы используем ru-язык, заметим, что браузер открыт на сервере, расположенном в Германии, что Google так же определяет (ru-DE).   Google так же собирает информацию о предпочтительном языке и доступных языках. Так же сайт анализирует события изменения языка голоса, языка целевого перевода и фиксирует информацию о выборе предложенного языка. #### Вывод Анализ языковых параметров браузера предоставляет антифрод-системам значительный объём информации для проверки подлинности пользователя. Эти параметры помогают выявлять несоответствия между настройками браузера, операционной системы, HTTP-заголовков и геолокацией, что позволяет распознавать потенциально подозрительное поведение. Тесты показали, что методы подмены языковых параметров, такие как использование антидетект-браузеров или изменение HTTP-заголовков, не всегда эффективны. Даже незначительные расхождения, например, язык системных сообщений, могут вызывать подозрения. Таким образом, языковые настройки становятся важным компонентом комплексной оценки профиля пользователя. Многие антифрод-системы активно используют языковой отпечаток как одну из основных метрик для анализа поведения, сопоставления данных и выявления подмен. Языковые параметры браузера — это мощный инструмент, который помогает антифрод-системам выявлять несоответствия и повышать безопасность проверок. Несмотря на попытки злоумышленников подменять языковые данные, системы выявляют такие манипуляции благодаря анализу согласованности параметров и редких комбинаций. Языковой отпечаток, формируемый на основе множества параметров, широко применяется для идентификации пользователей и обнаружения подозрительной активности. Использование этих данных в сочетании с другими механизмами, такими как геолокация и часовые пояса, позволяет значительно повысить точность детектирования мошенничества. В следующей статье мы продолжим разбор технологий браузера, используемых в антифрод-системах. *Bannykh M.V.*