We sent 23 AI agents to our website. Most looked human
We sent ChatGPT, Claude, Comet, Manus and 19 more AI agents to a test site and recorded every request and click. What gave them away, and what didn’t.
Published Last checked
AI assistants now open websites for people. You ask ChatGPT to compare two pricing pages, and a browser somewhere clicks through them for you. We build an analytics tool, so we wanted to know what that looks like from the other side: does a visit like this show up as a person, as a bot, or not at all?
So we built a small test site, gave two dozen AI agents, chatbots and developer tools the same task, and recorded every request they sent and every click they made. Then we did the same task ourselves, with a trackpad, a mouse, phones and two accessibility tools, to see where people and agents differ.
The short version: most agents that use a browser look exactly like a person in Chrome. They report no automation, send a normal Chrome user agent, and many came from our own home connection. Only a few said what they were, and only one, Manus, signed its requests so a site can check it. Most chatbots that just fetch a page name themselves to your server and never reach your analytics, but two of them run your scripts and show up as a visitor who leaves at once. How long an agent holds the button didn’t give them away: two of them wait like a person. How the pointer gets to the button did, for every clicking agent we tested.
Tested on 26 October 2026: 49 runs by 23 AI agents, chatbots and tools and 8 human setups, with every request and every click recorded. Every visitor got the same task on the same three pages. The method and its limits are at the end.
The test
The test site was a made-up notes app with three pages: a home page, a plans page and a contact page with a form. The plans page has the detail we asked about, whether the Team plan includes single sign-on, in a comparison table that starts collapsed. Every agent got the same prompt:
Go to [the address] and find out what the Team plan costs per month and whether it includes SSO. Then open the contact page and tell me what it asks for. Don’t submit anything.
Each run had its own address, so every request in the server log belongs to one known visitor. A small script on the page reported what the browser said about itself and how each click happened. It never read what anyone typed.
We tested:
- AI agents that use a browser: ChatGPT Work’s built-in browser in the ChatGPT desktop app, Claude in Chrome, Claude Cowork, Claude computer use, Grok’s desktop app, Perplexity’s Comet browser and Manus.
- Tools developers give their agents: Vercel’s agent-browser, Playwright MCP and Chrome DevTools MCP (driven by Claude Code), the open-source Browser Use, a plain Playwright script, and the same script in a Browserbase cloud browser.
- Chatbots that fetch the page: ChatGPT, Claude, Gemini, Perplexity, Mistral Le Chat, Meta AI, DeepSeek, Claude Code, Jina Reader and Browserbase’s hosted agent.
- People: a Mac trackpad, a mouse, Windows, two iPhones, an Android phone, and the macOS accessibility tools Voice Control and Dwell, which click for you.
Some we couldn’t test. Gemini in Chrome told us it can’t control the browser here, and its browsing agent is reportedly limited to paid plans in the US. We didn’t run OpenAI’s computer-use model. Microsoft Copilot in Edge seemed to answer from the page we had open, without a request of its own, so there was nothing to record.
The results at a glance
| Browser | Says it’s automated | Came from | |
|---|---|---|---|
| ChatGPT Work | Chrome 156 on our Mac | No | Our connection |
| Claude in Chrome | Our own Chrome | No | Our connection |
| Comet, in our browser | Comet (Chrome 145) on our Mac | No | Our connection |
| Comet, in the cloud | Windows Chrome | No | A data centre |
| Grok | Linux Chrome without a graphics card | No | Our connection |
| Claude computer use | Chrome on a Linux desktop | No | Where it runs |
| Claude Cowork | Headless Chrome in the cloud | Yes | Anthropic’s servers |
| Manus | Linux Chrome in the cloud | Yes, and signs its requests | A data centre |
| Browser Use, Playwright MCP | Chrome on our Mac | No | Our connection |
| agent-browser, DevTools MCP, Playwright script | Chrome on our Mac | Yes (webdriver) | Our connection |
| Same script in Browserbase | Linux Chrome | No | A data centre |
| ChatGPT, Claude, Gemini, Perplexity, Mistral, Meta AI | None | In the user agent | Their servers |
| Jina Reader, DeepSeek | Chrome, Firefox | No | A data centre |
ChatGPT Work
- Browser
- Chrome 156 on our Mac
- Says it’s automated
- No
- Came from
- Our connection
Claude in Chrome
- Browser
- Our own Chrome
- Says it’s automated
- No
- Came from
- Our connection
Comet, in our browser
- Browser
- Comet (Chrome 145) on our Mac
- Says it’s automated
- No
- Came from
- Our connection
Comet, in the cloud
- Browser
- Windows Chrome
- Says it’s automated
- No
- Came from
- A data centre
Grok
- Browser
- Linux Chrome without a graphics card
- Says it’s automated
- No
- Came from
- Our connection
Claude computer use
- Browser
- Chrome on a Linux desktop
- Says it’s automated
- No
- Came from
- Where it runs
Claude Cowork
- Browser
- Headless Chrome in the cloud
- Says it’s automated
- Yes
- Came from
- Anthropic’s servers
Manus
- Browser
- Linux Chrome in the cloud
- Says it’s automated
- Yes, and signs its requests
- Came from
- A data centre
Browser Use, Playwright MCP
- Browser
- Chrome on our Mac
- Says it’s automated
- No
- Came from
- Our connection
agent-browser, DevTools MCP, Playwright script
- Browser
- Chrome on our Mac
- Says it’s automated
- Yes (
webdriver) - Came from
- Our connection
Same script in Browserbase
- Browser
- Linux Chrome
- Says it’s automated
- No
- Came from
- A data centre
ChatGPT, Claude, Gemini, Perplexity, Mistral, Meta AI
- Browser
- None
- Says it’s automated
- In the user agent
- Came from
- Their servers
Jina Reader, DeepSeek
- Browser
- Chrome, Firefox
- Says it’s automated
- No
- Came from
- A data centre
Every agent that finished the task gave the answer our test page was built to give: €9 a month, no SSO, and the four fields of the contact form.
Most agents look like a person in Chrome
Bot detection usually starts with three questions: does the browser say it’s automated (navigator.webdriver), does the user agent name a bot, and does the visit come from a data centre. For most agents the answer was no to all three.
ChatGPT Work ran a Chrome 156 inside the ChatGPT desktop app on our Mac. It reported webdriver: false, a normal Chrome user agent, our timezone, our graphics chip and our home IP address. The only odd things were a narrow window, 319 pixels wide, and speed: a full visit took 11 to 21 seconds. Google Analytics showed these visits as ordinary sessions. So did our own tool. In 2025, Simon Willison found that ChatGPT’s agent signed its requests so sites could verify them. In our runs, ChatGPT Work’s browser sent no signature at all.
Claude in Chrome runs in your own browser, so it is your browser: same version, same extensions, same IP address. There’s nothing to tell apart. Comet, when it worked in our Comet window, was the same: a Chrome 145 user agent with no mention of Comet or Perplexity, from our connection.
Grok was the strangest. The requests came from our IP address with our timezone, but the browser reported Linux on an x86 processor, 8 cores and no graphics card, on an Apple Silicon Mac. So it wasn’t our browser, but to the website it came from our connection. We don’t know where that browser runs. Its user agent was plain Linux Chrome, and nothing named Grok.
Claude computer use sees the screen through screenshots and clicks through the operating system, the way a person’s mouse does. We ran it like Anthropic’s reference setup, in a Linux desktop in Docker. It also reported a plain Linux Chrome with webdriver: false.
Among the developer tools, Browser Use and Playwright MCP look like plain Chrome too. A plain Playwright script reports webdriver: true; Playwright MCP switches that off. A Browserbase cloud browser hides it as well, but comes from a data centre, so an IP check would catch it.
A few say what they are. Claude Cowork’s browser announced itself as HeadlessChrome/153 with webdriver: true, from Anthropic’s servers and a different IP address for almost every page. Vercel’s agent-browser and Chrome DevTools MCP report webdriver: true as well. And Manus went furthest: it adds Manus-User/1.0 to its user agent and signs every page request with a Signature-Agent: "https://api.manus.im" header and a cryptographic signature (the Web Bot Auth standard, an IETF draft), so a site can check that the request really came from Manus. It was the only agent in the test that did.
One agent, two browsers
We gave Comet the same prompt six times. Three times it worked in our own Comet window. The other three times it used a browser in Perplexity’s cloud: Windows, a server graphics card, a Los Angeles timezone and an Amazon data-centre address. When we started two tasks at once, the first ran in our browser and the second in the cloud.
Asked why, Comet told us it uses the cloud browser for public pages and our own browser only when a site needs our login. That isn’t what it did: it used our browser three times for the same public page. The two browsers also click differently, as the next sections show. So the same product can reach your site as a person on a home connection or as a server in a data centre.
Many came from our own connection
ChatGPT Work, Claude in Chrome, Comet in our browser and Grok all reached the site from our home IP address, with our timezone, and so did every developer tool we ran on our Mac. That’s worth knowing if you filter bots by IP address or by “data centre or not”: for these agents, a website sees the same address as the person who sent them.
Agents that only read
Asked the same question, Grok answered everything correctly, and even worked out the monthly price itself (€10.80), without a single click, scroll or mouse movement. It typed the addresses of the plans and contact pages directly and read the SSO answer out of the table that was still collapsed on screen. Manus did the same: three pages typed in 21 seconds, no click, no scroll, no movement.
In analytics that’s three page views, almost no time on each page, and no interaction: it looks like a visitor who left straight away. In fact it’s a visitor who read everything. When we told Grok to click around, it did, and then it clicked like the other agents below.
Most chatbots that fetch the page name themselves
When you paste a link into a chatbot and ask for a summary, most don’t open a browser. They fetch the page once from their own servers. No script runs, so an analytics tool that counts with a script in the page never sees the visit. Your server does, and most of these are easy to tell apart: they say who they are in the user agent, and most vendors document it (OpenAI, Anthropic, Perplexity, Google, Mistral, Meta).
| User agent | Checked robots.txt first | |
|---|---|---|
| ChatGPT | ChatGPT-User/1.0 | No. OpenAI’s search crawler fetched it 33 seconds later |
| Claude | Claude-User/1.0 | Yes, one second before |
| Gemini | Google | No |
| Mistral | MistralAI-User/1.0, every page twice in the same second | Yes, the first time |
| Meta AI | meta-webindexer/1.1, the name of Meta’s indexing crawler | Yes, as facebookexternalhit |
| Claude Code | Claude-User (claude-code/…), asks for Markdown first | No |
ChatGPT
- User agent
ChatGPT-User/1.0- Checked robots.txt first
- No. OpenAI’s search crawler fetched it 33 seconds later
Claude
- User agent
Claude-User/1.0- Checked robots.txt first
- Yes, one second before
Gemini
- User agent
Google- Checked robots.txt first
- No
Mistral
- User agent
MistralAI-User/1.0, every page twice in the same second- Checked robots.txt first
- Yes, the first time
Meta AI
- User agent
meta-webindexer/1.1, the name of Meta’s indexing crawler- Checked robots.txt first
- Yes, as
facebookexternalhit
Claude Code
- User agent
Claude-User (claude-code/…), asks for Markdown first- Checked robots.txt first
- No
Perplexity (PerplexityBot/1.0) fetched robots.txt and then our start page instead of the address we gave it, twice. The start page of the test site is empty, so it told us it couldn’t fetch the page. Another time it said the page “returned no readable content” without sending us a single request.
Browserbase’s hosted agent, asked to do the full task, didn’t use a browser either. It fetched the pages with headers that imitate Chrome 146 on macOS, ten versions behind everything else in the test, and requested two pages in the same millisecond from two different IP addresses.
Two “fetchers” run your scripts
Two of the chatbot tools didn’t just fetch the page. They opened it in a real browser, so our script ran, and an analytics tool would count a visitor.
Jina Reader, a service agents use to turn a page into text, loaded it in a headless Chrome in a data centre. Its user agent said plain Linux Chrome 156; only a second version header, which said 155, showed that the user agent had been changed.
DeepSeek opened the page in Firefox 149 on Linux, with Chinese as its language and a Hong Kong timezone, from a Huawei Cloud address in Hong Kong, and was gone within three seconds. Nothing it sent named DeepSeek or a bot.
In analytics, both are a visitor who loaded one page, did nothing and left.
What gave the clicking agents away
Once an agent clicks, we could compare its clicks with ours. The first thing we measured, how long the button is held, worked for most agents and failed for two:
| Button held | Last pointer move before the click | |
|---|---|---|
| Most agents | 0 to 13 ms | 1 to 63 ms before |
| Browser Use | 82 to 90 ms | 134 to 142 ms before |
| Comet in our browser | 265 to 453 ms | 531 to 755 ms before |
| People with a mouse or trackpad | 29 to 266 ms | 21 ms to 2 seconds before |
Most agents
- Button held
- 0 to 13 ms
- Last pointer move before the click
- 1 to 63 ms before
Browser Use
- Button held
- 82 to 90 ms
- Last pointer move before the click
- 134 to 142 ms before
Comet in our browser
- Button held
- 265 to 453 ms
- Last pointer move before the click
- 531 to 755 ms before
People with a mouse or trackpad
- Button held
- 29 to 266 ms
- Last pointer move before the click
- 21 ms to 2 seconds before
Browser Use and Comet in our browser press, wait and release like a person. Comet in the cloud didn’t: it held the button for 10 to 13 ms.
What gave every clicking agent away was how the pointer got to the button. A person moves a hand, so the pointer arrives in many small steps; the last step before a click was 0 to 2 pixels for every one of our clicks. An agent doesn’t move a hand. Before each click, the pointer appeared on the target in a single jump of 200 to 840 pixels, or it appeared there for the first time on the page, and it barely moved otherwise:
| Agents | People with a mouse or trackpad | |
|---|---|---|
| The last move before a click | One jump onto the target | A small step, 0 to 2 pixels |
| Other pointer movement on the page | 0 to 2 movements | 11 to 642 |
The last move before a click
- Agents
- One jump onto the target
- People with a mouse or trackpad
- A small step, 0 to 2 pixels
Other pointer movement on the page
- Agents
- 0 to 2 movements
- People with a mouse or trackpad
- 11 to 642
This held for all 13 kinds of clicking agent, in every run: those that click through Chrome’s remote-control interface, Claude computer use, which clicks through the operating system, and the two that wait like a person.
Signals that didn’t hold up
Some things that sound like good bot signals failed on our own data:
- How long the button is held. Most agents click in a few milliseconds, but Browser Use and Comet hold the button as long as people do, and the accessibility tools below click faster than any agent.
- Clicking dead in the centre of a button. ChatGPT Work did, usually within a pixel. But Claude in Chrome and Claude computer use aim at the text they see in a screenshot, and missed the centre of a wide element by more than 230 pixels. And one of us hit a link within 2 pixels of its centre with a trackpad.
- A big jump of the pointer. A fast swipe on a trackpad moved the pointer 701 pixels in one step. Only a jump that lands right on what is clicked next is suspicious.
- Pressure. ChatGPT Work and Comet reported a pressure of 0 when they clicked, where a mouse reports 0.5. The Playwright tools reported 0.5.
- How it navigates. ChatGPT Work typed the addresses in some runs and clicked the links like a person in others, with the same browser.
- The console trick for spotting remote control. Tools that drive Chrome through its remote-control interface often listen to the browser console. Bot-detection scripts exploit that: the page logs an error object that notices when something reads it, and a listening tool does. It noticed nothing in any browser we tested, Playwright included, so it doesn’t work in the Chrome versions we saw (136 to 156).
Accessibility tools look more like bots than the bots
macOS Voice Control lets you click by saying what to click. Every one of its clicks landed exactly in the centre, with the button “held” for less than a millisecond, a pressure of 0, and no mouse movement at all. On any single signal, it looked more automated than ChatGPT Work.
Dwell clicks for you when you rest the pointer on something. Its clicks were also held for 0 to 3 milliseconds.
Both differ from the agents in how the pointer moves: Voice Control never moves it before clicking, and with Dwell the pointer rests on the target for about three seconds, moved there by a hand in small steps. A detection rule that relies on click timing would label people who can’t use a mouse as bots. The movement tells them apart, but that’s the only thing that does.
What this means for your analytics
- AI agents are already in your numbers as people. Short visits that read everything and click nothing, and visits that go straight to pricing, may be agents.
- Most chatbot fetches are counted on the server. They never reach a script in the page. To see how often someone asks ChatGPT, Claude or Mistral about your pages, count
ChatGPT-User,Claude-UserandMistralAI-Userrequests on your server. Some, like DeepSeek’s, show up in analytics as a one-page visit instead. - Don’t count on IP addresses. Most of the agents we ran came from our home connection.
- Be careful with “bot” filters. If a filter catches instant, centred clicks, it also catches people using Voice Control.
What we’re changing in Privatrak
Privatrak already marks visits as automated when the browser says so (webdriver) or the user agent names a headless browser or an agent like Manus. In this test that caught the Playwright script, agent-browser, DevTools MCP, Claude Cowork and Manus. ChatGPT Work, Claude in Chrome, Comet, Grok, computer use, Browser Use, Playwright MCP and the Browserbase browser were counted as people.
We’re adding a check in the browser for the movement pattern above: a visit is only marked when every mouse click on the page came after one jump of the pointer onto the target, with almost no other movement, so Voice Control and Dwell users stay people. Replayed on our recordings, that marks every clicking agent and none of us. The browser only sends “automated” or not, never the movements themselves. A marked visit is still counted, and you decide whether to leave automated visits out of your numbers. Agents that only read, and fetchers that run your scripts, will still look like people.
For chatbots that only fetch, we’re working on counting them from your server: a small addition for your site sends only the requests whose user agent names a known chatbot or crawler, and Privatrak shows which pages ChatGPT, Claude and Perplexity fetched for someone, separate from your visitors.
Also seen
- Visitors before anyone had the link. Within minutes of the site’s certificate being issued, scanners that watch the public certificate logs visited it, some claiming to be Chrome. Anthropic’s crawler ClaudeBot came by twice the same morning.
- Link previews. When people opened the test links we’d sent them, WhatsApp and Facebook’s preview fetchers got there first.
- Google came back on its own. Right after an agent’s visit fired the Google Analytics tag, a Google fetcher (
GoogleOther) loaded the same page.
Every user agent we saw
For reference, here is the user agent each one sent, copied from our server log. Only the rows marked “Yes” ran the page’s scripts, so only those can reach an analytics tool that counts with a script. The agents that drive a browser, ChatGPT’s agent included, send an ordinary Chrome user agent; only Claude Cowork, agent-browser and Manus give themselves away in it.
| User agent | Runs your scripts | |
|---|---|---|
| ChatGPT Work (ChatGPT’s agent) | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| Claude in Chrome (your own browser) | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 | Yes |
| Comet, in your browser | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 | Yes |
| Comet, in Perplexity’s cloud | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| Grok | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| Claude computer use | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| Claude Cowork | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36 | Yes |
| Manus | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36; Manus-User/1.0 | Yes |
| Browser Use | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 | Yes |
| Playwright MCP, DevTools MCP | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| Vercel agent-browser | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36 | Yes |
| Jina Reader | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 | Yes |
| DeepSeek | Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0 | Yes |
| ChatGPT, reading a link | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot | No |
| Claude, reading a link | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claude-user@anthropic.com) | No |
| Claude Code | Claude-User (claude-code/2.1.309; +https://support.anthropic.com/) | No |
| Gemini | Google | No |
| Perplexity | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot) | No |
| Mistral Le Chat | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; MistralAI-User/1.0; +https://docs.mistral.ai/robots) | No |
| Meta AI | meta-webindexer/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler) | No |
ChatGPT Work (ChatGPT’s agent)
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Claude in Chrome (your own browser)
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36- Runs your scripts
- Yes
Comet, in your browser
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36- Runs your scripts
- Yes
Comet, in Perplexity’s cloud
- User agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Grok
- User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Claude computer use
- User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Claude Cowork
- User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36- Runs your scripts
- Yes
Manus
- User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36; Manus-User/1.0- Runs your scripts
- Yes
Browser Use
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36- Runs your scripts
- Yes
Playwright MCP, DevTools MCP
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Vercel agent-browser
- User agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
Jina Reader
- User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36- Runs your scripts
- Yes
DeepSeek
- User agent
Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0- Runs your scripts
- Yes
ChatGPT, reading a link
- User agent
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot- Runs your scripts
- No
Claude, reading a link
- User agent
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claude-user@anthropic.com)- Runs your scripts
- No
Claude Code
- User agent
Claude-User (claude-code/2.1.309; +https://support.anthropic.com/)- Runs your scripts
- No
Gemini
- User agent
Google- Runs your scripts
- No
Perplexity
- User agent
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)- Runs your scripts
- No
Mistral Le Chat
- User agent
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; MistralAI-User/1.0; +https://docs.mistral.ai/robots)- Runs your scripts
- No
Meta AI
- User agent
meta-webindexer/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)- Runs your scripts
- No
How we tested
The test site ran on our own server, with three static pages. The server log recorded every request with all its headers. A script on each page reported what the browser said about itself (user agent, webdriver, window size, timezone, graphics) and how each click happened: how long the button was held, how the pointer moved before it, and how many movements there were in total. It never read what was typed into the form.
Each agent ran in its own way:
- ChatGPT Work, Grok, Cowork, Comet, Manus and the chatbots were run by hand in their own apps or websites, on free plans where possible.
- Claude in Chrome ran in our own Chrome.
- Claude computer use ran on Claude Opus 5.5 with the computer-use toolset, in a Linux desktop in Docker that clicks with
xdotool, like Anthropic’s reference setup. - agent-browser, Playwright MCP and DevTools MCP were driven by Claude Code on our Mac; Browser Use ran on our Mac with Claude Sonnet 4.6 and its default settings.
- The Playwright script ran in Chrome on our Mac and in a Browserbase cloud browser. Jina Reader was called without an account.
Limits to keep in mind:
- It’s one day and one site: one to six runs per agent, and ten runs by people, most of them by us.
- Agents change quickly. A new version can click differently tomorrow.
- An agent that moves the pointer along a path in small steps would look like a person. None of the agents we tested did.
- Where Grok’s browser runs, and what makes Comet choose a browser, is what we observed, not something we could confirm.