Update SKILL.md to match the latest upstream skill from vercel-labs/agent-browser, adding substantial new capabilities: - Authentication (auth vault, profiles, session persistence, state files) - Command chaining, annotated screenshots, diffing - Security features (content boundaries, domain allowlist, action policy) - iOS Simulator support, Lightpanda engine, downloads, clipboard - JS eval improvements (--stdin, -b for shell safety) - Timeout guidance, config files, session cleanup Add 7 reference docs (commands, authentication, snapshot-refs, session-management, video-recording, profiling, proxy-support) and 3 ready-to-use shell templates. Kept our YAML frontmatter, setup check section, and Playwright MCP comparison table which are unique to our plugin context.
195 lines
4.9 KiB
Markdown
195 lines
4.9 KiB
Markdown
# Proxy Support
|
|
|
|
Proxy configuration for geo-testing, rate limiting avoidance, and corporate environments.
|
|
|
|
**Related**: [commands.md](commands.md) for global options, [SKILL.md](../SKILL.md) for quick start.
|
|
|
|
## Contents
|
|
|
|
- [Basic Proxy Configuration](#basic-proxy-configuration)
|
|
- [Authenticated Proxy](#authenticated-proxy)
|
|
- [SOCKS Proxy](#socks-proxy)
|
|
- [Proxy Bypass](#proxy-bypass)
|
|
- [Common Use Cases](#common-use-cases)
|
|
- [Verifying Proxy Connection](#verifying-proxy-connection)
|
|
- [Troubleshooting](#troubleshooting)
|
|
- [Best Practices](#best-practices)
|
|
|
|
## Basic Proxy Configuration
|
|
|
|
Use the `--proxy` flag or set proxy via environment variable:
|
|
|
|
```bash
|
|
# Via CLI flag
|
|
agent-browser --proxy "http://proxy.example.com:8080" open https://example.com
|
|
|
|
# Via environment variable
|
|
export HTTP_PROXY="http://proxy.example.com:8080"
|
|
agent-browser open https://example.com
|
|
|
|
# HTTPS proxy
|
|
export HTTPS_PROXY="https://proxy.example.com:8080"
|
|
agent-browser open https://example.com
|
|
|
|
# Both
|
|
export HTTP_PROXY="http://proxy.example.com:8080"
|
|
export HTTPS_PROXY="http://proxy.example.com:8080"
|
|
agent-browser open https://example.com
|
|
```
|
|
|
|
## Authenticated Proxy
|
|
|
|
For proxies requiring authentication:
|
|
|
|
```bash
|
|
# Include credentials in URL
|
|
export HTTP_PROXY="http://username:password@proxy.example.com:8080"
|
|
agent-browser open https://example.com
|
|
```
|
|
|
|
## SOCKS Proxy
|
|
|
|
```bash
|
|
# SOCKS5 proxy
|
|
export ALL_PROXY="socks5://proxy.example.com:1080"
|
|
agent-browser open https://example.com
|
|
|
|
# SOCKS5 with auth
|
|
export ALL_PROXY="socks5://user:pass@proxy.example.com:1080"
|
|
agent-browser open https://example.com
|
|
```
|
|
|
|
## Proxy Bypass
|
|
|
|
Skip proxy for specific domains using `--proxy-bypass` or `NO_PROXY`:
|
|
|
|
```bash
|
|
# Via CLI flag
|
|
agent-browser --proxy "http://proxy.example.com:8080" --proxy-bypass "localhost,*.internal.com" open https://example.com
|
|
|
|
# Via environment variable
|
|
export NO_PROXY="localhost,127.0.0.1,.internal.company.com"
|
|
agent-browser open https://internal.company.com # Direct connection
|
|
agent-browser open https://external.com # Via proxy
|
|
```
|
|
|
|
## Common Use Cases
|
|
|
|
### Geo-Location Testing
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Test site from different regions using geo-located proxies
|
|
|
|
PROXIES=(
|
|
"http://us-proxy.example.com:8080"
|
|
"http://eu-proxy.example.com:8080"
|
|
"http://asia-proxy.example.com:8080"
|
|
)
|
|
|
|
for proxy in "${PROXIES[@]}"; do
|
|
export HTTP_PROXY="$proxy"
|
|
export HTTPS_PROXY="$proxy"
|
|
|
|
region=$(echo "$proxy" | grep -oP '^\w+-\w+')
|
|
echo "Testing from: $region"
|
|
|
|
agent-browser --session "$region" open https://example.com
|
|
agent-browser --session "$region" screenshot "./screenshots/$region.png"
|
|
agent-browser --session "$region" close
|
|
done
|
|
```
|
|
|
|
### Rotating Proxies for Scraping
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Rotate through proxy list to avoid rate limiting
|
|
|
|
PROXY_LIST=(
|
|
"http://proxy1.example.com:8080"
|
|
"http://proxy2.example.com:8080"
|
|
"http://proxy3.example.com:8080"
|
|
)
|
|
|
|
URLS=(
|
|
"https://site.com/page1"
|
|
"https://site.com/page2"
|
|
"https://site.com/page3"
|
|
)
|
|
|
|
for i in "${!URLS[@]}"; do
|
|
proxy_index=$((i % ${#PROXY_LIST[@]}))
|
|
export HTTP_PROXY="${PROXY_LIST[$proxy_index]}"
|
|
export HTTPS_PROXY="${PROXY_LIST[$proxy_index]}"
|
|
|
|
agent-browser open "${URLS[$i]}"
|
|
agent-browser get text body > "output-$i.txt"
|
|
agent-browser close
|
|
|
|
sleep 1 # Polite delay
|
|
done
|
|
```
|
|
|
|
### Corporate Network Access
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Access internal sites via corporate proxy
|
|
|
|
export HTTP_PROXY="http://corpproxy.company.com:8080"
|
|
export HTTPS_PROXY="http://corpproxy.company.com:8080"
|
|
export NO_PROXY="localhost,127.0.0.1,.company.com"
|
|
|
|
# External sites go through proxy
|
|
agent-browser open https://external-vendor.com
|
|
|
|
# Internal sites bypass proxy
|
|
agent-browser open https://intranet.company.com
|
|
```
|
|
|
|
## Verifying Proxy Connection
|
|
|
|
```bash
|
|
# Check your apparent IP
|
|
agent-browser open https://httpbin.org/ip
|
|
agent-browser get text body
|
|
# Should show proxy's IP, not your real IP
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Proxy Connection Failed
|
|
|
|
```bash
|
|
# Test proxy connectivity first
|
|
curl -x http://proxy.example.com:8080 https://httpbin.org/ip
|
|
|
|
# Check if proxy requires auth
|
|
export HTTP_PROXY="http://user:pass@proxy.example.com:8080"
|
|
```
|
|
|
|
### SSL/TLS Errors Through Proxy
|
|
|
|
Some proxies perform SSL inspection. If you encounter certificate errors:
|
|
|
|
```bash
|
|
# For testing only - not recommended for production
|
|
agent-browser open https://example.com --ignore-https-errors
|
|
```
|
|
|
|
### Slow Performance
|
|
|
|
```bash
|
|
# Use proxy only when necessary
|
|
export NO_PROXY="*.cdn.com,*.static.com" # Direct CDN access
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. **Use environment variables** - Don't hardcode proxy credentials
|
|
2. **Set NO_PROXY appropriately** - Avoid routing local traffic through proxy
|
|
3. **Test proxy before automation** - Verify connectivity with simple requests
|
|
4. **Handle proxy failures gracefully** - Implement retry logic for unstable proxies
|
|
5. **Rotate proxies for large scraping jobs** - Distribute load and avoid bans
|