Browser
browser-ladder
Climb the browser ladder β start free, escalate only
---
name: browser-ladder
version: 1.0.0
description: Climb the browser ladder β start free, escalate only when needed. L1 (fetch) β L2 (local Playwright) β L3 (BrowserCat) β L4 (Browserless.io for CAPTCHA/bot bypass).
metadata:
clawdbot:
emoji: "πͺ"
requires:
bins:
- node
- docker
env:
- name: BROWSERCAT_API_KEY
description: BrowserCat API key (free tier) - get at https://browsercat.com
required: false
- name: BROWSERLESS_TOKEN
description: Browserless.io token ($10/mo) - get at https://browserless.io
required: false
---
# Browser Ladder πͺ
Climb from free to paid only when you need to.
## Quick Setup
Run the setup script after installation:
```bash
./skills/browser-ladder/scripts/setup.sh
```
Or manually add to your `.env`:
```bash
# Optional - only needed for Rungs 3-4
BROWSERCAT_API_KEY=your-key # Free: https://browsercat.com
BROWSERLESS_TOKEN=your-token # Paid: https://browserless.io
```
## The Ladder
```
βββββββββββββββββββββββββββββββββββββββββββββββ
β πͺ Rung 4: Browserless.io (Cloud Paid) β
β β’ CAPTCHA solving, bot detection bypass β
β β’ Cost: $10+/mo β
β β’ Requires: BROWSERLESS_TOKEN β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β πͺ Rung 3: BrowserCat (Cloud Free) β
β β’ When local Docker fails β
β β’ Cost: FREE (limited) β
β β’ Requires: BROWSERCAT_API_KEY β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β πͺ Rung 2: Playwright Docker (Local) β
β β’ JavaScript rendering, screenshots β
β β’ Cost: FREE (CPU only) β
β β’ Requires: Docker installed β
βββββββββββββββββββββββββββββββββββββββββββββββ€
β πͺ Rung 1: web_fetch (No browser) β
β β’ Static pages, APIs, simple HTML β
β β’ Cost: FREE β
β β’ Requires: Nothing β
βββββββββββββββββββββββββββββββββββββββββββββββ
Start at the bottom. Climb only when needed.
```
## When to Climb
| Situation | Rung | Why |
|-----------|------|-----|
| Static HTML, APIs | 1 | No JS needed |
| React/Vue/SPA apps | 2 | JS rendering |
| Docker unavailable | 3 | Cloud fallback |
| CAPTCHA/Cloudflare | 4 | Bot bypass needed |
| OAuth/MFA flows | 4 | Complex auth |
## Decision Flow
```
Need to access a URL
β
βΌ
Static content? ββYESβββΆ Rung 1 (web_fetch)
β NO
βΌ
JS rendering only? ββYESβββΆ Rung 2 (Playwright Docker)
β NO β
β Success? ββNOβββΆ Rung 3
βΌ β YES
CAPTCHA/bot detection? βββββββββββββββββββββΆ DONE
β YES
βΌ
Rung 4 (Browserless.io) βββΆ DONE
```
## Usage Examples
### Rung 1: Static content
```javascript
// Built into Clawdbot
const content = await web_fetch("https://example.com");
```
### Rung 2: JS-rendered page
```bash
docker run --rm -v /tmp:/output mcr.microsoft.com/playwright:v1.58.0-jammy \
npx playwright screenshot https://spa-app.com /output/shot.png
```
### Rung 3: Cloud browser (BrowserCat)
```javascript
const { chromium } = require('playwright');
const browser = await chromium.connect('wss://api.browsercat.com/connect', {
headers: { 'Api-Key': process.env.BROWSERCAT_API_KEY }
});
```
### Rung 4: CAPTCHA bypass (Browserless)
```javascript
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP(
`wss://production-sfo.browserless.io?token=${process.env.BROWSERLESS_TOKEN}`
);
// CAPTCHA handled automatically
```
## Cost Optimization
1. **Start low** β Always try Rung 1 first
2. **Cache results** β Don't re-fetch unnecessarily
3. **Batch requests** β One browser session for multiple pages
4. **Check success** β Only climb if lower rung fails
## Get Your Keys
| Service | Cost | Sign Up |
|---------|------|---------|
| BrowserCat | Free tier | https://browsercat.com |
| Browserless.io | $10+/mo | https://browserless.io |
Both are optional β Rungs 1-2 work without any API keys.
browser
By
Comments
Sign in to leave a comment