Proxy rotasyonu, istekleri birden fazla IP'ye dağıtarak CAPTCHA sıklığını azaltır. Hala görünen CAPTCHA'ları çözmek için CaptchaAI ile birleştirildiğinde, her türlü anti-bot sistemini idare eden güvenilir bir kazıma hattına sahip olursunuz.
Proxy Rotasyonu CAPTCHA'ları Neden Azaltır?
Siteler, IP başına istek modellerine göre CAPTCHA'ları tetikler:
| Faktör | Tek IP | QA test oturumu'ler |
|---|---|---|
| Dakika başına istek | 10'dan fazla CAPTCHA'yı tetikler | IP'ler arasında dağıtılır |
| IP itibarı | Zamanla bozulur | Havuzdan yeni IP'ler |
| Oturum kalıpları | Şüpheli desenler görülüyor | IP'lere yayılan desenler |
| Coğrafi tutarlılık | Tek konum | Doğal coğrafi çeşitlilik |
Kazıma için Proxy Türleri
| Tür | En İyisi | CAPTCHA Oranı | Maliyet |
|---|---|---|---|
| Konut | Yüksek değerli hedefler (Google, Amazon) | En düşük | $$$ |
| Mobil | Ultra düşük algılama | En düşük | $$$$ |
| ISP/Static | Sürekli oturumlar | Düşük | $$ |
| Veri merkezi | Yüksek hacimli, hoşgörülü siteler | Daha yüksek | $ |
Öneri: Agresif CAPTCHA tetikleyicilerine sahip siteler için yerleşik proxy'ler kullanın. Veri merkezi proxy'leri daha az korunan siteler için çalışır.
Temel Proxy Rotasyonu (Python)
import requests
import random
import time
PROXIES = [
"http://user:pass@proxy1.example.com:8080",
"http://user:pass@proxy2.example.com:8080",
"http://user:pass@proxy3.example.com:8080",
]
API_KEY = "YOUR_API_KEY"
def get_random_proxy():
proxy = random.choice(PROXIES)
return {"http": proxy, "https": proxy}
def scrape_with_rotation(url):
proxy = get_random_proxy()
session = requests.Session()
session.proxies = proxy
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})
resp = session.get(url)
# If CAPTCHA appears, solve it
if "g-recaptcha" in resp.text or "captcha" in resp.text.lower():
from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.text, "html.parser")
rc = soup.find("div", class_="g-recaptcha")
if rc:
site_key = rc["data-sitekey"]
token = solve_captcha(site_key, url)
resp = session.post(url, data={"g-recaptcha-response": token})
return resp.text
def solve_captcha(site_key, page_url):
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": site_key, "pageurl": page_url
})
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id
})
if result.text == "CAPCHA_NOT_READY": continue
if result.text.startswith("OK|"): return result.text.split("|")[1]
raise Exception(result.text)
raise TimeoutError()
Akıllı Proxy Rotasyonu
Hangi proxy'lerin CAPTCHA'ları tetiklediğini takip edin ve bunlardan kaçının:
from collections import defaultdict
import random
class SmartProxyRotator:
def __init__(self, proxies):
self.proxies = proxies
self.captcha_count = defaultdict(int)
self.success_count = defaultdict(int)
def get_proxy(self):
# Prefer proxies with lower CAPTCHA rates
scored = []
for proxy in self.proxies:
total = self.captcha_count[proxy] + self.success_count[proxy]
if total == 0:
score = 0.5 # Unknown proxy, neutral score
else:
score = self.success_count[proxy] / total
scored.append((proxy, score))
# Weight selection by score
scored.sort(key=lambda x: x[1], reverse=True)
top_proxies = scored[:max(len(scored) // 2, 1)]
proxy = random.choice(top_proxies)[0]
return proxy
def report_success(self, proxy):
self.success_count[proxy] += 1
def report_captcha(self, proxy):
self.captcha_count[proxy] += 1
# Usage
rotator = SmartProxyRotator(PROXIES)
def scrape(url):
proxy = rotator.get_proxy()
resp = requests.get(url, proxies={"http": proxy, "https": proxy})
if "captcha" in resp.text.lower():
rotator.report_captcha(proxy)
# Solve CAPTCHA...
else:
rotator.report_success(proxy)
return resp.text
Selenyum ile Proxy Rotasyonu
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_driver_with_proxy(proxy_url):
options = Options()
options.add_argument(f"--proxy-server={proxy_url}")
options.add_argument("--no-sandbox")
return webdriver.Chrome(options=options)
# Rotate proxy per session
proxy = random.choice(PROXIES)
driver = create_driver_with_proxy(proxy)
driver.get("https://example.com")
Cloudflare için Proxy + CAPTCHA Çözümü
Cloudflare doğrulama akışı çözümü, CaptchaAI'ye bir proxy iletilmesini gerektirir:
proxy = "http://user:pass@proxy.example.com:8080"
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": proxy,
"proxytype": "HTTP"
})
task_id = resp.text.split("|")[1]
# Poll for qa_session_cookie cookie
# Use the same proxy for subsequent requests
En İyi Uygulamalar
- Proxy coğrafi konumunu hedefle eşleştir - ABD siteleri için ABD proxy'lerini kullanın
- Proxy başına bir oturum - Farklı proxy'lerdeki oturumları yeniden kullanmayın
- Proxy başına hız sınırı - IP başına maksimum 5-10 istek/minute
- CAPTCHA oranlarını izleyin - Hangi proxy'lerin daha fazla CAPTCHA tetiklediğini takip edin
- Yapışkan oturumlar kullanın – Çok adımlı iş akışları için aynı proxy'yi koruyun
- Proxy hatalarını giderin - Bağlantı hatalarında farklı bir proxy ile yeniden deneyin
Sorun giderme
| Sorun | Düzeltme |
|---|---|
| Tüm proxy'ler CAPTCHA'ları tetikler | Kendi sunucu altyapınız'lerine geçin; oranı azalt |
| Proxy zaman aşımı hataları | Yavaş proxy'leri havuzdan kaldırın; zaman aşımını artır |
| Proxy başına farklı içerik | Bazı siteler coğrafi bölgeye özgü içerik sunar; normalleştirmek |
| CAPTCHA belirteçleri proxy ile çalışmıyor | Belirtecin aynı oturumdan kullanıldığından emin olun/IP |
SSS
CaptchaAI kullanırsam proxy'lere ihtiyacım var mı?
Kesinlikle değil - CaptchaAI, CAPTCHA'ları ne olursa olsun çözebilir. Ancak proxy'ler, CAPTCHA'ların görünme sıklığını azaltarak zamandan ve API maliyetlerinden tasarruf sağlar.
CAPTCHA çözme ve kazıma için aynı proxy'yi kullanmalı mıyım?
Çoğu CAPTCHA türü için belirteç, IP'den bağımsız olarak geçerlidir. Cloudflare doğrulama akışı için, qa_session_cookie çerezi IP'ye bağlı olduğundan aynı proxy'yi kullanmanız gerekir.
Kaç tane proxy'ye ihtiyacım var?
Orta düzeyde kazıma için (1000 sayfa/day), 10-20 adet dönüşümlü kendi sunucu altyapınız'si yeterlidir. Yüksek hacim için otomatik rotasyona sahip bir proxy sağlayıcı kullanın.