Skip to content

--fingerprint dropped deviceScaleFactor, so the identity contradicted itself - #26

Merged
jehrr merged 1 commit into
mainfrom
fingerprint-device-scale-factor
Sep 11, 2026
Merged

--fingerprint dropped deviceScaleFactor, so the identity contradicted itself#26
jehrr merged 1 commit into
mainfrom
fingerprint-device-scale-factor

Conversation

@jehrr

@jehrr jehrr commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

playwright_context_kwargs mapped the user agent, the locale, the timezone and
the screen onto the browser context and ignored deviceScaleFactor, which
the fingerprint API returns beside them.

Measured 2026-09-11 against the live API and a live browser:

fingerprint says browser reported
user agent Chrome/146 on Windows ✅ same
locale nl-NL ✅ same
timezone Europe/Amsterdam ✅ same
screen width 1536 ✅ same
devicePixelRatio 1.25 1

That is the mismatch this flag exists to prevent, on an axis any
fingerprinter reads for free and for nothing: the paid identity said one
thing and the browser said another, on every run, silently.

Same shape as the three defects the family notes already record for this
file — a key the API returns that nothing applies — and found the same way:
by comparing a live browser against the fingerprint instead of by reading
the code.

Playwright takes it as its own context option, so the fix is to pass it.
Verified in a live browser with this repo's own client: 1.25 requested,
1.25 reported, with the user agent, timezone and locale still matching. The
check is pinned in the offline suite so it stays fixed.

Found while auditing a new sibling repo (catawiki-scraper) against the
family notes. All five repos in this family had it; this is the same
patch in each.

🤖 Generated with Claude Code

… itself

`playwright_context_kwargs` mapped the user agent, the locale, the timezone
and the screen onto the browser context and ignored `deviceScaleFactor`,
which the fingerprint API returns beside them. Measured 2026-09-11 against
the live API and a live browser: a fingerprint stating
`deviceScaleFactor: 1.25` produced a browser reporting
`window.devicePixelRatio === 1`.

That is the mismatch this flag exists to prevent, on an axis any
fingerprinter reads for free and for nothing: the paid identity said one
thing and the browser said another, on every run, silently. Same shape as
the three defects the family notes already record for this file -- a key the
API returns that nothing applies -- and found the same way, by comparing a
live browser against the fingerprint instead of by reading the code.

Playwright takes it as its own context option, so the fix is to pass it.
Verified in a live browser with this repo's own client: 1.25 requested, 1.25
reported, with the user agent, timezone and locale still matching.

The check is pinned in the offline suite so it stays fixed.

Found while auditing a new sibling repo against the family notes. All five
repos in this family had it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jehrr
jehrr merged commit ac43b88 into main Sep 11, 2026
4 checks passed
@jehrr
jehrr deleted the fingerprint-device-scale-factor branch September 11, 2026 05:57
@claude

claude Bot commented Sep 11, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants