Телефонные профили
Профиль, который сайт читает как телефон
- 22
- аппарата в телефонном списке, и каждый берётся целиком
- Целиком
- что приносит модель: экран, видеокарту, ядра, шрифты
- 5
- касаний, ровно столько сообщает Chrome на Android
- Одна сборка
- телефонный профиль рисует тот же настольный движок
Что такое телефонный профиль
Телефонный профиль это обычный профиль ARMANOS на андроидном шаблоне: те же куки, прокси и расписание, что у любого другого. Это не эмулятор и не телефон, стоящий в стойке.
Где проходит граница
Аппарат приходит целиком
У настольных шаблонов генератору позволено смешивать части: такие машины и правда продаются. Телефон так не собирают, поэтому модель приходит целиком и остаётся с профилем.
Экран и плотность пикселей
Оба идут от модели, а доступная высота равна высоте экрана.
Пара видеокарты
Производитель и название ровно так, как их отдаёт ANGLE на Android.
Ядра и память
Из строки аппарата, теми ступенями, какие отдаёт браузер.
Модель
Chrome убрал её из строки User agent, она живёт в подсказках клиента.
Версия системы
Никогда не старее той, с которой аппарат вышел.
Фирменные шрифты
Основной набор Android плюс шрифты самой оболочки.
Что видит страница
Семя приезжает движку в командной строке и применяется внутри него, до скриптов страницы. Это ответы самого движка, а не значения, дописанные поверх настоящих.
- navigator.userAgent
- Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Mobile Safari/537.36
- navigator.platform
- Linux armv8l
- screen.width × screen.height
- 360 × 780
- devicePixelRatio
- 3
- navigator.maxTouchPoints
- 5
- userAgentData.platform
- Android
- userAgentData.model
- SM-S911B
- userAgentData.mobile
- true
- userAgentData.formFactors
- ["Mobile"]
- userAgentData.architecture
- arm
- navigator.hardwareConcurrency
- 8
- navigator.deviceMemory
- 8
- Видеокарта в WebGL
- ANGLE (Qualcomm, Adreno (TM) 740, OpenGL ES 3.2)
Один профиль на телефонном шаблоне, запущенный на ARMANOS Browser. Другой профиль вытянет другую строку.

Откуда берётся размер окна
Попросите у настольного Chromium окно шириной 360 точек и получите 500: это измерено на собранном движке. Поэтому окно приводят к размеру аппарата по протоколу отладки.
Размер окна
Ключ запуска для первого окна, дальше подмена размеров для каждой страницы и вкладки.
Касания
Ключ запуска на события касания плюс точки из семени.
Грубый указатель без наведения
Настройки, называющие палец и отсутствие мыши.
Ориентация экрана
Выводится из самих размеров, поэтому спорить с ними не может.
Мышь становится касанием
Живой аппарат событий мыши не шлёт, поэтому нажатия идут касаниями.
Если наряд не лёг вам скажут
Как его создать
Это одно поле в окне профиля, всё остальное работает как у настольного. Под выбором стоит честная оговорка о том, чего эта машина не может.
- 1
Новый профиль, затем шаблон
Выберите Android · Chrome (телефон) или планшетный шаблон.
- 2
Прочтите оговорку под выбором
Она говорит, чего эта машина не может для телефона.
- 3
Дайте профилю прокси, как обычно
Шаблон описывает аппарат, а не дорогу.
- 4
После создания при желании выберите аппарат
В меню профиля: «Отпечаток > Изменить значения > Аппарат». Экран, плотность, видеокарта, ядра, память и шрифты приедут с ним.
- 5
Запустите
Сперва стартовая страница, потом окно по аппарату, потом сайт.
Поля связи у телефона
Телефон, у которого числа связи как у ноутбука, спорит сам с собой. Числа подчиняются правилам самого браузера: задержка ступенями по 50 мс, скорость упирается в 10 Мбит/с.
Скорость
Телефон от 1,5 до 8 Мбит/с, рабочий стол от 5 до 10: одинаковые числа и были бы приметой.
Задержка
Телефон от 100 до 300 мс, рабочий стол от 50 до 200.
Вид связи по качеству
Из задержки, по тем же порогам, что стоят в самом движке.
Вид связи
Сотовая или Wi-Fi, и только у телефона: у настольного Chrome такого поля нет.
Предельная скорость
Из таблицы самого движка, никогда не ниже отданной и в пару к виду связи.
Когда телефонный профиль уместен
Берите его там, где сайт ведёт себя с телефоном иначе, или где история аккаунта это история телефона. Не там, где работа упирается в сам аппарат.
| Что нужно | Телефонный профиль | Настольный профиль | Настоящий телефон |
|---|---|---|---|
| Мобильная вёрстка и подсказки клиента | Да | Нет | Да |
| События касания и грубый указатель | Да | Нет | Да |
| Модель в подсказках клиента | Да | Нет, поле пустое | Да |
| Окно размером с этот экран | Да | Нет | Да |
| Приложение из магазина | Нет | Нет | Да |
| Камера и датчики аппарата | Нет | Нет | Да |
| Код по SMS на самом аппарате | Нет | Нет | Да |
| Десятки личностей разом | Да | Да | Нет |
Честный разрыв с железом
У настоящего аппарата есть железо, и здесь железа не прибавляется: число приборов называется, а съёмка не подменяется. Облачный телефонный сервис сдаёт настоящий аппарат, но по одной сессии за раз.
Нет телефонной камеры и микрофона
Число приборов называется, съёмка не подменяется.
Нет датчиков
Ни ускорения, ни поворота, ни освещённости.
Нет SMS и нет номера
Код, отправленный на аппарат, сюда не приходит.
Нет магазина приложений
Всё, что ставится из магазина, остаётся снаружи браузера.
Нет телефонных шрифтов
Roboto и Noto тут нет, и программа говорит об этом.
Чего это не делает
- Не превращает ваш компьютер в телефон. Нет камеры аппарата, датчиков, SMS и магазина приложений: сайт, который их просит, получит ответ хозяйской машины.
- Не даёт шрифтов самого телефона. Программа говорит об этом под выбором, и сайт, который меряет шрифты, это видит.
- Не даёт профилю мобильный адрес в сети: дорогу задаёт прокси, который вы прикрепили.
- Не решает за сайт, как тот отнесётся к профилю. Профиль сообщает то, что сообщает телефон, а суждение остаётся за площадкой.
- Три андроидных поля связи требуют ядра браузера, которое объявило, что подменяет их значения. Ядро постарее их не получает.
Проверить в коде
- Шаблон несёт аппарат целиком
- packages/shared/src/index.js · apps/desktop/test/mobile-really-mobile.js
- Окно приводится к аппарату на обоих движках
- apps/desktop/src/lib/mobileEmulation.js · apps/desktop/src/lib/mobileWindow.js · apps/desktop/test/mobile-window.js
- Мобильные ключи запуска даются только мобильному профилю
- apps/desktop/src/lib/forkEngine.js · apps/desktop/test/mobile-window.js
- Поля связи достаются только телефонному профилю
- packages/shared/src/index.js · apps/desktop/test/поля-связи-телефона.js
- Автопроверка отпечатка читает телефонные значения обратно
- apps/desktop/src/lib/fpAudit.js · apps/desktop/test/mobile-selftest.js · apps/desktop/test/телефон-живьём.js
Вопросы
- Планшетный шаблон считается мобильным?
- В подсказках клиента он сообщает, что не мобильный, и слова Mobile в строке User agent у него нет, как у настоящего планшета Android. Окно при этом опускается до планшетного экрана, а страницы раскладываются по мобильным правилам.
- Можно перевести старый профиль на телефонный шаблон?
- Только если его поколение отпечатка знает такой шаблон. У профиля постарее генератор заморожен, и программа отказывает.
- Можно растянуть окно рукой?
- Можно, и профиль этого не запомнит: окна шире объявленного экрана не бывает ни у одного аппарата.
- Могут ли два профиля получить один аппарат?
- Могут, и само по себе это не беда: адрес, куки и история у них разные. Выберите модель рукой, если нужны разные.
- Заработает ли внутри мобильное приложение?
- Нет. Всё из магазина приложений живёт снаружи браузера, а это браузер.
Проверьте на своей машине
Создайте один профиль на телефонном шаблоне и прочтите, что отдано странице.