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

Глоссарий

Build flags (настройки сборки)

Два двоичных файла из одних исходников расходятся и по размеру, и по скорости, и по тому, что уходит от них наружу. Разница это список настроек, и у нашего движка он записан и проверяется до компиляции.

Настройки сборки это доводы, выбранные до компиляции браузера, и они решают, что попадёт в готовый двоичный файл.

Что решает настройка

Настройка читается один раз, до компиляции, и выбирает, какой код вообще будет собран. Одни и те же исходники дают либо рабочую сборку для разработки, либо выпускную, и решает это только список.

  • Выпускная сборка, а не рабочая

    Рабочая тяжелее и медленнее и несёт лишние проверки, которые меняют поведение браузера под страницей.

  • Один файл, а не толпа библиотек

    Разделение браузера на отдельные библиотеки удобно, пока его пишут, и никуда не годится для того, что отдают человеку.

  • Без отладочных знаков

    Знаки делают загрузку заметно тяжелее и служат тому, кто собирает, а не тому, кто запускает.

Настройки, которые чувствует страница

Здесь решается работа со звуком и видео, и движок собирается с тем набором кодеков, который несёт настоящий Chrome.

Браузер, который называет себя Chrome и не проигрывает того, что проигрывает Chrome, расходится с собой в одну строку. Такую проверку страница делает без всякого отпечатка.

Что вырезается до компиляции

Отчёты о работе, служба продвижения и ключи поставщика гасятся этим списком, а не выключаются потом в настройках.

Одна область нарочно остаётся собранной и недостижимой: настройка, которая убирает её совсем, ломает граф зависимостей раньше, чем скомпилирован первый файл. С пустыми ключами звать ей некого.

Список едет файлом

Настройки пишутся в файл, который читает сам генератор, а не склеиваются в одну длинную командную строку.

В одну строку первое же примечание списка закрыло бы всё, что стоит после него, и генератор тихо взял бы на остаток свои значения по умолчанию.

Сборка перечитывает принятый список

После генерации сборка перечитывает файл, который генератор оставил рядом с выводом, и считает живые строки настроек в нём.

Мало строк или нет выпускной строки значит сборка встаёт здесь, а не тратит ночь на неверный двоичный файл.

  1. 1

    Список сверяется до повторной генерации

    Неизменившийся список при готовом графе сборки пропускает шаг генерации, который стоит многих минут.

  2. 2

    Выпускные строки названы поимённо

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

  3. 3

    Число печатается по факту

    Когда шаг пропущен, сборка так и говорит, а не утверждает, что генератор в этот раз что-то принял.

Один список на все системы

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

Сборка под Linux вырезает список из сборки под macOS, а не держит копию, а список Windows сверяется с ним построчно.

Чего это не делает

  • Они не решают, что сайт прочитает про вашу машину. Это приходит из набора правок внутри движка и из зерна профиля, а не из того, как скомпилированы исходники.
  • Они не удаляют код, который гасят. Часть его остаётся собранной и недостижимой, потому что настройка, убирающая её совсем, останавливает сборку в самом начале.
  • Они не едут вместе с двоичным файлом. Сборка, сделанная в другом месте по другому списку, это другой браузер, как бы он ни назывался.
  • Они не выбирают версию, которую браузер называет. Она закреплена вместе с исходниками и обязана сходиться с вехой, о которой говорит профиль.

Проверить

За каждой строкой выше файл, который можно открыть, и стенд, который держит её честной.

Настройки сборки под macOS и файл, в который они пишутся
engine/scripts/build-mac.sh
Список Windows, лежащий рядом
engine/scripts/build-win.sh
Сборка под Linux вырезает список из сборки под macOS
engine/scripts/build-linux.sh
Системы сверяются, чтобы списки не разошлись
apps/desktop/test/сборочные-скрипты.js

Вопросы

Это то же самое, что ключи в командной строке?
Нет. Ключ запуска меняет то, как стартует готовый браузер, и его видно в списке процессов. Настройка сборки решила раньше, что вообще будет скомпилировано.
Делает ли выпускная сборка браузер незаметнее?
Сама по себе нет. Она убирает поведение разработки, которое бросалось бы в глаза, а всё, что страница действительно читает, приходит из другого места.
Зачем держать код, который выключен?
Потому что настройка, убирающая его, останавливает генератор на графе зависимостей. Гашение области вместе с пустыми ключами поставщика даёт ту же тишину в сети.
Можно посмотреть список у сборки?
Настройки, которые генератор принял, остаются в файле рядом с выводом сборки, и сборка печатает, сколько их она насчитала.
Системы правда собирают один и тот же браузер?
Списки сверяются, и настройка, разошедшаяся между системами, считается провалом, а не мелочью. Различается упаковка вокруг движка, а не то, что читает страница.

Запустите сборку, которую дали эти настройки

Поставьте ARMANOS, откройте профиль и прочтите стартовую страницу до того, как пойдёте куда-то ещё.