
What happens when you make a browser that is identical to chrome but it's use is scraping
I built a real C++ browser and gave you a TypeScript library to control it — here's why it changes scraping
Most tools like Puppeteer and Playwright bolt automation onto Chrome from the outside. They're always playing catch-up with anti-bot systems.
I took a different approach. I built the actual browser — Qt6 + Chromium engine, written in C++. Then I wrote a TypeScript library (Piggy) that controls it over a local socket. That's why Cloudflare bypasses are almost trivial and the code stays dead simple.
Two repos, one ecosystem:
🖥️ Nothing Browser (the C++ browser) https://github.com/BunElysiaReact/nothing-browser
📦 Piggy (the TS library) — https://github.com/ernest-tech-house-co-operation/nothing-browser
What you get out of the box:
🪪 Persistent TLS fingerprint identical to real Chrome — sites can't profile you
🧠 Human Mode — randomized delays, natural scrolling, no robotic timing
⚡ Socket-based IPC — millisecond latency between your script and the browser
🌐 Remote deployment — binary runs on a VPS, you scrape from local
💾 Session persistence — save/restore cookies and storage, stay logged in
🏊 Tab pooling — concurrent requests inside one browser instance
🚀 Built-in API server — one line turns your scraper into a REST endpoint with OpenAPI docs
🔄 Proxy rotation — built-in fetch, test, switch, rotate
The code looks like this:
Ts import piggy from "nothing-browser";
await piggy.launch(); await piggy.register("books", "https://books.toscrape.com"); await piggy.books.navigate();
const books = await piggy.books.evaluate(() => Array.from(document.querySelectorAll(".product_pod")).map(el => ({ title: el.querySelector("h3 a")?.getAttribute("title") ?? "", price: el.querySelector(".price_color")?.textContent?.trim() ?? "", })) );
console.log(books); await piggy.close();
That's a real browser. Not a wrapper around someone else's.
Bun-first but Node compatible. Headless and headful ship as separate binaries so you're not carrying GPU overhead when you don't need it.
📚 Docs: https://nothing-browser-docs.pages.dev
Would love issues, feedback, and ⭐ stars — built in Kenya 🇰🇪