feder-cr / invisible_playwright_mcp
git clone https://github.com/feder-cr/invisible_playwright_mcp.git
v0.72.3 · 3d ago
Playwright MCP server undetected by anti-bots and captchas: AI agent browses the web on anti-detect stealth Firefox, Python, undetected browser automation, scraping, computer use.
—
stars, 24h
—
stars, 7 days
+1.3k
stars, 30 days · #244
1.3k
★ total
247
forks · 4 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguagePython
LicenseMIT
Created2026-09-29 (21d ago)
Last push3d ago
Watchers48
OwnerUser
GitHub topics
ai-toolsantidetect-browserautonomous-agentsbrowser-agentbrowser-automationclaude-code-plugincomputer-usegemini-cligemini-cli-extensionjob-huntingjob-searchllm-agentmcp-servermcp-toolsmodel-context-protocolplaywrightstealth-browserweb-automationweb-scrapingwebscraping
Links
- GitHub: github.com/feder-cr/invisible_playwright_mcp
- Homepage: https://github.com/feder-cr/invisible_playwright_mcp/wiki
- Releases · Issues · Hacker News mentions
README excerpt
Other AI browser agents get captchas. This one is invisible to anti-bots. --- ## Two ways to use this browser agent ### 1. From your assistant, over MCP Windows, in PowerShell: [code] Linux: [code] Then install it in your assistant. **Claude Code:** [code] **Codex:** [code] **Gemini CLI:** [code] ### 2. Standalone: the web UI We bring the interface, you bring an OpenRouter key. Chat on the left, the live browser on the right. Windows, in PowerShell: [code] Linux: [code] Then open **http://127.0.0.1:8765** and type the same thing. --- ## What to ask a web browsing agent Anything that needs real web automation: a browser rather than an API, and a person's judgement about what is on the page. > Go to ` `. One way, Milan to Lisbon, economy, one checked bag, > one adult. Check every date from the 12th to the 16th of next month, one at a > time, and read the cheapest fare for each day. The date field is a calendar > widget, so click the days rather than typing them. If a date has no > availability, say so. Do not guess a number. It drives the page the way a person would: the pointer moves, keys are pressed. ## Options: proxy, profile, seed - **`--openrouter-key`** Your key, or the `OPENROUTER_API_KEY` variable. - **`--model`** An OpenRouter model id, or `INVISIBLE_MCP_MODEL`. Defaults to `z-ai/glm-5.3-flash`. - **`--proxy`** Optional. `http://user:pass@proxy.example.com:8080` or `socks5://proxy.example.com:1080`. Host and port are both required. The timezone, locale and egress follow it. - **`--binary`** An engine binary you already have. It must be the build the seal pins, or startup refuses: this skips the download, not the version check. - **`--seed`** An integer. Same seed, same browser identity, every run. - **`--profile-dir`** A directory to keep the profile in, so logins and cookies survive restarts. - **`--headed`** Show the browser window. The interface shows you the page anyway. - **`--host`, `--port`** `127.0.0.1` and `8765`. Changing the host exposes an interface that has no authentication. ### A `.env` beside the command Rather than retyping the key and the binary path, put them in a `.env` in the directory you run from: [code] It is read at startup, and on the way in it **never overrides** something already set, so the order is `--flag` > the environment > `.env` > the default. Only the directory you are in is read - there is no search upwards, so running from a subfolder cannot silently pick up a different key. The startup line names the variables it applied and never prints their values. Passing `--openrouter-key` puts the key in your shell history, and on Linux in the process list. `OPENROUTER_API_KEY` in the environment or in a `.env` avoids both. ## The wiki: AI browser-agent guides The reading room around the agent lives in the wiki: the AI browser-agent landscape: browser-use, Operator-style and computer-use agents compared, what to check when an agent gets blocked, and what happened to OpenAI Operator, among