SKILL.md
Bright Data Deploy Integration
Overview
Deploy Bright Data scraping applications to cloud platforms with proper secrets management. Key consideration: Bright Data proxy connections require outbound TCP to brd.superproxy.io on ports 33335 (proxy) and 9222 (Scraping Browser).
Prerequisites
- Bright Data production zone credentials
- Platform CLI installed (vercel, fly, or gcloud)
- Application tested in staging
Instructions
Step 1: Vercel Deployment (Serverless)
# Add secrets
vercel env add BRIGHTDATA_CUSTOMER_ID production
vercel env add BRIGHTDATA_ZONE production
vercel env add BRIGHTDATA_ZONE_PASSWORD production
vercel env add BRIGHTDATA_API_TOKEN production
// vercel.json
{
"functions": {
"api/scrape.ts": {
"maxDuration": 60
}
}
}
// api/scrape.ts — Vercel serverless function
import type { VercelRequest, VercelResponse } from '@vercel/node';
import axios from 'axios';
import https from 'https';
export default async function handler(req: VercelRequest, res: VercelResponse) {
const { url } = req.body;
if (!url) return res.status(400).json({ error: 'url required' });
const proxy = {
host: 'brd.superproxy.io',
port: 33335,
auth: {
username: `brd-customer-${process.env.BRIGHTDATA_CUSTOMER_ID}-zone-${process.env.BRIGHTDATA_ZONE}`,
password: process.env.BRIGHTDATA_ZONE_PASSWORD!,
},
};
try {
const response = await axios.get(url, {
proxy,
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
timeout: 55000, // Leave 5s buffer for Vercel's 60s limit
});
res.json({ status: response.status, length: response.data.length });
} catch (error: any) {
res.status(502).json({ error: error.message });
}
}
Step 2: Fly.io Deployment (Long-Running)
# fly.toml — better for Scraping Browser (needs WebSocket)
app = "my-scraper"
primary_region = "iad"
[env]
NODE_ENV = "production"
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
