Блог
Расширение включено, а реклама на месте: проверка за минуту
Команда ARMANOS7 мин
Что показывает страница расширений
Страница расширений в любом браузере отвечает только про файлы: расширение скачано, распаковано и передано браузеру при запуске профиля. Про судьбу хотя бы одного запроса она не говорит ни слова, потому что не считает запросы вовсе.
Значок на панели рисует само расширение, и рисует он его из факта загрузки, а не из числа остановленных запросов, которых оно может и не считать. Поэтому зелёная карточка и живая реклама на одной странице друг другу не противоречат.
Выходит, «включено» это утверждение про файлы на вашем диске, а «блокирует» это утверждение про сеть. Второе ни один экран за вас не проверит, и минута во вкладке сети это самый короткий путь к ответу.
- 1
Файлы на месте
Папка расширения распакована и прочитана браузером.
- 2
Переключатель включён
Расширение передано браузеру при запуске профиля.
- 3
Запросы не сосчитаны
Ни один экран не обещает, что хоть один запрос остановлен.
Минутная проверка во вкладке сети
Откройте страницу с рекламой, включите вкладку сети в окне разработчика и перезагрузите. В списке останутся все запросы, которые страница успела отправить, от первого до последнего, вместе с ответами.
У остановленного запроса нет ответа и стоит отметка об отмене. Обычный код ответа означает, что запрос ушёл наружу и вернулся с содержимым, и счётчик на той стороне вас уже записал.
- 1
Вкладка сети
Окно разработчика и список запросов открытой страницы.
- 2
Перезагрузка
Список наполняется заново, с самого первого запроса.
- 3
Адрес рекламной сети
Имя счётчика или рекламной сети в столбце адреса.
- 4
Судьба запроса
Отмена это блокировка, код ответа это пропуск.
Своя страница-ловушка вместо догадок
На чужой странице вы не знаете заранее, что именно обязано было заблокироваться: списки фильтров меняются каждую неделю. Поэтому вторая проверка берёт адрес, который выбрали вы сами, и правило, которое вы написали сами.
Поднимите у себя простой сервер, отдайте с него страницу с одним запросом к адресу вроде /blockme и внесите этот адрес правилом в расширение. Сервер либо увидел запрос, либо нет, и третьего ответа здесь не бывает, потому что журнал сервера не умеет показывать зелёный переключатель.
Смотреть после этого надо не в браузер, а в журнал своего сервера. На его ответ не влияют ни чужие фильтры, ни обновление списка посреди проверки, ни то, что рисует расширение на своём значке.
Какой движок откроется на самом деле
Профиль открывает не тот браузер, который отмечен в настройках, а тот, который лежит на диске. Отмеченный, но не установленный движок кончается запуском на запасном, встроенном, и окно при этом выглядит обычно.
Эту разницу видно до запуска: раздел расширений предупреждает, когда профиль откроется на встроенном движке, и предупреждение стоит прямо над списком расширений. Если сам раздел не загрузился, предупреждения не будет: смотрите тогда версию ядра у профиля.
Один блокировщик на двух движках
Одно и то же расширение с одним и тем же правилом, и страница сама просила выбранный адрес, а сервер записывал, дошёл ли запрос. Первая строка это чистый движок: расширение загружено, значок на месте, правило не исполняется. Вторая это наша программа на том же движке: мы читаем правила расширения и ставим их своим перехватом.
На встроенном движке сервер этот запрос увидел: расширение загружено, правило на месте, блокировки нет. На ARMANOS Browser сервер того же запроса не увидел, и это единственная разница между двумя строками замера.
| Одно расширение и одно правило | Сервер увидел запрос |
|---|---|
| Встроенный движок, само расширение | да, запрос прошёл |
| Встроенный движок, правила исполняет ARMANOS | нет, запрос остановлен |
| Расширение числилось включённым | в обоих случаях |
| Страница просила один и тот же адрес | в обоих случаях |
Не каждое правило списка работает
Списки блокировки состоят не только из адресов. В них попадают свои выражения и перенаправления, и такие правила исполняются не везде, а на встроенном движке не исполняются вовсе.
Поэтому «блокировщик включён» и «весь список действует» это два разных утверждения, и второе из первого не следует. На встроенном движке программа применяет правила установленных расширений сама, а те, что исполнить не может, считает отдельно и рабочими не называет.
Чисел поэтому два: сколько правил из вашего списка исполняется и сколько осталось непонятыми, и второе число не прячется в первом. Сегодня они считаются внутри программы и до окна не доходят: ни на одном экране программы их пока не видно.
Какие правила программа исполняет сама
На встроенном движке правила блокировки читаются из самого расширения и исполняются перехватом запросов. Понимает программа только два вида действий: остановить запрос и разрешить его, и разрешающие правила проверяются раньше запрещающих, как и в самом списке.
Правило с регулярным выражением, с привязкой к вкладкам или с условием по заголовкам ответа программа не исполняет и считает непонятым. Непонятое правило не пропадает без следа: оно попадает во второе число, и «блокировщик работает» не означает «половина списка пропала».
Условие правила исполняется целиком или не исполняется вовсе. Правило, применённое без своего условия, остановило бы больше, чем просили, и вместо страницы вы получили бы белый экран.
Что означают два знака в правиле
Две черты перед именем узла означают этот узел и его поддомены, а крышка в конце означает любой разделитель: всё, что не буква, не цифра и не один из четырёх знаков подчёркивания, дефиса, точки и процента, а также конец адреса.
Без крышки правило на узел ловило бы и чужой домен с тем же началом, а правило на путь пропускало бы тот же путь с параметрами после знака вопроса. Оба знака программа читает так же, как их читает сам список, иначе одно и то же правило означало бы разное на двух движках.
Что делать после этой проверки
Запрос дошёл до сервера, значит дело не в вашей невнимательности: включённое расширение не остановило ничего, и никакая настройка в его карточке этого не изменит. Переключите профиль на движок, где блокировка работает, и повторите ту же минуту с тем же адресом.
Запрос отменён, а баннер на месте, значит его рисует разметка самой страницы, и сетевое правило до него не дотягивается. Тогда менять надо список фильтров, а не браузер, и искать в нём правило на разметку, а не на адрес.
Повторяйте эту минуту после смены движка или списка фильтров. Она отвечает про сегодняшний профиль, а не про тот, что был месяц назад, и стоит ровно минуту.
Чего это не утверждает
- Это не утверждает, что на встроенном движке бесполезно любое расширение из магазина. Замер касался правил блокировки, и вывод из него ровно про них.
- Это не утверждает, что после смены движка список фильтров уберёт всю рекламу. Часть баннеров приезжает вместе с разметкой страницы, и сетевое правило их не трогает.
- Это не утверждает, что каждое правило вашего списка исполнится на встроенном движке. Своё выражение расширения и перенаправление там не исполняются, и такие правила считаются отдельно.
- Проверка во вкладке сети говорит про одну страницу и один заход. Другая страница с другим списком фильтров даёт свой ответ, и минутная проверка нужна как раз для этого.
Где это можно увидеть самому
Каждое число выше выходит из кода, который можно открыть и запустить.
- Встроенный движок проверен в настоящем браузере настоящим расширением
- apps/desktop/test/extension-limits-honest.js
- Правила блокировки исполняются на настоящих адресах, а не читаются буквами
- apps/desktop/src/lib/dnrBlock.js · apps/desktop/test/builtin-blocking.js
- Неисполнимое правило считается отдельно и рабочим не зовётся
- apps/desktop/src/lib/dnrBlock.js · apps/desktop/test/builtin-blocking.js
- Предупреждение выходит ровно тогда, когда профиль откроется на встроенном движке
- apps/desktop/src/manager/store.js · apps/desktop/test/extension-limits-honest.js
- На ARMANOS Browser правило блокировки держит запрос вне сети
- apps/desktop/test/блокировка-живьём.js
- Одиннадцать карточек каталога лежат одним списком, и каждая в самом деле ставится
- packages/shared/src/index.js · apps/desktop/test/catalog-installable.js
- Выбор расширений принадлежит профилю, а не машине
- apps/desktop/src/lib/ext-state.js · apps/desktop/test/ext-choice-travels.js
Вопросы
- Почему расширение пишет, что оно включено?
- Потому что оно правда включено: файлы на месте и браузер их принял. Включено и блокирует это разные вещи, и вторую проверяет только запрос.
- Я поставил блокировщик из магазина, почему реклама не пропала?
- Либо запрос уходит наружу, и тогда виноват движок профиля, либо запрос отменён, а баннер приехал вместе с разметкой. Вкладка сети отличает эти два случая за минуту.
- Можно ли понять это без окна разработчика?
- Косвенно. Если баннеры исчезают на одном профиле и остаются на другом с тем же расширением, дело в движке, а не в списке фильтров.
- Мне обязательно менять движок профиля?
- Смотря зачем. Блокировку по правилам расширения ARMANOS исполняет сам и на встроенном движке: мы читаем их и ставим своим перехватом. А всё, что расширение делает своими руками, на встроенном движке не работает, и раздел расширений предупреждает об этом до запуска.
- Сколько расширений можно включить на один профиль?
- До 50 на профиль, и выбор принадлежит профилю, а не компьютеру. На другую машину набор приедет, если вы вошли в свою учётную запись: без входа программа работает, но ничего никуда не шлёт.
- Откуда взять сам блокировщик?
- Одиннадцать проверенных расширений ставятся одной кнопкой из готового списка. Остальное вы добавляете ссылкой из магазина или своей папкой, и принимается там только Manifest V3.
Рядом с этим
Посмотрите, какой движок откроет ваш профиль
Раздел расширений называет это до запуска, а минута во вкладке сети подтверждает результат.