Comparisons

Pourquoi les développeurs passent d'Anti-Captcha à CaptchaAI

Une migration d'Anti-Captcha vers CaptchaAI se décide sur trois points concrets : les pages Cloudflare Challenge, les BLS CAPTCHA et le format d'API que vos wrappers attendent. Si votre pipeline touche l'un des trois, le changement se compte en heures, pas en semaines.

Anti-Captcha reste un service historique à large couverture. Voici ce qui change côté code, couverture et facturation.


Format d'API : JSON propriétaire chez Anti-Captcha, compatible 2Captcha chez CaptchaAI

Anti-Captcha expose une API de tâches JSON propriétaire : vous créez une tâche typée, puis un endpoint distinct renvoie la solution.

# Anti-Captcha — custom JSON format
import requests

resp = requests.post("https://api.anti-captcha.com/createTask", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "SITE_KEY",
    }
})
task_id = resp.json()["taskId"]

# Poll with different endpoint and format
result = requests.post("https://api.anti-captcha.com/getTaskResult", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "taskId": task_id,
})

CaptchaAI reprend le format 2Captcha : un POST vers in.php, puis un GET vers res.php jusqu'à ce que le token soit prêt.

# CaptchaAI — standard 2Captcha-compatible format
import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Standard polling
result = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

La différence n'est pas cosmétique : des centaines de bibliothèques implémentent déjà le format 2Captcha. Si vos scripts passent par l'une d'elles, la migration se limite souvent à l'URL de base et à la clé API.


Ce qu'Anti-Captcha ne couvre pas côté Cloudflare

Anti-Captcha résout les tokens Turnstile managed, mais sa prise en charge du Turnstile invisible reste partielle et il ne traite ni les pages Cloudflare Challenge ni les défis JS. CaptchaAI couvre les quatre cas.

C'est le motif de bascule le plus fréquent : beaucoup de cibles affichent désormais une page Challenge interstitielle et non un widget. Le token est valide, la page ne se débloque pas, et vos logs enchaînent les 403.


BLS CAPTCHA : le cas des portails de rendez-vous

Les portails BLS servent aux demandes de visa dans une bonne partie du Maghreb et de l'Afrique de l'Ouest francophone. Pour qui automatise sa propre démarche ou un environnement de test autorisé, le besoin est réel — Anti-Captcha, lui, n'expose aucune méthode BLS.

# CaptchaAI — BLS with a high success rate
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "bls",
    "pageurl": "https://bls-portal.example.com",
    "sitekey": "BLS_SITE_KEY",
    "json": 1,
})

CaptchaAI traite ce type via method=bls, en moins d'une seconde et avec un taux de réussite élevé — sur votre dossier et votre environnement uniquement.


Scores reCAPTCHA v3 et couverture GeeTest

Un token v3 accepté ne vaut rien si le score est trop bas. Selon les données publiées, la résolution par opérateurs humains d'Anti-Captcha donne des scores irréguliers, de l'ordre de 0,3 à 0,5 ; CaptchaAI traite la v3 de façon automatisée en moins de 4 s, avec un seuil paramétrable côté requête.

GeeTest v3 est pris en charge des deux côtés. GeeTest v4 ne l'est pas chez CaptchaAI : il est annoncé « à venir » — si votre cible est en v4, ne migrez pas cette partie du pipeline.


Comparatif fonctionnel Anti-Captcha / CaptchaAI

Fonctionnalité Anti-Captcha CaptchaAI
reCAPTCHA v2, v2 invisible, Enterprise
reCAPTCHA v3 ✅ (scores faibles) ✅ seuil paramétrable
Cloudflare Challenge et défi JS
GeeTest v4 pris en charge ❌ à venir
hCaptcha, FunCaptcha (Arkose Labs) pris en charge ❌ pas encore pris en charge
BLS
CaptchaFox, Friendly Captcha, Lemin non documenté ✅ (bêta)
Image / OCR ✅ 27 500+ variantes

Deux lignes se lisent à l'envers : si votre trafic repose sur hCaptcha, FunCaptcha ou GeeTest v4, CaptchaAI ne le remplace pas.


Temps de résolution : ce que vous pouvez attendre

Les chiffres ci-dessous reposent sur des mesures observées et des retours d'utilisateurs. Les résultats varient selon l'environnement, le volume et le moment de la journée.

Type de CAPTCHA Anti-Captcha CaptchaAI
reCAPTCHA v2 15–45 s <60 s
reCAPTCHA v3 10–30 s <4 s
CAPTCHA image 5–15 s <0.5 s
Cloudflare Turnstile 10–30 s <10 s
Cloudflare Challenge non pris en charge <15 s
GeeTest v3 15–40 s <12 s

Les valeurs CaptchaAI sont des plafonds, pas des moyennes.


Migrer sans interrompre la production

Faites cohabiter les deux fournisseurs derrière une même interface, puis basculez un paramètre.

import requests
import time

class CaptchaSolver:
    """Unified solver — supports Anti-Captcha and CaptchaAI."""

    def __init__(self, provider="captchaai", api_key="YOUR_API_KEY"):
        self.provider = provider
        self.api_key = api_key

    def solve_recaptcha_v2(self, sitekey, pageurl):
        if self.provider == "captchaai":
            return self._solve_captchaai("userrecaptcha", sitekey, pageurl)
        else:
            return self._solve_anticaptcha(sitekey, pageurl)

    def _solve_captchaai(self, method, sitekey, pageurl):
        resp = requests.post("https://ocr.captchaai.com/in.php", data={
            "key": self.api_key,
            "method": method,
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        })
        task_id = resp.json()["request"]

        for _ in range(60):
            time.sleep(5)
            result = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get",
                "id": task_id, "json": 1,
            })
            data = result.json()
            if data["request"] != "CAPCHA_NOT_READY":
                return data["request"]

        raise TimeoutError("Solve timeout")

    def _solve_anticaptcha(self, sitekey, pageurl):
        resp = requests.post("https://api.anti-captcha.com/createTask", json={
            "clientKey": self.api_key,
            "task": {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": pageurl,
                "websiteKey": sitekey,
            },
        })
        task_id = resp.json()["taskId"]

        for _ in range(60):
            time.sleep(5)
            result = requests.post(
                "https://api.anti-captcha.com/getTaskResult",
                json={"clientKey": self.api_key, "taskId": task_id},
            )
            data = result.json()
            if data["status"] == "ready":
                return data["solution"]["gRecaptchaResponse"]

        raise TimeoutError("Solve timeout")

Gardez anticaptcha actif le temps de comparer les deux sur une semaine de trafic réel. Trois précautions :

  • Dimensionnement. CaptchaAI facture au thread simultané, avec des résolutions illimitées par thread : comptez vos requêtes en vol, pas votre volume mensuel. Le plan d'entrée est BASIC ($15/mois, 5 threads), facturé en dollars US.
  • RGPD. Nettoyez votre journalisation au passage : ni données personnelles dans les payloads, ni tokens conservés au-delà de leur durée de vie utile.
  • Bascule progressive. Commencez par les types les moins critiques (image, Turnstile), gardez reCAPTCHA v2 pour la fin.

Dépannage de la migration

Problème Cause Correctif
Erreur de format à l'envoi Tâche JSON typée attendue côté Anti-Captcha Paramètres en data= vers in.php
Champ method manquant Noms de tâches sans équivalent direct userrecaptcha, turnstile, geetest ou bls
Polling sans token Mauvais endpoint de résultat GET vers res.php avec action=get
Token accepté, action refusée Page Challenge et non widget Turnstile Méthode Cloudflare Challenge dédiée

FAQ

CaptchaAI prend-il en charge hCaptcha et FunCaptcha ?

Non — pas encore pris en charge, ni l'un ni l'autre. Gardez Anti-Captcha sur ces flux.

Combien de threads prévoir pour remplacer mon volume actuel ?

Partez de vos requêtes simultanées en pointe, pas de votre total mensuel : un thread traite une résolution à la fois. Cinq suffisent à un scraper séquentiel ; un parc de workers parallèles demande un plan supérieur.

Peut-on faire tourner les deux fournisseurs en parallèle ?

Oui, et c'est la méthode la plus sûre : le wrapper ci-dessus expose une seule signature, vous comparez réussite et temps de résolution sur le même trafic.

GeeTest v4 est-il disponible chez CaptchaAI ?

Non, il est annoncé « à venir ». Traitez-le comme un point bloquant du plan de migration.


Guides connexes


Prêt à comparer sur vos cibles ? Ouvrez un compte CaptchaAI et rejouez vos scénarios Cloudflare et BLS.

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