Nous ne contournons pas un CAPTCHA. Ni avec un solveur, ni avec un navigateur réglé pour paraître plus humain, ni en enjambant une limite de débit avec une nouvelle adresse de sortie, ni en récupérant le chemin qu'une directive robots nous a demandé de laisser tranquille. C'est un texte de position plutôt qu'un texte d'ingénierie, parce que l'ingénierie est ici triviale et que la position en est la seule partie intéressante.
01Un contrôle est une phrase, pas un mur
Il est utile de lire les trois contrôles courants pour ce qu'ils sont réellement, c'est-à-dire une parole adressée à qui que ce soit qui fasse tourner le logiciel.
- Une directive robots dit : ne récupérez pas ceci avec un programme. C'est un fichier texte sans la moindre force exécutoire, et il fonctionne depuis trente ans sur cette seule base.
- Un 429 assorti d'un Retry-After dit : pas à cette vitesse. Le nombre est le propriétaire du site qui vous dit, précisément, ce qu'il peut se permettre de vous servir.
- Un CAPTCHA sur un formulaire de contact dit : nous voulons une personne ici. C'est une demande d'humain à l'autre bout du message, faite par quelqu'un qui a vraisemblablement eu des raisons de la formuler.
Aucun de ces contrôles n'est techniquement solide. Chacun est bon marché à énoncer et bon marché à défaire, et cette asymétrie n'est pas un défaut de conception chez eux. Ils sont bon marché parce qu'ils s'adressent à des parties qui les respecteront. Un contrôle est à peu près le seul vocabulaire dont dispose le propriétaire d'un site pour dire non à un logiciel, et si la réponse à chacun est un contournement, alors il n'a aucun vocabulaire du tout et l'échange n'a jamais eu deux côtés.
Il vaut la peine d'être précis sur un point : un contrôle n'a pas besoin d'être raisonnable pour nous lier. Il arrive que le CAPTCHA soit posé sur un formulaire qui reçoit quatre messages par mois et ne protège rien. C'est malgré tout une réponse, donnée à l'avance, à une question que nous nous apprêtions à poser.
02La capacité n'est pas la question
Soyons clairs sur qui dit cela. Knockwire est construit par l'équipe derrière Crawlbase, qui vend de l'infrastructure de scraping et de proxy depuis 2017 et sert plus de 46 000 clients payants. Les sorties résidentielles tournantes, les navigateurs sans interface et le reste de cette panoplie sont le métier quotidien. Passer la plupart des contrôles décrits plus haut n'est pas un problème de recherche dans ce bâtiment.
C'est exactement pour cela que la règle mérite d'être énoncée à voix haute. Une règle que vous tenez parce que vous ne pouvez pas l'enfreindre n'est pas une règle, c'est une limite avec de bonnes relations publiques. La seule version de cet engagement qui pèse quelque chose est celle prise par quelqu'un que l'enfreindre ne ralentirait pas, et qui ne l'enfreint pas.
La question n'a jamais été de savoir si c'est faisable. La question est de savoir si le faire est cohérent avec ce que nous nous apprêtons à faire ensuite, c'est-à-dire demander à un inconnu d'envisager un achat. Cette demande réclame la confiance d'une personne qui ne nous en doit aucune. Ouvrir la conversation en démontrant que ses préférences exprimées ne nous lient pas répond à la question qu'elle allait se poser sur nous, et y répond mal. Le message dit que nous respectons votre temps. La méthode de délivrance dit le contraire, et la méthode de délivrance est la partie qui a réellement eu lieu.
03Pourquoi contourner un CAPTCHA a coûté toute la catégorie
La prospection automatisée est méprisée pour des raisons méritées et largement mécaniques. L'outillage est devenu très bon pour gagner chaque rencontre individuelle : passé le garde du formulaire, passé la limite de débit, entré dans la boîte de réception. Chacune de ces victoires était petite et locale, et payée par quelqu'un qui n'était pas dans la pièce.
Additionnées, elles ont appris à toute une profession que tout ce qui arrive d'un inconnu par une voie automatisée peut être supprimé sans être lu. C'est aujourd'hui la position de départ d'un message réellement pertinent, venu d'une entreprise réelle à une adresse réelle, écrit par une personne qui a lu le destinataire avant d'écrire. L'outillage a gagné chaque combat et perdu la catégorie, et il n'existe aucune version où un contournement plus sophistiqué regagne le terrain, parce que le terrain a été perdu au contournement en premier lieu.
04À quoi ressemble l'arrêt, et ce qu'il coûte
Dans le produit, l'arrêt est un état plutôt qu'un chemin d'exception. Quand le détecteur de formulaire signale un CAPTCHA, la tâche passe dans needs_review et y reste. Aucune nouvelle tentative depuis une adresse fraîche, aucun appel à un solveur, aucune seconde tentative une heure plus tard, et aucune chasse au point d'accès hérité non protégé derrière celui qui l'est, ce qui est le même acte accompli avec de meilleures manières. Une personne ouvre la file, voit l'entreprise et le motif, et décide s'il faut leur écrire à la main. Souvent, personne ne le fait.
L'enregistrement mis en attente porte tout ce dont une personne a besoin pour décider : l'entreprise, la source qui l'a lue, le raisonnement qui l'a fait franchir les étapes, le formulaire que nous avons trouvé, le contrôle que nous avons rencontré, et le brouillon déjà écrit. Rien n'est jeté quand une tâche s'arrête, parce que le but de l'arrêt est de remettre une décision à quelqu'un, et une décision a besoin que ses preuves y soient attachées. La seule chose que l'enregistrement ne porte pas, c'est un bouton de nouvelle tentative.
La même forme s'applique plus haut. Un 429 venu d'une source de découverte arrête cette source pour la nuit plutôt que de retenter contre un blocage. Les plafonds par domaine sont appliqués avant toute délivrance, pas après l'arrivée d'une plainte. La délivrance passe par le formulaire de contact public appartenant à l'entreprise contactée, sous une personne réelle et nommée à une adresse réelle. L'envoi d'emails est prévu pour le quatrième trimestre 2026 et n'est pas construit.
Cela nous coûte, ce qui est la seule raison pour laquelle cela signifie quelque chose. Chaque tâche mise en attente est une entreprise qui a été lue, qualifiée, recherchée puis non contactée, et elle atterrit dans l'index des refus comme une lecture refusée avec un motif écrit plutôt que de disparaître discrètement des chiffres. Notre nombre d'envois effectués est plus bas qu'il ne le serait si un CAPTCHA était traité comme une énigme. Publier ces refus est ce qui empêche la règle d'être une simple affirmation : le relevé de ce que nous avons décliné, et pourquoi, est un chiffre que n'importe qui peut nous opposer, et il se trouve que c'est exactement le chiffre qu'un contournement améliorerait.