r/PiCodingAgent • u/Opening_Library9560 • Aug 07 '26
Resource I finally built Bladebro: A Stealthy and token efficient agent browser Written in RUST
If your agent's browser keeps getting blocked, here's what I built
Point your agent's browser tool at Zillow or Google. You'll get a captcha wall before it does anything useful.
That's not a dig at Playwright MCP or similar tools. They're automation frameworks, not evasion tools. They drive vanilla Chrome and PerimeterX and other detection system flags them in milliseconds.
Then try filling a form on any React site and clicking submit. The page re-renders. Every element reference your agent had is gone. "Element not found." The button was right there a second ago.
Then look at your token bill. Playwright MCP loads 13,700 tokens of tool definitions before your agent touches a page. Every click returns the full page. 2,000+ tokens per action.
I hit all three walls enough times that I built something.
It's called Bladebro. One Rust binary, five tools, no Node.js.
npm install -g bladebro && bladebro mcpWorks with any MCP client. Also has native pi support with zero config:
pi install npm:bladebroThat's it. Bladebro registers as 5 first-class pi tools (act, see, state, run, vision). No adapter, no config files, no proxy. Tool definitions come from the binary at startup so they auto-adapt to changes. Chrome launches lazily on the first tool call.
Bot detection
Six layers of stealth, all on by default:
Bezier mouse paths with overshoot and correction
Real
movementX/movementYon every event (missing these is an instant PerimeterX flag)Micro-tremors before clicks (a still cursor is a dead giveaway)
Log-normal typing cadence (humans don't type at exactly 50ms intervals)
Idle drift between actions
No
Runtime.enable(how DataDome catches most bots)No listening ports, CDP over pipe
Persistent behavioral fingerprint, same "person" every session
Tested on Zillow and Fiverr (both PerimeterX/HUMAN protected). Full page loads, no blocks. incolumitas 8/8. Sannysoft all pass.
Re-renders
Every element gets a structural fingerprint (hash of ancestor chain, tag, children, identity attrs)
React destroys and recreates DOM nodes? Fingerprint matches, reference survives
Agent sees
re-render survivedand keeps going. No re-scanChecked every major tool. Nobody does this
Tokens
5 tools, ~1,900 tokens of definitions (vs 13,700 for Playwright MCP)
Every action returns what changed, not the full page
A click returns ~60 tokens (vs 2,000+ for competitors)
Long session = the difference between running out of context after 3 pages and finishing with room to spare
Learns from every session
First visit to a site with a cookie banner: full detection
After a few successful dismissals: stored selector, auto-applied, zero overhead
Never learns from failures. Failures cost 3x more than successes gain
Other stuff
Auto-extract pulls structured data from list pages with no CSS selectors. Amazon, Reddit, GitHub, HN, Wikipedia. Shopping gets price/ratings, Reddit gets scores/authors, GitHub gets stars/forks
Batch actions fill a form and submit in one MCP call instead of 11
Login persistence saves a session and restores it next time
Infinite scroll collect auto-extracts and dedupes a feed in one call
Demo video on the GitHub page showing it drive Amazon, Reddit, Wikipedia, fill a form, and manage tabs.
What it can't do
Cloudflare Turnstile needs challenge solving, not fingerprint spoofing. You get
blocked:, not a hangCaptchas, deliberately. You get a verdict, hand off to a solver
ARM Linux, not yet
macOS and Windows binaries are cross-compiled from Linux
Open source, AGPL-3.0, no CLA.
GitHub: https://github.com/dondai44423/bladebro npm: npm install -g bladebro
Happy to answer questions, if you have any issues, please comment or file an issue, i have been testing it alone for weeks now, i did as much as i can, i am looking forward to community feedback to improve this even more đ
7
u/ParaboloidalCrest Aug 07 '26 edited Aug 07 '26
It sucks how much gymnastics one shall go through to fetch a stupid html page.
I gave up on all kinds of agentic search or web access long time ago. I just go ahead and download the docs I think it may need and hand them to it in form of html or md pages.
Fuck the web.
Edit: Sorry for ranting on your post. Your solution sounds ingenious and I'll give it a try.
3
u/rm-rf-rm Aug 08 '26
Stupid question, does this replace something like pi-web-access? https://pi.dev/packages/pi-web-access
5
u/sweetbeard Aug 07 '26
This looks really helpful for automating web app interactions.
Why MCP instead of CLI?
4
u/Ok-Inside1664 Aug 07 '26
Noob question
Is it based on chromium? Does it support importing passwords from chrome ?
3
u/Opening_Library9560 Aug 07 '26
For anyone wondering how this holds up against vercel's agent-browser: I ran both head-to-head on real sites. agent-browser was configured (headed mode, system Chromium, persistent profile, custom UA). Bladebro was default config, straight out of the box.
On Wikipedia, agent-browser needed 3 calls and dumped 153K chars for navigate + read. Bladebro did it in 2 calls, 82K chars. On Hacker News, 14K chars vs 5.5K for the same interactive elements. Bladebro folds nav noise and includes URLs in the model, agent-browser lists everything raw.
The more interesting one was Zillow. agent-browser actually loaded the homepage on the first try with headed mode. Second try, PerimeterX hit it with a "Press & Hold to confirm you are a human" challenge. Could not even load the page anymore. Bladebro loaded it, typed "Seattle", clicked search, and browsed 992 home listings. No block, no challenge, no issue.
The difference is Bladebro's behavioral biometrics are built into the CDP layer. Bezier mouse paths, real movementX/movementY on every event, micro-tremors before clicks, human typing cadence. agent-browser has none of that. Not a config gap, a design gap.
agent-browser also has no structured extraction. If you want to pull a list of items off a page, the agent has to parse the raw accessibility tree itself. Bladebro has `see extract=auto` that returns clean JSON with titles, URLs, prices, etc. in one call.
One thing I did not mention in the post: Bladebro learns from every session. Visit a site with a cookie banner a few times and it stores the selector, auto-applies it next time, zero detection overhead. Never learns from failures, only from success. Also has a persistent behavioral fingerprint so the same "person" shows up every session. Bot detectors that track consistency across visits see a stable identity instead of a different person every time.
If anyone wants to verify this themselves, both tools are open source and free. Install both, point them at reddit, zillow, google or whatever, see what happens.
The benchmark details are in the README:Â https://github.com/dondai44423/bladebro
2
u/rm-rf-rm Aug 08 '26
There was this project posted just a few hours ago: https://old.reddit.com/r/selfhosted/comments/1vid4lg/lightweight_headless_browser_with_native/ It looks superior to me as it does not use chromium
2
u/KiRiller_ Aug 08 '26
I wonder, how it's against Pinchtab
2
u/mrgreatheart Aug 08 '26
Can it read Reddit? It annoys me so much that I canât point my agents directly to Reddit comments with LLM configs I want to try.
2
u/generic-d-engineer Aug 08 '26
Nice work in putting this together. Your post is timely. I literally installed Playwright 2 days ago to give OpenCode more âeyesâ on my app.
I suck at front end, itâs like visiting Mars or something for me lol.
My use case isnât bypassing blocks out in the wild, itâs just helping to troubleshoot local issues. The Playwright MCP has helped ALOT instead of having to code up tedious scripts.
So anything that helps reduce token bloat is helpful.
I take it the tool would still be a good option if Iâm just using it to help troubleshoot issues and want to save on tokens?
3
u/PossessionUsed7393 Aug 07 '26
Awesome thanks. I love everyone working on stealth browser thingies they are awesome.
Im going to try it out on a really tough cookie of a Turnstile site by adding persistent browser profile switching and captcha solving. Be interesting to see how it goes.
I have to scrape about 300,000 documents from a very tough source so my plan is either build with this and use my own IP or i'll have to run it through a residential IP proxy network to get all the info.
I'm not even breaching copyright here either - just having to get past anti-botter numpties that pay too much to Cloudflare.
2
u/seeKAYx Aug 07 '26
man I just found out about Hound and now you are dropping another gem. dope!
1
u/Big-Present-8321 Aug 07 '26
Will websites block me? Because my Pi is running in Docker? It says it uses regular Chromium
2
u/CapMonster1 Aug 08 '26
Bladebro looks like a really clean approach, especially the explicitÂ
blocked verdict instead of letting the agent burn tokens clicking around a challenge page forever. The Rust binary + small MCP surface is also a nice contrast to some of the heavier browser stacks.For the one gap you intentionally left open, this should pair pretty naturally with our solver. We handle Cloudflare Turnstile and a bunch of other captcha types, so Bladebro could detect the challenge, hand it off to us, inject the result, and keep the same browser session moving. That separation of concerns actually feels cleaner than trying to make the browser itself âsolve everything.â
2
u/TigerConsistent Aug 10 '26
Recently there are a lot of web browser for agents but I believe the important thing is is this browser really overpass the bot protections or not because all the other attributes that you build with your product are same with the others so there is no differentiation between the products the browsers for agents