Puppeteer Guide
FreshConnect Puppeteer to Steel for managed browser sessions with proxy, CAPTCHA solving, and session recording.
Method 1: One-Line Change (Easiest)
Replace your existing Puppeteer launch with a Steel connection:
typescript
// Before - local browser
const browser = await puppeteer.launch({...});
// After - Steel managed browser
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://connect.steel.dev?apiKey=MY_STEEL_API_KEY',
});Session auto-releases when browser.close(), browser.disconnect(), or the connection ends.
Custom Session ID
Append &sessionId=<UUIDv4> to set a custom session ID for later retrieval:
wss://connect.steel.dev?apiKey=KEY&sessionId=550e8400-e29b-41d4-a716-446655440000Method 2: Create and Connect
Use when you need proxy, CAPTCHA solving, or other advanced features:
typescript
import Steel from 'steel-sdk';
import puppeteer from 'puppeteer';
const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY });
async function main() {
// Create session with features
const session = await client.sessions.create({
useProxy: true,
solveCaptcha: true,
});
// Connect Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`,
});
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
// Cleanup
await browser.close();
await client.sessions.release(session.id);
}
main();Always Release Sessions
With Method 2, always call client.sessions.release() when finished to avoid orphaned sessions consuming your quota.
Verification Checklist
- [ ] Install dependencies:
npm install puppeteer steel-sdk - [ ] Set
STEEL_API_KEYenvironment variable - [ ] Test basic connection with Method 1
- [ ] Upgrade to Method 2 if advanced features needed
- [ ] Confirm session releases after each run