Расширения
Расширения в два щелчка
- 11 расширений
- Каталог
- только Manifest V3
- Стандарт
- до 50 включённых
- На профиль
- ARMANOS Browser 153.0.7978.0
- Где работают по-настоящему
В каталоге одиннадцать карточек, и ставится каждая
Откройте раздел «Расширения», выберите профиль наверху, и увидите одиннадцать карточек. На карточке имя, версия, раздел и точное имя папки, которую программа ждёт на диске.
Список лежит внутри программы, в общем пакете, который читают и настольная часть, и сервер. Раньше он жил только в посеве сервера, поэтому без аккаунта экран был мёртвым. Перечень известных расширений это не ваши данные, и входа он больше не требует.
У каждой записи есть номер в магазине. Кнопка «Установить» работает именно по нему, а не по ссылке на сайт производителя. Значок «официальное» стоит только там, где расширение выпускает его же автор.
| Раздел | Карточки | Для чего берут |
|---|---|---|
| Приватность | uBlock Origin Lite, Privacy Badger | Резать рекламу и счётчики внутри одного профиля |
| Работа | Dark Reader, Session Buddy | Тёмный вид и наборы вкладок, которые можно вернуть |
| Кошельки | MetaMask, Phantom | Web3 в отдельном профиле |
| Прокси | FoxyProxy | Правила по адресам поверх прокси самого профиля |
| Разработка | React Developer Tools, JSON Formatter | Разбирать страницы и читать ответы сервера |
| Сбор данных | Web Scraper, Instant Data Scraper | Собирать таблицы мышью и выгружать в CSV |

Установка скачивает файл, сверяет подпись и распаковывает
Кнопка «Установить» делает всю работу. Она берёт номер из каталога, просит у магазина архив и обрывает скачивание на 80 МБ.
Потом она проверяет, что пришло. Номер расширения считается заново из открытого ключа внутри файла и обязан совпасть с тем, который просили. Измерено без этой сверки: приходило совсем другое расширение, с другими правами, под знакомым именем.
И только после этого что-то встаёт на место. Файлы распаковываются во временную папку рядом, а прежняя папка отставляется в сторону, а не стирается: неудачная установка не должна уносить работавшее расширение.
- 1
Номер берётся из каталога
В карточке лежит ссылка на GitHub или сайт продукта. Разбор такой ссылки отказывал на каждой карточке, поэтому номер из каталога сильнее того, что прислал вызывающий.
- 2
Скачивание с потолком
Запрос уходит в службу обновлений магазина с той версией движка, на которой вы работаете. Архив обрывается на 80 МБ, чтобы бесконечный ответ не забил диск.
- 3
Сначала подпись, потом имя
Нет подписи, подпись не сходится или номер чужой: установка останавливается и называет пришедший номер. Имя из манифеста тоже сверяется с именем каталога, кроме переводного вида __MSG_.
- 4
Только третье поколение
Манифест читается во временной папке. Если manifest_version не 3, папка стирается, а установка кончается внятной причиной, а не зелёным итогом.
- 5
Магазинный номер сохраняется
Ключ автора из архива вписывается в манифест. Без этого MetaMask поднимался как fjlgnkabmikfmdefngdomnbhfamofmje вместо nkbihfbeogaeaoehlefnkodbefgpgknn, и кошельковые окна, ищущие известный номер, могут его не увидеть.
- 6
Замену можно откатить
Старая папка переименовывается в сторону, новая встаёт на место, и только потом старая копия убирается. Если переезд не удался, старая папка возвращается.
«Включить» сперва ставит файлы, потом запоминает выбор
Раньше включение было вторым шагом порядка, понятного только тому, кто его писал. Человек жал «Включить», получал «файлы не найдены» и решал, что расширение сломано, а соседняя кнопка «Установить» ему об этом ничего не говорила.
Теперь одна кнопка делает оба дела. Если у расширения есть номер магазина, а файлов на этой машине нет, «Включить» скачивает и распаковывает их, а потом включает расширение выбранному профилю.
Зелёная надпись «включено» никогда не значит пустоту. Рядом с ней стоит вторая метка, про сами файлы.
Файлы найдены
Папка на месте, и манифест у неё третьего поколения: расширение загрузится при запуске профиля.
Файлов нет
Такой папки в каталоге расширений нет, значит не загрузится ничего. Для карточки из каталога «Включить» исправляет это само.
Файлы устарели
Папка есть, но манифест старого стандарта. При запуске такое расширение отвергнут, поэтому метка третья и нарочно не зелёная.
Счётчик до упора, а не после
В строке над карточками видно, сколько расширений включено этому профилю и каков предел в 50, чтобы не узнавать о нём из отказа.
Выбор принадлежит профилю, а не машине
Включение запоминается для профиля, по имени папки, в файле, который пишется правами только для хозяина. Имя папки это единственный опознаватель, что-то значащий без сервера: именно оно называет файлы на диске.
Если вы вошли в аккаунт, изменение уезжает и туда, а перед показом раздела программа спрашивает сервер. Значит расширение, включённое на работе, включено и дома, у того же профиля.
Если отправить не удалось, вы увидите отказ, а не зелёное «готово». Тихий успех здесь был бы обманом: на второй машине этого выбора просто не будет.
Копия профиля забирает список включённых расширений, и перенос профиля на другую машину тоже. Файлы остаются местными: у каждой машины своя копия, а удалённый профиль вычёркивается из файла.
Пустой ответ никогда не значит «выключить всё»
Принимаются только расширения третьего поколения
Manifest V3 это единственный стандарт, который грузится, и при установке, и при запуске. Chromium 153 старый не запускает вовсе.
Молчание было бы хуже отказа. Измерено на папке Manifest V2, отданной движку: браузер поднимался, профиль числился запущенным, приходило уведомление об успехе, и ни одна страница не открывалась никогда. Автоматизация этого профиля умирала вместе с ней.
Поэтому такая папка пропускается до запуска, а уведомление называет папку, профиль и причину. На карточке видно «файлы устарели» вместо зелёной метки, и совет один: поискать версию под Manifest V3.
Каталог живёт по тому же правилу. Первой карточкой в нём стоял блокировщик, которого магазин отдаёт манифестом второго поколения: поставить его было нельзя в принципе, и обещал он больше всех с самого видного места. Его заменил вариант Lite того же автора, живущий по третьему поколению. Стенд по-настоящему скачивает каждую карточку из магазина и распаковывает её распаковщиком самой программы.
При запуске папки уходят тому движку, который в самом деле стартует
Имя папки приходит с двух сторон: из вашего местного выбора и из аккаунта. Дальше оно становится частью пути, а это ровно то место, где такое ломается.
На дороге стоят две проверки. Имя обязано выглядеть именем, а собранный путь обязан попасть внутрь папки расширений. Значение вида ../../.. раньше грузило любую папку на диске, где случайно лежал манифест.
На встроенном движке папки уходят в сессию профиля с выключенным доступом к файлам. Расширение с таким доступом прочитало бы базы паролей и кук других профилей, а это ровно та граница, ради которой профили и существуют.
В ARMANOS Browser те же папки передаются списком на загрузку и вторым списком «кроме этих, ничего». Грузится только включённое вами, и то, что попало в каталог профиля другой дорогой, к нему не присоединится.
Выключение действует сразу
Сессия живёт столько же, сколько программа, поэтому загруженное однажды расширение продолжало работать после выключения до перезапуска ARMANOS. Теперь оно снимается из сессии.
Обрыв связи ничего не выгружает
Если список аккаунта не пришёл, ответ означает «по меньшей мере эти», а не «ровно эти», и на его основании ничего не снимается.
До 50 на профиль
Дальше переключатель отказывает и называет причину, вместо того чтобы принять выбор и тихо не исполнить его при запуске.
На встроенном движке расширение из магазина не делает того, что обещает карточка
У ARMANOS есть запасной движок: обычный Electron, он идёт в дело, когда ARMANOS Browser не установлен или не смог стартовать. Расширения там загружаются, и на этом почти всё кончается.
Измерено на обоих движках одним и тем же правилом блокировки, и отдельно настоящим Dark Reader из магазина. Итог в таблице ниже, и он же причина предупреждения в разделе расширений.
Предупреждение показывается всякий раз, когда на самом деле стартует встроенный движок. Сюда входят два случая: ARMANOS Browser выбран, но не установлен, и спросить не удалось вовсе. Текст написан на всех 22 языках, а стенд исполняет само правило, а не ищет слова в исходнике.
Блокировку мы можем взять на себя и берём. На встроенном движке программа читает файлы правил самого расширения и применяет их перехватом запросов. Непонятые правила считаются и называются числом: «блокировщик работает» не должно означать «половина правил молча выброшена».
- Встроенный движок, Chromium 130
- правило не сработало, запрос дошёл до сервера
- ARMANOS Browser 153.0.7978.0
- тот же запрос заблокирован
- Dark Reader на встроенном движке
- ноль вставленных стилей, страница не изменилась
Если встроенный движок однажды начнёт блокировать сам, стенд, который это меряет, упадёт, и предупреждение придётся убрать, а не оставить врать в другую сторону.

Своё распакованное расширение кладётся в папку, открываемую из программы
Путь к папке расширений напечатан прямо на экране, рядом кнопка, которая её открывает. Положите распакованное расширение в папку с именем ровно как на метке карточки и запустите профиль заново.
Для всего, чего нет в одиннадцати карточках, есть строка со ссылкой. Вставьте ссылку из магазина Chrome, и разберёт её тот же код, который ставит: окно не назовёт негодной ссылку, которую установка приняла бы, и наоборот.
Поставленное по ссылке ложится в папку с именем store- и номером, и получает собственную карточку, названную по манифесту, а не по имени папки. Без такой карточки файлы лежали бы на диске, а включить их было бы нечем.
Кнопка «Убрать» стирает папку и снимает выбор у всех профилей, где он был, и говорит, у скольких. Файлы общие для всех профилей: копия одна и версия одна, а включено или выключено решает каждый профиль сам.
Чего это не делает
- В каталоге одиннадцать карточек, и поиска по магазину внутри программы нет. Всё прочее добавляется ссылкой из магазина или своей папкой.
- С программой ничего не поставляется. Любая установка скачивает файл из магазина Chrome, поэтому без сети установки не будет, и отказ об этом скажет.
- На встроенном движке расширение из магазина страницу не меняет. Работают только правила блокировки, которые ARMANOS исполняет сам, а непонятые правила считаются, а не применяются.
- Расширения Manifest V2 отвергаются и при установке, и при запуске. Слоя совместимости нет, и в этой части продукта он не задуман.
- Файлы лежат в одной папке, общей для всех профилей, поэтому версия расширения у всех одна. Профилю принадлежит только выбор «включено или нет» и предел в 50 штук.
Как проверить
Откройте файл, а рядом стенд, который держит его честным.
- В каталоге одиннадцать записей с номером магазина, версией и разделом, и каждая действительно ставится
- packages/shared/src/index.js · apps/desktop/test/catalog-installable.js
- Скачанное проверяется подписью, а расширение сохраняет магазинный номер
- apps/desktop/src/main/main.js · apps/desktop/test/ext-keeps-store-id.js
- «Включить» сперва ставит файлы и говорит, когда выбор не уехал в аккаунт
- apps/desktop/src/manager/store.js · apps/desktop/test/ext-choice-travels.js
- Грузится только Manifest V3, имя папки не выводит за пределы каталога расширений, а отказ становится уведомлением
- apps/desktop/src/main/main.js · apps/desktop/test/extension-paths.js
- Предупреждение о встроенном движке показывается ровно тогда, когда он и стартует, и оно измерено, а не предположено
- apps/desktop/src/manager/store.js · apps/desktop/test/extension-limits-honest.js
Дальше по теме
Поставьте блокировщик тому профилю, которому он нужен
На бесплатном плане два профиля, а раздел расширений работает и без входа в аккаунт.