Skip to main content
AI Agents

The Rise of Browser Automation Agents

AI agents like Google's Project Mariner and Cognition's Devin now browse the web the way a human would — clicking, filling forms, and reading pages through a real browser. Here's how they work, why they slip past classic bot checks, and what to actually do about it.

Botscope Team · 12 min read

What are browser automation agents?

A browser automation agent is software that drives a real web browser the same way a person does: it opens a page, reads what's on screen, decides what to click or type next, and moves on. The difference from a normal script is that it isn't following a fixed set of steps — a language model is looking at the page (or its accessibility tree) and deciding, moment to moment, what a human would do to finish a task.

The category has grown fast since 2024. Google's Project Mariner can complete multi-step shopping and research tasks inside Chrome. Cognition's Devin was built as an autonomous software engineer that browses documentation, GitHub, and Stack Overflow while it works. OpenAI's Operator and Anthropic's computer-use models can control a full desktop browser session. Open-source frameworks like Browser Use and Playwright-based agents let any developer wire an LLM up to a real Chromium instance in an afternoon.

None of this is inherently hostile. Most of these agents are acting on behalf of a real person who asked them to book a flight, fill out a form, or summarize a page. But from a web server's point of view, that distinction — "a person's proxy" versus "an unattended scraper" — is exactly the thing that's now hard to tell.

How they actually work under the hood

Almost every browser agent is built on the same three layers:

  1. A real browser engine. Most run actual Chromium (via Playwright or the Chrome DevTools Protocol), sometimes headless, increasingly headful (a visible, real browser window) specifically because headless browsers are easier to fingerprint.
  2. A perception loop. The agent takes a screenshot or reads the DOM/accessibility tree, sends it to a vision-capable language model, and gets back a decision: "click the button labeled 'Add to cart'" or "type this text into the field with placeholder 'Email'."
  3. An action layer. The decision gets translated into real input events — mouse moves, clicks, key presses — dispatched through the same automation APIs browsers expose to testing tools.

This is the important part: because step 1 is a genuine browser, the agent executes your JavaScript, runs your client-side checks, holds real cookies, and presents a real TLS handshake. Every signal that used to reliably say "this is a bot" — no JS execution, missing cookies, a suspicious TLS fingerprint — is now indistinguishable from a real visitor at the network and script-execution layer.

Why traditional bot detection misses them

Most bot-mitigation built before 2023 leans on one of three checks, and browser agents pass all three:

  • "Can it run JavaScript?" — Yes. It's a real browser. A JS challenge that a curl script would fail is trivial for it.
  • "Does its TLS/HTTP fingerprint look like a script?" — No. Tools like JA3/JA4 fingerprint the TLS handshake to spot non-browser HTTP clients (Python's requests, curl, custom scrapers). A Chromium-based agent produces the exact same handshake as the Chrome on your own laptop.
  • "Does the User-Agent string look like a known bot?" — No, and this check was always weak — the header is just text the client chooses to send, trivially set to anything.

Static, one-shot checks like these were built for a world where "runs a real browser" was itself proof of being human. That assumption stopped holding once agents started shipping actual Chromium as a dependency.

The traffic signals that give them away

Detection has to move from "can it pass a one-time check" to "does its behavior over time look human." A handful of signals are still reliable, because they're artifacts of automation, not of the browser engine itself:

  • Automation flags that leak anyway. Despite efforts to hide it, navigator.webdriver, missing browser plugins, unusual permission states, and CDP-specific properties on window often still surface — inconsistently, but often enough to be a useful signal when combined with others.
  • Mouse and scroll micro-behavior. Humans move a mouse with jitter, acceleration curves, and micro-corrections. Even agents that simulate mouse movement tend to produce paths that are too smooth, too direct, or too evenly timed — no hesitation, no overshoot-and-correct.
  • Timing that's too consistent, or too fast. A human filling out a form pauses to read labels and think. An agent often completes a multi-field form in a fixed, repeatable rhythm regardless of form complexity — or completes in milliseconds what would take a person several seconds.
  • No referrer chain. Organic human sessions usually arrive with a plausible history — a search result, a social link, an internal navigation. Agent sessions often jump straight to a deep URL with no  referrer at all, because the model was simply told to go there.
  • Session shape. A real shopper browses, compares, hesitates, sometimes abandons. An agent executing a task tends to move in a straight line toward the goal, hitting each required step exactly once.

Each signal alone is weak — plenty of real humans move a mouse in a straight line too. The reliable part is combining several weak signals into one score per visitor and clustering by shared characteristics (the same client "signature" showing up across many sessions), which is exactly how Botscope's Visitors dashboard groups suspicious traffic today.

Why this matters for your site

Even when a browser agent isn't malicious, unmanaged agent traffic causes real, measurable problems:

  • Analytics get skewed. Agent sessions inflate pageviews and distort conversion-rate and funnel metrics if they're counted as human traffic.
  • Account abuse gets easier. The same automation that books a flight for a legitimate user can be pointed at a registration or login form to test stolen credentials or create fake accounts at scale — and it now clears JS challenges a script-based credential-stuffing tool couldn't.
  • Paywalled or gated content gets scraped. An agent instructed to "summarize this article" behaves exactly like a scraper harvesting your content, just one page at a time instead of in bulk.
  • Rate limits stop working the way you expect. Agents often run from residential or mobile proxy pools specifically to avoid IP-based rate limiting, so a per-IP limit alone won't catch a distributed agent swarm.

What to do about it

robots.txt doesn't help here — it's a voluntary convention for crawlers, and a browser agent is arguably acting as a human's assistant, not "crawling" in the sense the standard covers at all. The practical approach is layered:

  1. Fingerprint the client, not just the IP. Cluster requests by browser/TLS/behavioral signature so the same automation shows up as one entity even when it rotates IPs.
  2. Score behavior, don't gate on a single check. Combine mouse entropy, timing, referrer presence, and session shape into one anomaly score instead of a pass/fail JS challenge.
  3. Verify identity where it's offered. Some agent operators are starting to sign their requests with Web Bot Auth — verify the signature rather than trusting a self-reported name.
  4. Set an explicit policy per category, not a blanket block. Decide deliberately: allow verified good bots, observe unknown automation while you gather data, and only challenge or block once you're confident it's unwanted — a blanket block just pushes unverified agents to spoof a different signature.

This is precisely the layered model Botscope runs at the edge: cluster by client signature, score behavior in real time, and give you a simple allow / observe / challenge / block decision per agent — instead of a single brittle JS check that stopped working the day agents started shipping real Chromium.

FAQ

Are browser automation agents illegal to use against my site?

It depends entirely on what they're used for and your terms of service — the technology itself is neutral. A person using an agent to book their own flight is very different from someone using one to scrape your pricing page at scale or test stolen logins. Your policy should be based on behavior and intent, not on whether a request happens to come from an agent.

Can I just block every request that looks automated?

You can, but you'll likely block legitimate use cases too — accessibility tools, monitoring services, and increasingly, agents acting for your own paying customers. Most sites are better served by an observe-first policy: watch what a given signature does over time, then decide.

Do these agents respect robots.txt?

Inconsistently, and it's genuinely ambiguous whether they should — a lot of them are arguably fetching a page on behalf of a specific human's request, not autonomously crawling. Don't rely on it either way; see our deep dive on whether robots.txt still matters in 2026.

See every AI agent visiting your site — before it acts

Botscope tells you which requests come from a real visitor, a verified crawler, or an unverified automation agent, in under 5ms — start with a JS snippet or agent install, no DNS change required, then move to edge enforcement when you need the strongest protection.

Start free — connect in minutes