Перейти до вмісту

Вашою мовою цієї сторінки поки немає. Ви читаєте англійський текст.

Glossary

navigator.webdriver

One reading, taken on the first line of almost every bot check, that no fingerprint can outweigh. A browser answering true has already said a program is driving, and nothing measured afterwards argues with that.

navigator.webdriver is the value a browser sets to true while an automation tool is at its controls.

Why one reading outweighs the rest

A fingerprint is an argument assembled from many answers. This one is not an argument at all, because the browser is replying to a direct question about itself.

  • The reading costs a site nothing

    One property, no permission prompt, and an answer before the page has finished loading.

  • It is not a matter of rarity

    Other readings say how unusual you are. This one says whether a person is at the keyboard.

  • It never travels alone

    A build running without a window names itself in the string it reports and often carries an empty plugin list, so all three are read together.

Your browser right now

These values are read in your browser on this page and nothing leaves it. The first row is what a bot check asks for before anything else.

Ваша машина просто зараз

Automation flag
вимірюємо на вашій машині
Plugins in the list
вимірюємо на вашій машині
The name it reports
вимірюємо на вашій машині

Прочитано у вашому браузері й показано тут. Нікуди не надсилається.

What turns the value on

The browser raises it by itself whenever a control channel it recognises is open. Page code neither sets it nor takes it back down.

  1. 1

    A driver attaches

    The familiar case: a testing framework takes the browser over, and the browser says so.

  2. 2

    A debugging port is opened

    The open port alone is enough, even before any program has attached to it.

  3. 3

    A window-less build starts

    A build started without a window renames the browser in the string it reports, in the newer mode too.

What our engine does

Automation here runs over a channel bound to your own machine, and that is how a flow and the window synchronizer drive a profile. The launch line carries a switch that keeps the automation reading down while that channel is open.

On the acceptance run of the build shipping today the value came back negative, and the property behind it still read as part of the browser rather than as page code.

  • The value is read from a real page

    The stand starts the engine with the arguments the app uses and asks the page, instead of trusting the launch line.

    false
  • The property still reads as the browser's own

    The self-test prints the source behind the value, and page code cannot produce that source.

    native code
  • The reported name carries no mark

    The string the browser uses for itself names no window-less build.

    no mark

Hiding it badly is its own mark

The value can be overwritten from page code, and the overwrite leaves traces. The property stops reading as the browser's own, and the same question asked inside a frame or a background thread comes back untouched.

  • The source gives it away

    Print the property behind the value: a hand-written one shows its own code where a browser shows none.

  • Other realms get asked

    A frame and a background thread carry their own copy of the browser interface, and a page may ask either of them.

  • Removal is worse than answering

    A browser missing the property entirely is rarer than one that answers, so deleting it draws the attention it was meant to avoid.

How to check your own

The panel above answers for the browser you are reading this in. Inside the app the self-test runs in a profile, against the engine that profile launched.

It asks for the value and for the source of the property behind it, in the page the profile opened. A frame and a background thread are asked separately, and what is compared there is the machine the profile claims.

What this does not do

  • It does not hide the rhythm of a script. Even pauses, identical paths and a session that never hesitates give automation away long after this reading is settled.
  • It does not close the channel automation needs. Anything running on the same computer can see that a browser was started with one open, because the launch line is readable there.
  • It does not answer for a browser the app did not start. The panel above reads your everyday browser, and a profile answers only inside the app.
  • It does not undo a link between two accounts. Address reputation and account history close more of them than any single reading does.

Check it

Every claim above comes from a file you can open.

The value is read from a real page after a real launch
apps/desktop/test/webdriver-flag.js
Where the launch line is built
apps/desktop/src/lib/forkEngine.js
The self-test asks for the value and for its source
apps/desktop/src/lib/fpAudit.js
One profile opened with a window and without it, field by field
apps/desktop/test/скрытый-режим-живьём.js
The acceptance run of the build shipping today
engine/приёмка-отчёт.json

Questions

Does this value identify me?
No. It reads the same on almost every browser on earth, so it separates nobody. What it does for a site is disqualify a session before any other reading is weighed.
Can I set it to false from the console?
You can, and the property then carries the source of what you typed. A check that prints that source tells it apart from a browser answering on its own.
Does the free check on this site read it?
The panel above does. The fingerprint check reads what differs between machines, and this reading is the same almost everywhere.
Does a profile without a window answer differently?
It should not, and a stand settles it: one profile is opened both ways and the two machines are compared field by field, down to the drawing. The reported name is read in the same pass and checked for a window-less mark.
Why keep a control channel open at all?
Because flows and the window synchronizer drive a real profile through it. The channel stays on your own machine, and the browser does not announce it to a page.

See what your own profile answers

The self-test runs inside a profile and shows all 29 measurements, green and red alike.