Перейти к содержимому

Блог

Часы профиля и адрес выхода расходятся: что площадка сверяет первым

Прокси вы купили немецкий, а часы в профиле показывают московские. Площадка получает оба значения на первой же странице: адрес стоит в заголовке запроса, имя пояса отдаёт первый скрипт. Дальше она ведёт обратный ход от часов к стране, и эта страна обязана совпасть со страной адреса.

Команда ARMANOS7 мин

Что площадка читает на первой странице

Адрес приходит раньше любого скрипта: он стоит в каждом запросе, иначе ответ до вас не дойдёт. Разрешения на это никто не спрашивает, и отключить его нельзя.

Часы приходят следом: имя пояса отдаёт сам браузер, без спроса и без задержки. Площадка сравнивает не время с временем, а страну со страной.

  1. 1

    Читает адрес

    Он стоит в заголовке запроса, до первой строки самой страницы.

  2. 2

    Спрашивает часы

    Имя пояса вроде Europe/Berlin браузер отдаёт любой странице.

  3. 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. 1

    Через ваш же прокси

    Вопрос уходит той дорогой, какой потом пойдёт профиль, а не мимо неё.

  2. 2

    Только по защищённому соединению

    Иначе страну подменяет любой, кто стоит на пути ответа.

  3. 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 значений прямо в вашем браузере и никуда их не отправляет.