From brightdata-pack
Generates minimal Bright Data scraping examples using Web Unlocker proxy and REST API in Node.js/TypeScript and Python for integrations and testing.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin brightdata-packThis skill is limited to using the following tools:
Scrape a real webpage through Bright Data's Web Unlocker proxy. Web Unlocker handles CAPTCHAs, fingerprinting, and retries automatically — you send a normal HTTP request through the proxy endpoint at `brd.superproxy.io:33335`.
Provides TypeScript patterns for Bright Data proxy integrations: singleton axios client, retry wrappers for scraping with session, country, and error handling.
Integrates Bright Data APIs for production web scraping, SERP results, structured extraction, and browser automation with best practices, CLI setup, and auth patterns.
Scrapes any webpage as markdown bypassing bot detection/CAPTCHA or searches Google with structured JSON results via Bright Data API. Requires API key and Unlocker zone.
Share bugs, ideas, or general feedback.
Scrape a real webpage through Bright Data's Web Unlocker proxy. Web Unlocker handles CAPTCHAs, fingerprinting, and retries automatically — you send a normal HTTP request through the proxy endpoint at brd.superproxy.io:33335.
brightdata-install-auth setupbrd-ca.crt SSL certificate downloaded// hello-brightdata.ts
import axios from 'axios';
import https from 'https';
import 'dotenv/config';
const { BRIGHTDATA_CUSTOMER_ID, BRIGHTDATA_ZONE, BRIGHTDATA_ZONE_PASSWORD } = process.env;
const proxy = {
host: 'brd.superproxy.io',
port: 33335,
auth: {
username: `brd-customer-${BRIGHTDATA_CUSTOMER_ID}-zone-${BRIGHTDATA_ZONE}`,
password: BRIGHTDATA_ZONE_PASSWORD!,
},
};
async function scrape(url: string) {
const response = await axios.get(url, {
proxy,
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
timeout: 60000,
});
console.log(`Status: ${response.status}`);
console.log(`Content length: ${response.data.length} chars`);
console.log(response.data.substring(0, 500));
return response.data;
}
scrape('https://example.com').catch(console.error);
// hello-brightdata-api.ts
import 'dotenv/config';
async function scrapeViaAPI(url: string) {
const response = await fetch('https://api.brightdata.com/request', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.BRIGHTDATA_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
zone: process.env.BRIGHTDATA_ZONE,
url,
format: 'raw',
}),
});
const html = await response.text();
console.log(`Status: ${response.status}, Length: ${html.length}`);
return html;
}
scrapeViaAPI('https://example.com').catch(console.error);
# hello_brightdata.py
import os, requests
from dotenv import load_dotenv
load_dotenv()
proxy_url = (
f"http://brd-customer-{os.environ['BRIGHTDATA_CUSTOMER_ID']}"
f"-zone-{os.environ['BRIGHTDATA_ZONE']}"
f":{os.environ['BRIGHTDATA_ZONE_PASSWORD']}"
f"@brd.superproxy.io:33335"
)
response = requests.get(
'https://example.com',
proxies={'http': proxy_url, 'https': proxy_url},
verify='./brd-ca.crt',
timeout=60,
)
print(f"Status: {response.status_code}, Length: {len(response.text)}")
Add country or city targeting to the proxy username:
// Country-level
const username = `brd-customer-${ID}-zone-${ZONE}-country-us`;
// City-level
const username2 = `brd-customer-${ID}-zone-${ZONE}-country-us-city-newyork`;
| Error | Cause | Solution |
|---|---|---|
407 Proxy Auth Required | Bad credentials | Check brd-customer-{ID}-zone-{ZONE} format |
502 Bad Gateway | Target site blocked | Web Unlocker retries; increase timeout |
ETIMEDOUT | CAPTCHA solving delay | Set timeout to 60-120s |
| Empty response | Zone inactive | Verify zone in control panel |
Proceed to brightdata-local-dev-loop for development workflow setup.