Blog

Notes from the arms race.

What actually gets a profile flagged, how agents drive a real browser, and the detector runs behind our claims.

5 min

Why a browser in CI or Docker looks nothing like a real machine

No GPU, almost no fonts, no audio device, a datacenter IP and a clean profile every run. Each of those is fixable to some degree, and a couple are not, so know which is which before you spend a sprint tuning a container.

5 min

How to read a WebRTC leak test result

A WebRTC leak test shows a local IP, a public IP and an SDP log, and only one comparison on that page actually decides whether you leak. What each field means, why a random .local address is not a leak, and the IPv6 case most people miss.

5 min

The webdriver flag and cdc_ variables are ChromeDriver's fingerprint, not Selenium's

navigator.webdriver, the automation infobar and the cdc_ variables injected into every page come from the driver process, not from your Selenium script. What to check on your own setup, and when a framework switch genuinely is not worth the rewrite.

5 min

How to read a CreepJS result, section by section

CreepJS is a research page for finding where a browser lies about itself, not a score to beat. What the FP ID, lies, headless and worker sections measure, why a spoofed value usually lands in the lies list instead of changing your fingerprint, and why a clean result predicts little about a real site.

5 min

What a stealth browser MCP server has to provide, and why an agent's browser gets spotted

An agent's MCP browser is usually identified by the machine it runs on, not by the model driving it. The four signals that give it away, what a stealth MCP setup has to fix at each one, and where a stock Playwright MCP server is already enough.

5 min

HTTP/2 fingerprinting, and how the Akamai string is put together

The first frames of an HTTP/2 connection, SETTINGS, WINDOW_UPDATE, PRIORITY and the pseudo-header order, identify the client library that sent them. Here is the Akamai fingerprint format field by field, and why it is checked together with TLS rather than alone.

4 min

User-Agent Client Hints mean you now have three signals that must agree

The User-Agent string has been frozen and trimmed, and the detail moved to Client Hints, split across headers and a JS API. That gives every browser session three separate places to describe its platform, and a spoofer that only changes one of them creates a contradiction that is easier to catch than the original signal.

4 min

A CAPTCHA is not the problem, it is the notification that you failed

Solving the challenge treats the symptom and leaves the risk score that triggered it untouched, so the next session gets challenged again. Here is what actually causes the challenge, and when paying to solve it is still the right call.

4 min

Team workspaces: share browser profiles without sharing passwords

Add teammates by email, share whole profile groups or single profiles, and pick read, edit or delete access. Cookies, fingerprint and proxy travel with the profile.

5 min

Font fingerprinting explained, mechanically

A page cannot list your installed fonts directly, so it measures text instead, rendering a candidate font against a fallback and comparing the width. The resulting set reflects OS, locale and installed software so precisely that a single impossible font is worse than a thousand unlikely ones.

3 min

Chrome 155 is on the kernel. Try it on one profile first.

Chrome 155 reached the stable channel on 2026-09-23 and the AntiBrow kernel now ships a build of it. The last two release notes were about when to move profiles. This one is about how: one throwaway profile first, a short checklist, then the rest in batches.

4 min

Chrome 154 is on the kernel. How far behind can a profile fall?

Chrome 154 reached the stable channel on 2026-09-09 and the AntiBrow kernel now ships a build of it. The last release note was about not jumping too early. This one is about the other end: how long a profile can sit on an old major before the version itself becomes the odd thing about it.