Блог
Часы профиля и адрес выхода расходятся: что площадка сверяет первым
Команда ARMANOS7 мин
Что площадка читает на первой странице
Адрес приходит раньше любого скрипта: он стоит в каждом запросе, иначе ответ до вас не дойдёт. Разрешения на это никто не спрашивает, и отключить его нельзя.
Часы приходят следом: имя пояса отдаёт сам браузер, без спроса и без задержки. Площадка сравнивает не время с временем, а страну со страной.
- 1
Читает адрес
Он стоит в заголовке запроса, до первой строки самой страницы.
- 2
Спрашивает часы
Имя пояса вроде Europe/Berlin браузер отдаёт любой странице.
- 3
Ведёт обратный ход
От пояса к стране и от языка к стране, и обе сверяет с адресом.
Один пояс называет ровно одну страну
Пояс это не время на часах, а имя вроде Europe/Berlin или Europe/Moscow. У каждого имени есть своя страна, и обратный ход от него однозначен.
На 114 стран приходится 114 разных поясов и столько же разных языковых наборов. Значит и пояс, и набор языков называют площадке страну сами по себе, без вашего адреса.
| Что стоит на каждую страну | Сколько |
|---|---|
| Стран с готовой парой часов и языков | 114 |
| Разных поясов среди них | 114 |
| Разных языковых наборов | 114 |
| Наборов, где английский стоит в хвосте | 109 |
| Стран, у которых поясов несколько | 7 |
Немецкий адрес и московские часы рядом
Возьмите немецкий адрес и профиль с поясом Europe/Moscow. Площадка получает из одного визита две страны и выбирает, какой из них верить.
Ни одна настоящая машина так не отвечает: человек в Берлине держит берлинские часы, а не московские. Расхождение видно без единого дополнительного запроса.
| Что площадка читает | Куда это ведёт |
|---|---|
| Адрес выхода | Германия |
| Часы профиля | Europe/Moscow |
| Страна по этим часам | Россия |
| Языки у профиля | ru-RU, ru, en |
| Языки немецкого адреса | de-DE, de, en |
Язык профиля называет ту же страну
Список языков площадка читает тем же движением, что и часы. Первый тег в нём несёт область: de-DE это Германия, ru-RU это Россия.
Наборы бывают разной длины: у 10 стран два языка, у 85 три, у 19 четыре. Английский есть во всех 114, и в хвосте он стоит у 109: у оставшихся пяти за ним идёт местный язык.
Откуда ваш профиль берёт часы
Страну своего адреса профиль спрашивает сам и спрашивает её через тот же прокси, каким пойдёт дальше. Ответ приходит по защищённому соединению от четырёх независимых источников подряд.
Иначе владелец прокси назвал бы вашему профилю любую страну и выдал ему часы, спорящие с его же адресом. Открытый ответ по дороге правит кто угодно, защищённый нет.
- 1
Через ваш же прокси
Вопрос уходит той дорогой, какой потом пойдёт профиль, а не мимо неё.
- 2
Только по защищённому соединению
Иначе страну подменяет любой, кто стоит на пути ответа.
- 3
Четыре источника вместо одного
Отказ одного не решает, какие часы достанутся вашему профилю.
Часы ставит движок, а не скрипт
В ARMANOS Browser часы профилю ставит сам браузер, и потому имя пояса и сдвиг от UTC приходят из одного места. На встроенном движке их ставит скрипт поверх страницы: там это тоже одно место, но слой другой.
Площадка часто спрашивает обоими ходами сразу. Браузер, у которого эти два ответа расходятся, выдаёт подмену быстрее, чем сам пояс.
Семь стран с несколькими поясами
У большинства стран набора пояс один, и профиль получает именно его. Но восемь стран записаны отдельно, и семь из них несут по нескольку поясов: США и Канада по четыре, Австралия четыре, Бразилия, Мексика и Россия по три, Индонезия два.
Для таких стран пояс выпадает профилю жребием из своего зерна, и выбор идёт среди поясов, которые в этой стране действительно живут. Поэтому два профиля на одном американском адресе чаще показывают разные часы, и это работает на вас: одинаковые часы у пяти профилей сказали бы площадке больше, чем разные. Люди за одним адресом провайдера живут в разных поясах, и для площадки это обычная картина.
Язык приходит парой с областью
Набор языков у страны начинается с точной пары: для Германии это немецкий Германии, для России русский России. Дальше идёт чистый язык, а замыкает английский. В ста девяти наборах из ста четырнадцати он стоит последним, в остальных пяти за ним идёт местный.
Пара с областью важнее самого языка. Немецкий Австрии на немецком адресе это не ошибка, а вот немецкий Германии рядом с бразильским адресом уже разнобой. Площадка сверяет эти две строки между собой, а не каждую по отдельности.
Профиль не знает вашего города
Часы берутся по стране, а не по городу выхода. Если ваш адрес в Денвере, а профилю выпал пояс Нью-Йорка, площадка увидит разницу в два часа внутри одной страны. Города профиль не знает и узнать его не может: продавец адреса город не сообщает, а гадать по адресу мы не беремся.
Такое бывает и у живых людей: человек летит через страну с ноутбуком, и часы на нём остаются домашними. Но если это повторяется у пяти ваших профилей подряд, картина складывается другая. Один странный профиль это случай, пять одинаково странных это правило.
Почему набор стран именно такой
В наборе сто четырнадцать стран, и у каждой готовая пара: пояс и набор языков по порядку. Это те страны, откуда продавцы чаще всего дают адреса, и набор собран под них, а не под весь мир.
Страна вне набора не остаётся без часов совсем: пояс и язык выпадут профилю жребием из его зерна, как и всё остальное в отпечатке. Но совпадать со страной адреса они тогда не обязаны, и программа об этом не предупреждает.
Поэтому адрес из редкой страны стоит проверить на первой же странице: часы и язык там расскажут о профиле больше, чем сам адрес.
Что смотреть после смены прокси
Смена адреса на прокси страну выхода не меняет, пока прокси тот же: продавец даёт другой адрес в той же стране. А вот перенос профиля на прокси другой страны меняет всё сразу: и часы, и язык.
После такого переноса откройте профиль и сверьте три вещи рядом: адрес, часы и первый язык. Расхождение видно одним взглядом, и чинится оно до первого входа, а не после. После входа площадка уже записала первую пару чисел, и переписать её нечем.
Как проверить это у себя
Откройте профиль и прочитайте четыре значения подряд: адрес, имя пояса, сдвиг от UTC и список языков. Сведите их к одной стране.
Страны разошлись, значит площадка видит ровно то же самое. Сошлись, значит по этой паре сигналов вы выглядите обычной машиной своей страны.
Чего это не утверждает
- Это не утверждает, что такую сверку делает каждая площадка. Кто-то сводит страну с адресом на первом визите, кто-то не смотрит вовсе, и правил своих не публикует никто.
- Часы приходят по стране адреса, а не по его городу. Адрес из Лос-Анджелеса и нью-йоркские часы остаются одной страной, и сверка по стране такой разницы не увидит.
- Страны, которой нет в наборе из 114, профиль в свои часы не получит: пояс и язык выпадут ему жребием из собственного зерна. Предупреждение при запуске выходит на другой случай, когда страну не удалось определить вовсе, и про этот программа молчит.
- Ни один браузер не чинит поведение. Одинаковые тексты, одна карта оплаты и один распорядок дня связывают аккаунты помимо часов и адреса.
Где это можно увидеть самому
Каждое число выше выходит из кода, который можно открыть и запустить.
- Пояс и языковой набор каждой из 114 стран стоят одной строкой
- packages/shared/src/index.js · apps/desktop/test/fingerprint-consistency.js
- Карточка профиля показывает те же часы, что получит площадка
- apps/desktop/test/fingerprint-card-matches.js
- Страну выхода профиль спрашивает через ваш же прокси и только по защищённому соединению
- apps/desktop/src/lib/exitGeo.js · apps/desktop/test/exit-geo.js
- Часы профиля читаются в живом браузере вместе с остальными показаниями
- apps/desktop/test/audit-on-builtin.js
- После смены адреса прежняя страна забывается, и часы приходят от нового
- apps/desktop/src/lib/proxyRotate.js · apps/desktop/test/ротация-адреса-исполняется.js
- Правка часов лежит в заплате, которую сборка движка действительно применяет
- engine/patches/armanos-fp.cumulative.diff · apps/desktop/test/engine-patches-real.js
Вопросы
- Насколько быстро площадка это замечает?
- Оба значения приходят в одном визите, поэтому сравнить их можно на первой же странице. Ждать вашего поведения или истории аккаунта для этого не нужно.
- Прокси немецкий, а часы я хочу оставить свои. Так можно?
- Поставленное рукой не переписывается: вы знаете, чего хотите. Но площадке вы в этот момент называете две страны сразу, и выбирать будет она.
- Если поставить часы рукой, язык подтянется сам?
- Да, когда страна профилю не задана адресом. Выбранный рукой пояс тянет за собой языки своей страны, а выбранный язык тем же ходом тянет часы.
- У меня американский прокси, а часы у профилей разные. Это ошибка?
- Нет. У семи стран поясов несколько, и профили на американском адресе получают разные американские часы. Страна при этом у всех одна.
- Часы отвечают Europe/Kiev вместо Europe/Kyiv. Это подделка?
- Нет, это каноническое имя пояса. Так же отвечает и обычный Chrome, и Asia/Kolkata у него тоже превращается в Asia/Calcutta.
- Адрес меняется перед запуском. Часы поедут за ним?
- Да. Прежняя страна при смене адреса забывается, и часы с языком профиль берёт уже от нового адреса, а не от вчерашнего.
Рядом с этим
Подмена часового пояса
Какими ходами сайт читает часы и где эти чтения расходятся.
Адрес выхода
Откуда площадка узнаёт вашу страну и что тянется за адресом.
Список языков браузера
Что стоит в этом списке у настоящей машины и в каком порядке.
Бесплатная проверка отпечатка
12 значений, прочитанных в вашем браузере, и ни одного запроса наружу.
Посмотрите, что отвечает ваш браузер
Проверка читает 12 значений прямо в вашем браузере и никуда их не отправляет.