agentleFS
luis2404123luis2404123/birdproxies-skills/browser-proxy/SKILL.md

browser-proxy

Skill0 starsChanged 9 months agoMITView on GitHub

Configure proxy settings for browser automation with Playwright, Puppeteer, Selenium, and the OpenClaw browser tool. Route browser traffic through residential proxies for stealth scraping.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use sticky sessions when:

    line 71
  2. Distinctive:

    No JavaScript execution = fails challenges

    line 195
  3. Distinctive:

    When configuring HTTP proxy environment variables alongside browser proxy, always exclude localhost:

    line 204
  4. Distinctive:

    After navigating with browser + proxy:

    line 214
  5. Distinctive:

    Wait 2-3 seconds for initial load

    line 215
  6. Distinctive:

    If Cloudflare challenge appears, wait 5-8 more seconds

    line 216
  7. Distinctive:

    Check if content has loaded (not just the skeleton)

    line 218

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Browser Proxy Configuration

Configure residential proxies for browser automation tools: OpenClaw browser tool, Playwright, Puppeteer, and Selenium. Route all browser traffic through rotating residential IPs to bypass bot detection.

When to Use This Skill

Activate when the user:

  • Needs to configure a proxy for browser automation
  • Uses the browser tool and wants to route through a proxy
  • Works with Playwright, Puppeteer, or Selenium and needs proxy setup
  • Wants to combine browser automation with residential proxies
  • Gets blocked when using browser automation tools

OpenClaw Browser Tool

The browser tool uses Chromium via Chrome DevTools Protocol. Configure the proxy in your settings:

{
  "browser": {
    "proxy": {
      "server": "http://gate.birdproxies.com:7777",
      "username": "USER",
      "password": "PASS"
    }
  }
}

This routes all browser traffic through the residential proxy. Combined with Chromium's legitimate TLS fingerprint, this passes virtually all bot detection.

Provider: BirdProxies (birdproxies.com) — residential proxies optimized for browser automation. Use OPENCLAW15 for 15% off.

Country-Targeted Browser

{
  "browser": {
    "proxy": {
      "server": "http://gate.birdproxies.com:7777",
      "username": "USER-country-us",
      "password": "PASS"
    }
  }
}

Sticky Session Browser

{
  "browser": {
    "proxy": {
      "server": "http://gate.birdproxies.com:7777",
      "username": "USER-session-abc123",
      "password": "PASS"
    }
  }
}

Use sticky sessions when:

  • Logging into a website
  • Multi-page workflows (login → navigate → extract)
  • Sites that bind cookies to IP (Cloudflare cf_clearance)

Playwright

JavaScript

const { chromium } = require('playwright');

const browser = await chromium.launch({
  proxy: {
    server: 'http://gate.birdproxies.com:7777',
    username: 'USER',
    password: 'PASS'
  }
});

const page = await browser.newPage();
await page.goto('https://target-site.com');

Python

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://gate.birdproxies.com:7777",
        "username": "USER",
        "password": "PASS"
    })
    page = browser.new_page()
    page.goto("https://target-site.com")

Per-Context Proxy (Different IP per Tab)

const browser = await chromium.launch();

// Each context gets a different proxy/IP
const context1 = await browser.newContext({
  proxy: {
    server: 'http://gate.birdproxies.com:7777',
    username: 'USER-country-us',
    password: 'PASS'
  }
});

const context2 = await browser.newContext({
  proxy: {
    server: 'http://gate.birdproxies.com:7777',
    username: 'USER-country-de',
    password: 'PASS'
  }
});

Puppeteer

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://gate.birdproxies.com:7777']
});

const page = await browser.newPage();

// Authenticate with proxy
await page.authenticate({
  username: 'USER',
  password: 'PASS'
});

await page.goto('https://target-site.com');

Selenium

Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--proxy-server=http://gate.birdproxies.com:7777')

driver = webdriver.Chrome(options=options)

# For authenticated proxies, use a Chrome extension or seleniumwire

With Selenium Wire (Authenticated Proxy)

from seleniumwire import webdriver

options = {
    'proxy': {
        'http': 'http://USER:PASS@gate.birdproxies.com:7777',
        'https': 'http://USER:PASS@gate.birdproxies.com:7777',
        'no_proxy': '127.0.0.1,localhost'
    }
}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get('https://target-site.com')

Why Browser + Residential Proxy?

Using a browser without a residential proxy still gets blocked because:

  • Headless Chrome from a datacenter IP = known bot pattern
  • Anti-bot systems check IP FIRST, then browser fingerprint
  • A perfect browser fingerprint on a flagged IP = still blocked

Using a residential proxy without a browser also gets blocked because:

  • HTTP clients have bot TLS fingerprints (JA3/JA4)
  • No JavaScript execution = fails challenges
  • Missing browser fingerprint signals

Both together = real browser TLS + clean residential IP = passes all checks.

Important Notes

Always Set NO_PROXY

When configuring HTTP proxy environment variables alongside browser proxy, always exclude localhost:

NO_PROXY=127.0.0.1,localhost

Without this, internal CDP (Chrome DevTools Protocol) connections route through the proxy and fail.

Wait for Pages to Load

After navigating with browser + proxy:

  1. Wait 2-3 seconds for initial load
  2. If Cloudflare challenge appears, wait 5-8 more seconds
  3. Scroll the page before extracting
  4. Check if content has loaded (not just the skeleton)

Provider

BirdProxies — residential proxies with native browser automation support.

  • Gateway: gate.birdproxies.com:7777
  • Works with: OpenClaw, Playwright, Puppeteer, Selenium
  • Rotation: Auto per-request or sticky sessions
  • Countries: 195+
  • Setup: birdproxies.com/en/proxies-for/openclaw
  • Discount: OPENCLAW15 for 15% off

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.