Стартовая страница
Стартовая страница, с которой открывается каждый профиль
- Первой, до сайта
- Открывается
- На вашем компьютере
- Собирается
- Один: адрес выхода
- Запросов наружу
- 22
- Языков
Профиль открывает свою страницу раньше сайта
Вы запускаете профиль, и ARMANOS ставит перед сайтом одну страницу. Она собрана на вашей машине и описывает личность, в которой профиль сейчас выйдет в сеть.
На ARMANOS Browser стартовая страница это первая вкладка, сайт вторая. Вкладки, которые вы согласились вернуть после падения, идут следом, в прежнем порядке.
У встроенного движка вкладок нет. Там страница занимает окно профиля, сайт открывается вторым окном на том же разделе, а страницу поднимают обратно наверх.
Сайтом назначения служит свой адрес профиля, если вы его задали. Если нет, берётся адрес его сценария.
- 1
Первая вкладка: стартовая страница
Зарегистрирована заново на этот запуск и отдана местным сервером внутри программы.
- 2
Вторая вкладка: ваш сайт
Свой адрес профиля, а при его отсутствии адрес сценария.
- 3
Дальше возвращённые вкладки
Только те, что вы согласились вернуть после падения, в том порядке, в каком они были.
- 4
Скрытый запуск: страницы нет
Без окна открывается один адрес. Смотреть на страницу некому, а движок отказывается открывать несколько целей без окна.

Заголовок говорит, вправду ли прокси вас несёт
Самое крупное на странице это адрес, который увидит сайт. Под ним страна, регион, город и владелец адреса.
Один адрес не значит ничего, если вы не помните свой наизусть. Поэтому страница сравнивает. Настоящий адрес машины программа спрашивает раз при своём запуске, мимо прокси профиля, и держит ответ час.
Отсюда три исхода, сказанные прямо: прокси у профиля нет, и сайты видят ваш адрес; адрес выхода совпал с вашим, значит прокси не работает; адрес другой, значит сайты видят его, а не вас.
Если свой адрес узнать не удалось, вердикта не будет вовсе. Выдуманное «всё хорошо» опаснее молчания: ему поверят и пойдут работать через отвалившийся прокси.
- У профиля нет прокси
- Сайты видят ваш собственный адрес
- Адрес выхода совпал с вашим
- Прокси сейчас не работает
- Адрес выхода отличается от вашего
- Сайты видят этот адрес, а не ваш
- Свой адрес неизвестен
- Вердикта нет, показан только адрес выхода
Сравнение идёт внутри страницы, по значениям, которые у неё уже есть. Наружу о нём ничего не уходит.
Страница собирается у вас на компьютере, и профиль её не покидает
Внутри программы работает маленький сервер на 127.0.0.1 и свободном порту. Каждый запуск заново заводит профиль под случайный ключ, и страница живёт по адресу с этим ключом.
Ключ нужен даже на своей машине: без него другая программа на том же компьютере перебрала бы профили по их номерам. Повторный запуск заменяет прежний ключ, а остановка, удаление или переезд профиля его отзывают.
Всё, что показано на странице, вписано в документ до того, как выполнится её собственный скрипт. Значения экранированы, поэтому ни имя профиля, ни заметка, ни метка не могут оборвать блок скрипта.
Некоторые средства этого рода забирают такую же страницу со своего сервера, с номером профиля в адресе. Тогда о каждом запуске узнаёт третья сторона. Здесь документ пишется на месте и на месте читается. И даже так одного поля в нём нет намеренно: пароля прокси. Страница местная, но рисуется она внутри браузера профиля, где расширение способно прочитать разметку.
default-src 'none'
Ничто не грузится ниоткуда: ни внешних стилей, ни скриптов, ни шрифтов, ни картинок, даже если бы их вписали в шаблон.
connect-src: пять адресов
Единственная сеть, доступная странице, это запрос адреса выхода, и только к перечисленным источникам.
img-src data:
Значки нарисованы внутри страницы, поэтому нет ни одного запроса за картинкой, который мог бы стать маячком.
form-action и base-uri 'none', frame-ancestors 'none'
Отправлять нечего, менять основу адреса некуда, и вставить страницу в рамку чужому сайту нельзя.
no-store, no-referrer, nosniff
Это настоящие заголовки от местного сервера, а не обещания, написанные в разметке.
Наружу уходит один запрос, и тот через прокси профиля
Запрос адреса выполняется в браузере профиля, значит идёт той же дорогой, что и всё остальное в нём. Именно поэтому в ответе адрес выхода, а не ваш.
Источников пять, по очереди, по шесть секунд на каждый, один проход. Четыре отдают географию, последний только адрес, чтобы при полном молчании географии было видно хотя бы точку выхода.
Четыре географических источника взяты не для красоты. Все они бесплатные, значит с пределом обращений, а здесь профили запускают подряд с одной машины. Каждый лишний источник это отдельный запас.
Название страны браузер выводит сам из двухбуквенного кода, на вашем языке. Неудача очищает всё: устаревший адрес на экране не остаётся, вместе с ним пропадает кнопка копирования. Повторить запрос можно только кнопкой «Ещё раз».
| Источник | Что возвращает |
|---|---|
| ipwho.is | Адрес, страна, регион, город, поставщик связи |
| get.geojs.io | Адрес, страна, регион, город, организация |
| ipinfo.io | Адрес, двухбуквенная страна, регион, город, организация |
| ipapi.co | Адрес, страна, регион, город, организация |
| api.ipify.org | Только адрес, спрашивается последним, чтобы точка выхода была видна всегда |
Две карточки называют профиль и движок, который его нарисует
Левая карточка это профиль: название, группа, сценарий, ID профиля, строка прокси, время запуска, заметки и метки. В строке прокси повторены вид, адрес, порт и страна, а рядом значок ключа, если у прокси есть вход по паролю.
Правая карточка это движок, со значком, который виден издалека. Он говорит либо ARMANOS Browser, либо «Встроенный Chromium», и печатает версию как есть.
ARMANOS Browser показывает 153.0.7978.0. Встроенный движок это Chromium от Electron, и он отстаёт больше чем на двадцать старших версий, что само по себе примета. Назвать версию поновее было бы хуже: проверка возможностей поймала бы обман.
Там же сказано, где происходит подмена: внутри движка у ARMANOS Browser, до запуска любых скриптов страницы, и на уровне скриптов у встроенного. По этой строке вы и заметите, что запуск ушёл на запасной движок, раньше, чем потратите час на сайте.
- Значок: ARMANOS Browser
- Отпечаток подменяется внутри движка, версия 153.0.7978.0
- Значок: встроенный Chromium
- Подмена на уровне скриптов страницы, движок заметно старше
- В строке прокси значок ключа
- У этого прокси есть вход по паролю, и пароля на странице нет
Карточка движка это самый быстрый способ увидеть, что свой движок не установлен или не поднялся, и запуск ушёл на запасной.
Карточка отпечатка печатает то, что прочитает сайт
Одна карточка перечисляет личность целиком: user agent, платформа, экран с плотностью и глубиной цвета, языки, локаль, часовой пояс, ядра, память, точки касания, вендор и рисовальщик WebGL и число шрифтов.
Это не вторая догадка об отпечатке. Запуску и странице отдают один и тот же набор значений, выведенный из семени профиля четвёртого поколения и его шаблона, поэтому разойтись они не могут.
Шаблоны такие: macos-chrome, windows-chrome, linux-chrome, android-chrome и android-tablet. Строка user agent быстрее всего показывает, в каком из них профиль вышел сейчас.
User agent
Полная строка отдельной строкой, её можно выделить и вставить в проверялку.
Экран
Ширина на высоту, рядом плотность точек и глубина цвета.
Часовой пояс, локаль, языки
Три значения, которые сайт сверяет со страной вашего адреса выхода.
Вендор и рисовальщик WebGL
Две строки, которые графическая проверка читает первыми, когда хочет узнать железо.
Шрифты
Сколько начертаний профиль показывает, по тому же списку, который получает движок.
Страница говорит на языке программы
Проверялки в один щелчок, и открываются они этим же профилем
Под заголовком стоит ряд из пяти внешних проверялок. Это те самые средства, которыми люди пользуются и так, и они на странице ради того, чтобы взгляд стоил одного щелчка, а не переноса адреса руками.
Открываются они внутри того же профиля, значит читают его отпечаток через его же прокси. На ARMANOS Browser ссылка открывает новую вкладку, а у встроенного движка, где вкладок нет, окно переходит на проверялку.
Ссылки проверяются до того, как станут ссылками. Живут только http и https, всё остальное показано простым текстом и щёлкнуть по нему нельзя.
Вторым рядом идут десять обычных сайтов. Те же десять один раз попадают в панель закладок нового профиля, и только если файла закладок у него нет вовсе, так что ваши собственные закладки не трогают.
BrowserScan
Широкий отчёт по адресу и отпечатку сразу.
BrowserLeaks
Отдельные страницы по каждому средству: canvas, WebGL, шрифты, WebRTC.
CreepJS
Ищет противоречия между значениями, а не просто печатает их.
Pixelscan
Ищет приметы подменённого браузера.
IP2Location
Куда положен адрес выхода по мнению базы адресов.
У телефонного профиля страница сверяет окно с заявленным
Телефон не доказывается маленьким экраном и пятью точками касания. Поэтому страница меряет окно, в котором находится сама, и сравнивает его с тем, что профиль о себе говорит.
О четырёх расхождениях она пишет в строке «Что видят сайты»: окно шире заявленного экрана, ориентация противоречит форме экрана, событий касания нет, указатель не грубый.
Это найдено замером, а не догадкой. На своём движке в первые секунды окно было шириной 500 точек при заявленных 393, а ориентация оставалась хозяйской. Цифры в карточке были зелёные, а сайты видели другое.
У мобильных профилей есть ещё строка модели аппарата. «Пять касаний и экран 360» человеку не говорит ничего, а название модели говорит всё о том, каким телефоном он приходит.

Её можно выключить, а тот же местный сервер делает ещё два дела
Переключатель стоит на экране движка, рядом с выбором движка, потому что это и есть экран «что происходит при открытии профиля». По умолчанию он включён, а выбор запоминается в маленьком файле в папке программы.
Выключено значит, что профиль открывается сразу на своём сайте. Возможность и сама умеет отойти в сторону: если местный сервер не смог занять порт, запуски идут без страницы, а не ломаются.
Тот же сервер отдаёт пустую страницу на своём адресе для самопроверки отпечатка. Свой адрес считается защищённым окружением, а about:blank нет, и четыре проверки раньше проваливались только по этой причине и портили оценку.
Он же держит по одному адресу на профиль, куда защитное расширение ARMANOS Browser складывает свои счётчики. Принимается только POST, тело ограничено, ключ у него собственный, поэтому счётчики работают и с выключенной стартовой страницей.
Сама страница
Один адрес на каждый запущенный профиль, отзывается при остановке, удалении или переезде профиля.
Защищённая пустая страница
Место, где меряет самопроверка отпечатка, чтобы ей были видны значения, скрытые вне защищённого окружения.
Приёмная для счётчиков
Так защитное расширение своего движка сообщает программе о заблокированном, независимо от переключателя страницы.
Чего она не делает
- Она сообщает то, что может измерить ваша машина. Это не приговор о том, как площадка отнесётся к профилю, и зелёная строка ничего не обещает.
- Вердикту нужен ваш настоящий адрес, узнанный раз за запуск программы мимо прокси. Если тот запрос не удался, страница покажет адрес выхода и промолчит о вердикте.
- Город и поставщик связи приходят из бесплатных общедоступных источников. Эти поля приблизительны, могут отсутствовать или ошибаться, а источник с исчерпанным пределом пропускается.
- Это не обход утечек. WebRTC, DNS и перебор шрифтов здесь не меряются: этим заняты сетевая диагностика программы и внешние проверялки.
- Она показывает расхождение, но не чинит его. Сменить прокси, шаблон или размер окна по-прежнему ваше дело.
Как проверить
За каждым утверждением стоит файл, а у большинства ещё и стенд, который падает, когда поведение меняется.
- Страница отдаётся только с 127.0.0.1, по ключу на запуск и с запертой политикой содержимого
- apps/desktop/src/lib/start-page.js
- Своего адреса не знаем, значит вердикта нет вовсе
- apps/desktop/src/start/start.html · apps/desktop/test/leak-verdict.js
- Ни одна подпись на странице не может показаться голым ключом
- apps/desktop/src/start/start.html · apps/desktop/test/подписи-стартовой.js
- Телефонному профилю говорят, когда окно противоречит заявленному
- apps/desktop/src/start/start.html · apps/desktop/test/mobile-window.js
- Число шрифтов согласуется по правилам языка
- apps/desktop/src/i18n/messages.js · apps/desktop/test/plural-agrees.js
Посмотрите, прежде чем куда-то идти
Страница стоит трёх секунд при запуске. Это самый дешёвый способ заметить отвалившийся прокси или запасной движок раньше сайта.