Zum Inhalt springen

Diese Seite gibt es noch nicht in Ihrer Sprache. Sie lesen den englischen Text.

Blog

The extension is on and the ads remain: a one-minute check

The blocker is installed, the toggle on its card is green, and the counters and banners on the page are still alive. Which of the two is lying to you: the extension card or the blocker itself? The answer takes a minute and needs nothing installed.

Das ARMANOS-Team7 min

What the extensions page shows

The extensions page in any browser answers about files: the extension was downloaded, unpacked and handed to the browser at profile start. About the fate of a single request it says nothing.

The icon in the toolbar is drawn by the extension itself, from the fact that it loaded, not from a count of stopped requests. So a green card and a live ad on one page are not a contradiction.

So enabled is a claim about files on your disk, and blocking is a claim about the network. No screen checks the second one for you.

  1. 1

    Files are in place

    The extension folder is unpacked and read by the browser.

  2. 2

    The toggle is on

    The extension is handed to the browser when the profile starts.

  3. 3

    Requests are not counted

    No screen promises that a single request was ever stopped.

The network tab answers in a minute

Open a page with ads, switch to the network tab in the developer window and reload. The list keeps every request the page managed to send.

A stopped request has no response and carries a cancelled mark. An ordinary status code means it went out and came back.

  1. 1

    The network tab

    The developer window and the request list of the page.

  2. 2

    A reload

    The list fills again, starting from the very first request.

  3. 3

    An ad network address

    The name of a counter or an ad network in the address column.

  4. 4

    The fate of the request

    Cancelled means blocked, a status code means it went through.

Build your own trap page

On somebody else's page you cannot know in advance what should have been blocked: filter lists change every week. So the second check uses an address you picked yourself.

Run a plain server at home, serve a page with one request to an address like /blockme and add that address as a rule. The server either saw the request or it did not, and there is no third answer.

After that, look at the log of your own server rather than at the browser. No list update in the middle of the check can change what it says.

Which engine actually opens the profile

A profile opens not on the browser ticked in the settings, but on the one that sits on the disk. An engine ticked but not installed launches on the built-in fallback instead.

You can see that before launch: the extensions section warns you whenever the profile will open on the built-in engine. The same warning stands where the engine could not be asked at all.

One blocker on two engines

The same extension with the same rule, and the page asked for the chosen address itself. The first row is the bare engine: the extension is loaded, the icon is there, the rule does not run. The second is our app on that same engine: we read the extension’s rules and apply them with our own interceptor.

On the built-in engine the server saw that request: the extension loaded, the rule in place, no blocking. On ARMANOS Browser the server never saw the same request.

One extension and one ruleThe server saw the request
Built-in engine, the extension aloneyes, the request went through
Built-in engine, rules applied by ARMANOSno, the request was stopped
The extension counted as enabledin both cases
The page asked for the same addressin both cases

Not every rule in a list runs

Blocking lists are not made of addresses alone. They carry their own expressions and redirects, and rules like that do not run everywhere.

So the blocker is on and the whole list works are two different claims. On the built-in engine the app runs the rules of installed extensions itself, and the ones it cannot run it counts apart, never as working.

That leaves two numbers: how many rules of your list run, and how many stayed unread. Today they are counted inside the app and never reach the window: for now they are shown nowhere.

Which rules the program runs itself

On the built-in engine the blocking rules are read out of the extension itself and enforced by intercepting requests. The program understands two kinds of action, stop a request and allow it, and allow rules are checked before block rules.

A rule with a regular expression, one tied to tabs, or one conditioned on response headers is not enforced and counts as not understood. A rule not understood is not dropped in silence: it goes into the second number, and «the blocker works» never means «half the list is gone».

A rule's condition is enforced whole or not at all, and there is no middle ground. A rule applied without its condition would stop more than was asked, and you would get a white screen instead of a page.

What two marks in a rule mean

Two bars before a host name mean that host and its subdomains, and a caret at the end means any separator: anything that is not a letter, a digit or one of the four marks underscore, hyphen, dot and percent, as well as the end of the address.

Without the caret a host rule would also catch a foreign domain with the same beginning, and a path rule would miss the same path with parameters. The program reads both marks the way the list itself reads them.

What to do after the check

The request reached the server, so this is not your inattention: an extension that is on stopped nothing. Move the profile to an engine where blocking works and repeat the same minute.

The request was cancelled and the banner is still there, so the markup of the page draws it, and a network rule does not reach it. Then it is the filter list to change, not the browser.

Repeat that minute after every change of engine or filter list. It answers about the profile you have today, not the one from last month.

What this does not claim

  • It does not claim that every store extension is useless on the built-in engine. The measurement was about blocking rules, and the conclusion is about those.
  • It does not claim that changing the engine makes a filter list remove all advertising. Some banners arrive with the markup of the page, and a network rule never touches them.
  • It does not claim that every rule in your list will run on the built-in engine. An extension's own expression and a redirect do not run there, and such rules are counted apart.
  • A check in the network tab speaks about one page and one visit. Another page with another filter list gives its own answer, which is what the minute is for.

Where you can see this yourself

Every number above comes out of code you can open and run.

The built-in engine was checked in a real browser with a real extension
apps/desktop/test/extension-limits-honest.js
Blocking rules are executed against real addresses, not read as text
apps/desktop/src/lib/dnrBlock.js · apps/desktop/test/builtin-blocking.js
A rule that cannot run is counted apart and never called working
apps/desktop/src/lib/dnrBlock.js · apps/desktop/test/builtin-blocking.js
The warning appears exactly when the profile will open on the built-in engine
apps/desktop/src/manager/store.js · apps/desktop/test/extension-limits-honest.js
On ARMANOS Browser a blocking rule keeps the request off the network
apps/desktop/test/блокировка-живьём.js
The eleven catalogue cards sit in one list, and each installs
packages/shared/src/index.js · apps/desktop/test/catalog-installable.js
The choice of extensions belongs to the profile, not the machine
apps/desktop/src/lib/ext-state.js · apps/desktop/test/ext-choice-travels.js

Questions

Why does the extension say it is enabled?
Because it really is enabled: the files are there and the browser accepted them. Enabled and blocking are different things, and only a request proves the second.
I installed a blocker from the store, why are the ads still here?
Either the request goes out, and then the profile engine is at fault, or it is cancelled and the banner came with the markup. The network tab tells those apart in a minute.
Can I tell without the developer window?
Indirectly. If banners disappear on one profile and stay on another with the same extension, the engine is the reason, not the filter list.
Do I have to change the profile engine?
It depends what for. Blocking by an extension’s own rules is carried out by ARMANOS itself, on the built-in engine too: we read those rules and apply them with our interceptor. Everything the extension does by its own hand does not work there, and the extensions section warns you before launch.
How many extensions can one profile have?
Up to 50 per profile, and the choice belongs to the profile, not the computer. The set reaches another machine if you are signed in to your account: without a sign-in the app works but sends nothing anywhere.
Where do I get the blocker itself?
Eleven checked extensions install with one button from a ready list. Anything else you add by a store link or your own folder, and only Manifest V3 is accepted.

See which engine will open your profile

The extensions section names it before launch, and a minute in the network tab confirms it.