Intégrations

Oxylabs + CaptchaAI : Intégration du proxy du centre de données

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.

Les commentaires sont désactivés pour cet article.