Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,10 @@ browser = await p.chromium.launch(**config['launch_options'])

**Technical Details:**
- Detects web environments via `CLAUDE_CODE_REMOTE=true`
- Starts local proxy wrapper on `127.0.0.1:18080` for authentication
- Adds `Proxy-Authorization` headers for HTTPS tunnel establishment
- Starts local proxy wrapper on a dynamically allocated port for authentication
- Handles both CONNECT tunnels (HTTPS) and plain HTTP requests
- Adds `Proxy-Authorization` headers automatically
- Respects `NO_PROXY`, `HTTP_PROXY`, and `HTTPS_PROXY` environment variables
- Uses Chrome by default for better stealth (falls back to Chromium)

See [SKILL.md](skills/playwright-skill/SKILL.md) for full auto-configuration documentation.
Expand Down
8 changes: 5 additions & 3 deletions skills/playwright-skill/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ I'll write custom Patchright code for any automation task you request and execut
When running in **Claude Code for Web** environments, the skill automatically:

✅ **Detects the environment** - Uses official `CLAUDE_CODE_REMOTE` environment variable to detect web sessions
✅ **Starts proxy wrapper** - Automatically launches authentication wrapper on `127.0.0.1:18080`
✅ **Starts proxy wrapper** - Automatically launches authentication wrapper on a dynamic local port
✅ **Configures browser** - Prefers Chrome over Chromium for better stealth, sets up proxy, headless mode, and certificate handling
✅ **Enables external sites** - Full internet access through authenticated proxy
✅ **Enables external sites** - Full internet access through authenticated proxy (respects `NO_PROXY`)

**No configuration needed** - just use the skill normally:

Expand All @@ -68,9 +68,11 @@ context = await browser.new_context(**config['context_options'])

The skill transparently handles:
- JWT proxy authentication (adds `Proxy-Authorization` headers)
- Both CONNECT tunnels (HTTPS) and plain HTTP requests through the proxy
- `NO_PROXY` / `HTTP_PROXY` / `HTTPS_PROXY` environment variables
- Headless mode (automatically enabled in web environments)
- Certificate validation (bypassed for proxy connections)
- HTTPS tunnel establishment (via local wrapper)
- Dynamic port allocation (no hardcoded ports)
- Chrome preference (uses Chrome if available, falls back to Chromium for better bot detection avoidance)

**For external websites in Claude Code web:**
Expand Down
Loading