Philippe Masset

Engineer at Buffer.

Remplir les captchas deux fois plus vite

October 2011

Vous connaissez sans doute ce que sont les captchas.

Le service de captcha le plus connu et répandu, reCAPTCHA, propose des widgets à intégrer sur les sites gratuitement. Il y a donc beaucoup de chances que quand vous croisiez un captcha, ce soit un reCAPTCHA. Ces widgets ressemblent à ça :

Exemple de widget reCAPTCHA

S'il y a une chose à savoir concernant reCAPTCHA, c'est que leurs captchas ont deux objectifs :

  1. Différencier les humains des robots, comme tous les autres services du genre
  2. Aider les logiciels d'OCR (Reconnaissance Optique de Caractères) à numériser des livres

C'est ce second point qui est intéressant. Quand un logiciel d'OCR n'arrive pas à déchiffrer un mot, la seule méthode qu'il reste pour identifier ce mot est l'oeil humain.

Et c'est là que reCAPTCHA entre en jeu, puisqu'ils se servent de tous les captchas résolus à travers le monde par des humains chaque jour (200 millions d'après eux) pour déchiffrer ces mots.

Vous l'aurez compris, dans chaque reCAPTCHA, une des deux images est inconnue par leur système. La validation ou non du captcha est donc déterminée par l'autre mot, qui lui est connu du système. Ils partent donc du principe que si la personne a correctement écrit le mot dont ils connaissent la correspondance, alors l'autre mot a aussi été écrit correctement.

Cela leur permet donc, après avoir recoupé tous les résultats, d'obtenir le mot correspondant à l'image que les logiciels d'OCR n'arrivaient pas à déchiffrer.

C'est une idée intéressante, mais elle rend le système partiellement contournable. Etant donné qu'ils ne connaissent pas l'un des deux mots, il suffit de déterminer lequel c'est pour pouvoir valider le captcha en n'ayant qu'à écrire l'autre.

Un captcha de deux mots donc, mais un seul mot à écrire. Lequel ? Rappelez-vous, le mot inconnu provient de livres, pour aider à les numériser. Sachant cela, le mot inconnu est souvent le mot le plus lisible, ou dont la police d'écriture est la moins fantaisiste. Dans l'image d'exemple, le mot inconnu serait celui-là :

Donc, dans cet exemple, écrivez seulement "xteniv", et le captcha sera validé !

Cette technique est certes un peu égoïste, mais quand on navigue sur des sites qui usent et abusent de captchas, ça peut faire gagner un temps précieux.

EDIT Le fonctionnement de reCAPTCHA a récemment changé, on n'est toujours pas obligé d'écrire le mot inconnu, mais l'ignorer complètement ne fonctionne plus. Il faut dorénavant mettre au moins une lettre à la place de ce mot, et le séparer de l'autre par un espace. Pour l'exemple précédent, il faut donc écrire quelque chose comme "x xteniv" pour valider le captcha.