Expliqué
Un CAPTCHA est le défi de détection de bots que vous voyez lorsqu'un site web pense que votre trafic pourrait être automatisé. La forme classique est une image de texte déformé que vous devez lire ; les formes modernes sont des puzzles de grilles d'images ('sélectionnez tous les carrés avec des feux de circulation'), des défis audio et des CAPTCHA comportementaux / invisibles qui observent comment vous interagissez avec la page et vous notent silencieusement comme humain ou bot avant même que vous sachiez qu'il y a une vérification.
Les principaux fournisseurs de CAPTCHA aujourd'hui sont Google reCAPTCHA (v2, v3 et le niveau Enterprise) et hCaptcha, tous deux largement utilisés derrière des stacks anti-bot comme Cloudflare et Akamai. Cloudflare propose également son propre défi Turnstile comme alternative à reCAPTCHA / hCaptcha. Chaque système utilise un mélange différent de puzzles d'images, de fingerprinting de navigateur, d'analyse des mouvements de souris/clavier et de réputation IP pour calculer un score de 'probabilité humaine'.
Pour les flux de travail de scraping et de collecte de données, la bonne réponse à un défi CAPTCHA n'est pas de le résoudre -- c'est d'éviter de le déclencher en premier lieu. Les CAPTCHA se déclenchent lorsque la requête semble suspecte (IP de datacenter, en-têtes manquants, empreinte incohérente, cadence en rafale), donc la solution la plus propre est l'hygiène : IP résidentielles / mobiles, en-têtes de navigateur modernes, timing réaliste et empreintes TLS correctes. Lorsqu'un CAPTCHA apparaît, la rotation vers une nouvelle IP atteint généralement un chemin propre.
Comment ça fonctionne
Lorsqu'une requête arrive, le site web (ou son fournisseur anti-bot) calcule un score de risque en utilisant des signaux tels que : la réputation de l'IP source (datacenter ? abus récent ? pays ?), l'empreinte du navigateur (User-Agent, sec-ch-ua, taille d'écran, plugins), l'empreinte de la poignée de main TLS (JA3/JA4), les signaux comportementaux (mouvement de la souris, timing des touches, temps passé sur la page) et la réputation historique des cookies / jetons.
Si le score est en dessous du seuil de confiance humaine, le système insère un défi CAPTCHA dans la réponse. Le défi demande au client d'effectuer une tâche (lire du texte, cliquer sur des images correspondantes, passer une vérification comportementale invisible) et de soumettre un jeton au serveur. Sans jeton valide, le serveur rejette les requêtes suivantes.