सामग्री पर जाएँ

यह पृष्ठ अभी आपकी भाषा में उपलब्ध नहीं है। आप अंग्रेज़ी पाठ पढ़ रहे हैं।

Glossary

Battery Status API

No permission is asked and nothing is shown while it is read. The charge moves slowly, so two pages that read it moments apart can tell they are looking at the same machine.

The Battery Status API is a browser call that tells a page the charge level, the charging state and the time left.

What the call answers

One call returns four values, and it returns them to any page on the open web. They were meant to let a site do less work on a phone that is running low.

  • Charge level

    A fraction between empty and full, reported with more digits than a person would ever read.

  • Charging or not

    Whether the machine is on power at this moment.

  • Time to full

    Seconds until the charge is complete, or zero on a machine that is already there.

  • Time to empty

    Seconds of use remaining, and an endless value where there is no battery at all.

Why a slow value identifies

Charge is not a name, and on its own it belongs to everyone else at the same level. What makes it useful is that it barely moves.

Two sessions opened minutes apart carry the same level to the digit, and that is enough to join them when nothing else about them matches.

The pairing works in one direction only. It joins visits that are close in time and says nothing about visits a day apart.

Who still answers the call

The call was written for phones on weak batteries, and the identification problem was noticed soon after. Several browser families dropped it and never brought it back.

Chromium kept it, so a browser built on Chromium answers. That includes ours, and it includes the browser you are reading this in if it is one of them.

  • A desktop answers too

    A machine with no battery reports full and on power, which is a perfectly ordinary reply and tells a site what kind of machine it found.

  • A laptop is the interesting one

    There the level drifts through the day, and every profile opened on that laptop drifts with it together.

  • The reply is a promise

    It arrives a moment after the page asks, so a site can take it while the page is still loading.

Where the value comes from here

Our engine publishes a list of the readings it answers from the profile seed, and this one is not on that list. The charge belongs to the computer the browser runs on.

The built-in engine takes the other road and removes the call rather than answering it, so the two engines do not agree on this one name.

  • What the profile does own

    Processor count, memory, devices, speech voices, fonts, time zone and the network figures are drawn from the profile seed.

  • What the machine keeps

    Charge is one of the readings that stay with the computer, and every profile opened on it reads the same one.

  • Why it is written here

    A reading we do not touch belongs on the page as plainly as one we do, because a reader planning around it deserves to know.

Often confused with

  • Device memory

    Also a machine level number read without asking, and that one is drawn from the profile seed rather than from the computer.

  • Network information

    Speed and latency are the signature of a connection in the same way, and those are answered from the seed as well.

  • A permission prompt

    Camera and location ask you first. This one never does, which is what made it worth writing about.

What this does not do

  • The profile does not get a battery of its own. Every profile on one computer reads the same charge, because the reading is the computer's.
  • The two engines do not answer this name the same way. Our own engine leaves the call where Chromium put it, and the built-in one takes it away.
  • It does not identify a person by itself. A charge level is shared with everyone at the same level, and it only works next to the rest of the readings.
  • It does not stay useful for long. Charge moves, so it joins sessions that are close together in time and nothing further apart than that.

Check it

Every claim above comes from a file you can open.

The readings the engine answers from the seed, named one by one
packages/shared/src/index.js
The shape of our engine beside the shape of Chrome
engine/приёмка-отчёт-форма-наша.json · engine/приёмка-отчёт-форма-chrome.json
How that shape is taken
engine/scripts/compare-shape.js
Where the built-in engine drops the call
apps/desktop/src/injected/fingerprint.js

Questions

Does a site need permission to read my battery?
No. There is no prompt, no indicator and no entry in the site settings, and the reading finishes before the page has drawn itself.
Does a proxy or a tunnel hide it?
No. Those change the address your traffic leaves from. The charge is read on your machine and never travels through the network at all.
Can I turn the call off in the browser?
Chromium has no setting for it. An extension can take the call away, and a browser that answers nothing where Chromium answers something is a difference of its own.
Is this why my accounts got linked?
On its own, almost certainly not. It is a short lived hint that works next to an address, a fingerprint and the way the accounts behave.
What does my profile answer instead?
The fingerprint self-test inside a profile lists all 29 measurements it runs, and a battery row is not among them.

See what your own profile answers

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