OpenRung
A free, privacy-first relay network that helps you reach the open internet. Open source and nonprofit-run.
翻訳待ち
🦊 Anti-detect browser
翻訳待ち
Loading the full README.
Read the full README ↗[!NOTE] All of the latest documentation is available at camoufox.com.
Processing tens of billions of requests per month for thousands of customers, Byteful powers browser-based AI agents, automation systems, and data workflows. It is a member of the Internet Watch Foundation and the Ethical Web Data Collection Initiative.
Get 10% off Byteful Residential Bandwidth with the code: CAMOUFOX10
Get 15% off your first 3 months with code CAMOUFOX → crawlbase.com
Camoufox is intended to be used with rotating proxies (preferably residential IPs). Check out these providers:
Camoufox is a Firefox build for web scraping and AI agents. Every launch gets a fresh, internally consistent device identity drawn from the real-world distribution of devices, and the browser reports it from C++, so a page sees native values rather than JavaScript overrides. Playwright drives it, through an automation layer the page cannot see.
| Package | Install | Docs |
|---|---|---|
| Python | pip install -U "camoufox[geoip]" | python/README.md |
| TypeScript / Node.js | npm install camoufox playwright-core | typescript/README.md |
| AI coding agents | AGENTS.md |
pip install -U "camoufox[geoip]"
camoufox fetch
from camoufox.sync_api import Camoufox
with Camoufox(headless=True) as browser:
page = browser.new_page()
page.goto("https://example.com")
import asyncio
from camoufox.async_api import AsyncCamoufox
async def main():
async with AsyncCamoufox(headless=True) as browser:
page = await browser.new_page()
await page.goto("https://example.com")
asyncio.run(main())
// npm install camoufox playwright-core && npx camoufox fetch
import { Camoufox } from "camoufox";
const browser = await Camoufox({ headless: true });
const page = await browser.newPage();
await page.goto("https://example.com");
await browser.close();
What you get back is a normal Playwright Browser. Behind a proxy, add
proxy=... and geoip=True so timezone, locale, geolocation and the WebRTC IP
match the exit IP. For many identities in one browser, use NewContext().
This is the beginning of the README. Read the rest at the original. Read the full README ↗