Bright Data (sebelumnya Luminati) menyediakan jaringan proxy terbesar – 72 juta+ IP perumahan di 195 negara. Dikombinasikan dengan CaptchaAI, Anda mendapatkan IP bersih untuk browsing ditambah penyelesaian CAPTCHA otomatis ketika tantangan muncul.
Arsitektur
Your Script ──▶ Bright Data Proxy ──▶ Target Site
│
CAPTCHA appears
│
CaptchaAI API ──▶ Solved token
│
Inject token ◀─┘
CaptchaAI tidak merutekan melalui proxy Anda — CaptchaAI menyelesaikan di sisi server menggunakan infrastrukturnya sendiri. Proxy Anda menangani browsing; CaptchaAI menangani CAPTCHA.
Jenis Proksi Data Cerah
| Tipe | IP | Kecepatan | Biaya | Tingkat CAPTCHA |
|---|---|---|---|---|
| Datacenter | 770K+ | Cepat | Rendah | Lebih tinggi |
| Residensial | 72 juta+ | Sedang | Sedang | Lebih rendah |
| ISP | 700K+ | Cepat | Tinggi | Terendah |
| Mobile | 7 juta+ | Lambat | Tinggi | Sangat rendah |
Integrasi Python
Permintaan + Data Cerah + CaptchaAI
import requests
import time
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
# Bright Data proxy credentials
BRIGHT_DATA_PROXY = {
"http": "http://brd-customer-CUSTOMER_ID-zone-ZONE:PASSWORD@brd.superproxy.io:22225",
"https": "http://brd-customer-CUSTOMER_ID-zone-ZONE:PASSWORD@brd.superproxy.io:22225",
}
def fetch_with_proxy(url):
"""Fetch a page through Bright Data proxy."""
resp = requests.get(
url,
proxies=BRIGHT_DATA_PROXY,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/126.0.0.0 Safari/537.36"
},
timeout=30,
)
return resp
def solve_recaptcha(site_url, sitekey):
"""Solve reCAPTCHA v2 via CaptchaAI."""
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"json": 1,
})
data = resp.json()
if data["status"] != 1:
raise Exception(f"Submit: {data['request']}")
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY,
"action": "get",
"id": task_id,
"json": 1,
})
data = resp.json()
if data["request"] == "CAPCHA_NOT_READY":
continue
if data["status"] == 1:
return data["request"]
raise Exception(f"Solve: {data['request']}")
raise TimeoutError("Solve timeout")
def solve_turnstile(site_url, sitekey):
"""Solve Cloudflare Turnstile via CaptchaAI."""
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "turnstile",
"sitekey": sitekey,
"pageurl": site_url,
"json": 1,
})
data = resp.json()
task_id = data["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY,
"action": "get",
"id": task_id,
"json": 1,
})
data = resp.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Solve timeout")
Selenium + Bright Data + CaptchaAI
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
BRIGHT_DATA_HOST = "brd.superproxy.io"
BRIGHT_DATA_PORT = 22225
BRIGHT_DATA_USER = "brd-customer-CUSTOMER_ID-zone-residential"
BRIGHT_DATA_PASS = "PASSWORD"
def create_driver_with_proxy():
options = webdriver.ChromeOptions()
options.add_argument(
f"--proxy-server=http://{BRIGHT_DATA_HOST}:{BRIGHT_DATA_PORT}"
)
options.add_argument("--window-size=1920,1080")
driver = webdriver.Chrome(options=options)
return driver
def scrape_with_captcha_solving(url, sitekey=None):
driver = create_driver_with_proxy()
try:
driver.get(url)
time.sleep(3)
# Auto-detect sitekey if not provided
if not sitekey:
sitekey = driver.execute_script(
"return document.querySelector('[data-sitekey]')"
"?.getAttribute('data-sitekey')"
)
if sitekey:
token = solve_recaptcha(url, sitekey)
driver.execute_script(f"""
document.querySelector('#g-recaptcha-response').value = '{token}';
document.querySelectorAll('[name="g-recaptcha-response"]')
.forEach(el => {{ el.value = '{token}'; }});
""")
# Trigger callback
driver.execute_script("""
if (typeof ___grecaptcha_cfg !== 'undefined') {
const clients = ___grecaptcha_cfg.clients;
for (const key in clients) {
for (const prop in clients[key]) {
const val = clients[key][prop];
if (val && typeof val === 'object') {
for (const p in val) {
if (typeof val[p]?.callback === 'function') {
val[p].callback(arguments[0]);
}
}
}
}
}
}
""")
return driver.page_source
finally:
driver.quit()
Penargetan Khusus Negara
Bright Data mendukung penargetan negara, negara bagian, dan kota:
# Country targeting
proxy_us = "http://brd-customer-ID-zone-residential-country-us:PASS@brd.superproxy.io:22225"
proxy_uk = "http://brd-customer-ID-zone-residential-country-gb:PASS@brd.superproxy.io:22225"
proxy_de = "http://brd-customer-ID-zone-residential-country-de:PASS@brd.superproxy.io:22225"
# City targeting
proxy_nyc = "http://brd-customer-ID-zone-residential-country-us-city-newyork:PASS@brd.superproxy.io:22225"
# Use the geo-matched proxy for lower CAPTCHA rates
def scrape_localized(url, country="us"):
proxy = f"http://brd-customer-ID-zone-residential-country-{country}:PASS@brd.superproxy.io:22225"
resp = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30)
return resp
Manajemen Sesi
# Sticky session (same IP for entire session)
proxy_sticky = (
"http://brd-customer-ID-zone-residential"
"-session-abc123:PASS@brd.superproxy.io:22225"
)
# Rotating (new IP each request)
proxy_rotating = (
"http://brd-customer-ID-zone-residential:PASS@brd.superproxy.io:22225"
)
Untuk alur kerja CAPTCHA: Gunakan sesi melekat. Token CAPTCHA terikat pada IP yang memuat halaman – menggunakan IP yang berbeda untuk pengiriman akan gagal.
Integrasi Node.js + Bright Data + CaptchaAI
const axios = require("axios");
const https = require("https");
const CAPTCHAAI_KEY = "YOUR_API_KEY";
const CAPTCHAAI_URL = "https://ocr.captchaai.com";
const proxyAgent = new (require("https-proxy-agent"))(
"http://brd-customer-ID-zone-residential:PASS@brd.superproxy.io:22225"
);
async function fetchWithProxy(url) {
return axios.get(url, {
httpsAgent: proxyAgent,
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0.0.0",
},
});
}
async function solveCaptcha(siteUrl, sitekey) {
const submit = await axios.post(`${CAPTCHAAI_URL}/in.php`, null, {
params: {
key: CAPTCHAAI_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: siteUrl,
json: 1,
},
});
const taskId = submit.data.request;
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get(`${CAPTCHAAI_URL}/res.php`, {
params: {
key: CAPTCHAAI_KEY,
action: "get",
id: taskId,
json: 1,
},
});
if (result.data.request === "CAPCHA_NOT_READY") continue;
if (result.data.status === 1) return result.data.request;
}
throw new Error("Timeout");
}
Konfigurasi Zone Bright Data
| Pengaturan Zone | Direkomendasikan untuk CAPTCHA | Alasan |
|---|---|---|
| Tipe proxy | Residensial | Tingkat pemicu CAPTCHA terendah |
| Penargetan negara | Cocokkan lokasi situs target | Konsistensi IP ↔ konten |
| Tipe sesi | Sticky | Token harus cocok dengan IP asal |
| Filter kualitas IP | Kualitas tinggi | Hindari IP yang ditandai |
| Maks concurrent | 100+ | Alur kerja CAPTCHA paralel |
Pemecahan Masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| 407 dari proxy | Kredensial salah | Verifikasi ID pelanggan, zone, dan password |
| CAPTCHA muncul setiap permintaan | Proxy datacenter terdeteksi | Beralih ke zone residensial |
| Token ditolak | IP berubah antara solve dan submit | Gunakan sesi sticky |
| Respons lambat | Node exit yang padat | Target negara/kota yang kurang populer |
| Koneksi ditolak | Batas bandwidth tercapai | Periksa dasbor Bright Data |
Pertanyaan Umum
Apakah CaptchaAI menggunakan proxy Bright Data saya?
Tidak. CaptchaAI menyelesaikan CAPTCHA menggunakan infrastrukturnya sendiri. Proxy Anda hanya digunakan untuk browsing. Anda meneruskan URL halaman dan sitekey ke API CaptchaAI.
Zone Bright Data mana yang paling cocok untuk situs dengan banyak CAPTCHA?
Zone residensial atau ISP. IP datacenter lebih cenderung memicu CAPTCHA. Proxy ISP menggabungkan kecepatan datacenter dengan kepercayaan residensial.
Haruskah saya menggunakan sesi sticky atau rotating?
Sticky untuk alur kerja CAPTCHA. Token CAPTCHA terikat pada IP — jika IP Anda berubah antara memuat halaman dan mengirimkan formulir, token akan ditolak.
Bisakah saya meneruskan proxy saya ke CaptchaAI?
Ya — API CaptchaAI menerima parameter proxy. Ini membuat CaptchaAI menyelesaikan CAPTCHA dari IP yang sama. Berguna untuk tantangan yang terikat IP.
Panduan Terkait
- Rotasi egress jaringan yang diotorisasi untuk Pemecahan CAPTCHA
- ISP vs Proxy Datacenter untuk CAPTCHA
Gabungkan jaringan proxy Bright Data dengan penyelesaian CAPTCHA otomatis — dapatkan kunci CaptchaAI Anda dan skalakan otomatisasi Anda.