Oxylabs propose plus de 100 millions d'adresses IP résidentielles et plus de 2 millions d'adresses IP de centres de données - connues pour leur fiabilité et leur infrastructure de niveau entreprise. Ce guide montre comment intégrer les proxys Oxylabs avec CaptchaAI pour les flux de travail de scraping protégés par CAPTCHA.
Produits proxy Oxylabs
| Produit | IP | Vitesse | Cas d'utilisation |
|---|---|---|---|
| Proxy de centre de données | 2M+ | Très rapide | Gros volume, priorité à la vitesse |
| Procurations résidentielles | 100 millions+ | Moyen | Sites sensibles au CAPTCHA |
| Proxy FAI | Qualité résidentielle | Rapide | E-commerce, réseaux sociaux |
| Proxy mobiles | 20 M+ | Lent | Cibles spécifiques aux mobiles |
| API du grattoir SERP | Géré | Rapide | Résultats Google/Bing |
Intégration Python
Demandes
import requests
import time
OXYLABS_USER = "customer-USERNAME"
OXYLABS_PASS = "PASSWORD"
OXYLABS_ENDPOINT = "pr.oxylabs.io:7777"
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
# Residential rotating proxy
proxies = {
"http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
"https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
}
def fetch_page(url, country=None):
"""Fetch page through Oxylabs proxy."""
user = OXYLABS_USER
if country:
user += f"-cc-{country}"
proxy = {
"http": f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
"https": f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
}
return requests.get(
url,
proxies=proxy,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36"
},
timeout=30,
)
def solve_recaptcha(site_url, sitekey):
"""Solve 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("Timeout")
Séances collantes
def get_oxylabs_sticky_proxy(session_id, country=None):
"""Create Oxylabs sticky session (same IP)."""
user = OXYLABS_USER + f"-sessid-{session_id}"
if country:
user += f"-cc-{country}"
proxy_url = f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}"
return {"http": proxy_url, "https": proxy_url}
# CAPTCHA workflow with sticky IP
import random, string
session = "".join(random.choices(string.ascii_lowercase, k=8))
proxy = get_oxylabs_sticky_proxy(session, country="us")
# All requests use the same IP
resp = requests.get("https://target.com/form", proxies=proxy)
# ... solve CAPTCHA ...
resp = requests.post("https://target.com/submit", proxies=proxy, data={
"g-recaptcha-response": token,
})
API Oxylabs Web Scraper + CaptchaAI
Pour les sites où le rendu intégré d'Oxylabs n'est pas suffisant pour les CAPTCHA :
def scrape_with_oxylabs_api(url):
"""Use Oxylabs Web Scraper API for rendering, CaptchaAI for CAPTCHAs."""
resp = requests.post(
"https://realtime.oxylabs.io/v1/queries",
auth=(OXYLABS_USER, OXYLABS_PASS),
json={
"source": "universal",
"url": url,
"render": "html",
"browser_instructions": [
{"type": "wait", "wait_time_s": 3},
],
},
)
result = resp.json()
html = result["results"][0]["content"]
# Check for CAPTCHA in rendered HTML
import re
sitekey_match = re.search(r'data-sitekey="([^"]+)"', html)
if sitekey_match:
sitekey = sitekey_match.group(1)
token = solve_recaptcha(url, sitekey)
return {"html": html, "captcha_solved": True, "token": token}
return {"html": html, "captcha_solved": False}
Centre de données vs résidentiel pour CAPTCHA
# Datacenter: Fast but higher CAPTCHA rate
DC_PROXY = {
"http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@dc.pr.oxylabs.io:10000",
"https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@dc.pr.oxylabs.io:10000",
}
# Residential: Slower but lower CAPTCHA rate
RES_PROXY = {
"http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@pr.oxylabs.io:7777",
"https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@pr.oxylabs.io:7777",
}
def smart_proxy_selection(url, captcha_sensitive=True):
"""Pick proxy type based on target site sensitivity."""
if captcha_sensitive:
return RES_PROXY # Less likely to trigger CAPTCHA
return DC_PROXY # Faster, CaptchaAI handles any CAPTCHAs
Pipeline simultané
from concurrent.futures import ThreadPoolExecutor, as_completed
def process_url(url):
session = "".join(random.choices(string.ascii_lowercase, k=8))
proxy = get_oxylabs_sticky_proxy(session, country="us")
try:
resp = requests.get(url, proxies=proxy, timeout=30)
import re
match = re.search(r'data-sitekey="([^"]+)"', resp.text)
if match:
token = solve_recaptcha(url, match.group(1))
return {"url": url, "status": "solved"}
return {"url": url, "status": "no_captcha"}
except Exception as e:
return {"url": url, "status": "error", "error": str(e)}
urls = ["https://site1.com", "https://site2.com", "https://site3.com"]
with ThreadPoolExecutor(max_workers=5) as executor:
futures = {executor.submit(process_url, u): u for u in urls}
for future in as_completed(futures):
print(future.result())
Dépannage
| Problème | Parce que | Corriger |
|---|---|---|
| 403 par procuration | IP sur liste noire | Passer au résidentiel ou effectuer une rotation |
| Échec de l'authentification | Mauvais point de terminaison | Centre de données : dc.pr.oxylabs.io:10000, Résidentiel : pr.oxylabs.io:7777 |
| La session collante expire | Par défaut 10 minutes | Créer un nouvel identifiant de session |
| CAPTCHA sur chaque page | IP du centre de données reconnue | Utiliser un proxy résidentiel |
| Réponse lente | Latence du réseau résidentiel | Accepter ou passer au proxy du FAI |
FAQ
Quel produit Oxylabs dois-je utiliser avec CaptchaAI ?
Résidentiel pour les sites utilisant beaucoup de CAPTCHA (moins de défis). Centre de données pour des flux de travail rapides où CaptchaAI gère tous les CAPTCHA.
Oxylabs peut-il résoudre lui-même les CAPTCHA ?
L'API Web Scraper d'Oxylabs gère certains défis JavaScript mais ne résout pas les CAPTCHA. Utilisez CaptchaAI pour reCAPTCHA, Turnstile et autres types de CAPTCHA.
Le prix est-il par Go ou par demande ?
Résidentiel : par Go. Centre de données : par IP. Consultez la page de tarification d’Oxylabs pour connaître les tarifs actuels.
Guides connexes
- Données lumineuses + CaptchaAI
- Proxy intelligent + CaptchaAI
- FAI vs proxys de centre de données
Combinez l'infrastructure proxy d'Oxylabs avec la résolution de CaptchaAI -récupérez votre clé API.