Comment contourner des Captcha simples avec Python 3 et Tesseract

Arrêtez de copier le net. Scrapez le.

 

Comment contourner des Captcha simples avec Python 3 et Tesseract

captcha-pytesseract-jqhykvb

Un CAPTCHA est un acronyme à la signification suivante : Completely Automated Public Turing test to tell Computers and Humans Apart. En d’autres termes, et en bon français, cela signifie que c’est un test qui permet de savoir si un utilisateur qui surfe sur le web est un humain, ou un robot. Un test de captcha simple est un test suffisamment difficile pour qu’un robot ne puisse pas le résoudre, mais qu’un humaine le puisse.

Dans ce tutoriel, nous allons voir comment contourner les captchas les plus simples, en utilisant un OCR de Python.

Ou plus simplement dit, nous allons utiliser un programme pour qu’un robot prétende être un humain. Alors que c’est un robot.

Qu’est-ce qu’un OCR ?

Encore un acronyme. OCR signifie Optical Character Recognition, et, selon Wikipedia, correspond à tous « les procédés informatiques pour la traduction d’images de textes imprimés ou dactylographiés en fichiers de texte ». Dit simplement, un OCR permet à l’ordinateur de transformer une image (textuelle), en texte. Cet outil permet plus largement de convertir différents types de documents (scans, fichiers PDF, image) en données textuelles facilement manipulables.

Il existe de nombreux outils open source pour réaliser une telle opération, comme TesseractGOCR et Ocrad. Nous allons utiliser Tesseract, que manifestement nous préférons aux autres.

Tesseract

Tesseract est un outil de Reconnaissance Optique de Caractères (OCR, en français cette fois) qui fonctionne sur plusieurs système d’exploitation. Il est considéré comme l’un des OCR les plus précis actuellement disponibles, avec un niveau de précision indexé sur la clarté de l’image. Google a soutient massivement son développement depuis 2006. Comment ne pas lui faire confiance.

PyTesseract

Python-Tesseract est une enveloppe python qui permet d’utiliser l’OCR Tesseract, et de convertir les images dans le format accepté par Python. Entre autres, Python peut lire les formats suivants : png, jpeg, gif, tiff, bmp.

Utiliser Tesseract pour résoudre ce captcha simple

Tesseract est utilisé pour lire du texte au format standard. Si nous voulons utiliser Tesseract de façon efficace, nous allons avoir besoin de modifier l’image délivrée par le Captcha, afin d’enlever les imperfections de fond, et afin d’isoler le texte que Tesseract sera chargé de reconnaître.

Ci-dessous, les packages nécessaires afin de réaliser ce tutoriel.

  • Python 3.0 (https://www.python.org/downloads/)
  • PIP, pour installer les packages cités ci- après (https://pip.pypa.io/en/stable/installing/)
  • Brew, pour installer PyTesseract, pour les utilisateurs de MacOS (https://brew.sh/index_fr)
  • Tesseract-OCR, forcément : https://github.com/tesseract-ocr/tesseract/wiki
  • PyTesseract, a la dépendance suivante, avec  Python Imaging Library (PIL). Pour l’installer, nous allons utiliser la commande suivante : pip install pytesseract. Et pour les utilisateurs de Mac OS, brew install pytesseract.
  • Python Imaging Library (PIL) , pour donner à Python la capacité à interpréter le format des images à déchiffrer ensuite. Il faut l’installer en utilisant la ligne de commande suivante : pip install pil

Pour en savoir plus sur PyTesseract, et sur la façon de l’installer, c’est ici : https://github.com/madmaze/pytesseract.

Dans ce tutoriel, vous allez apprendre comment résoudre un captcha en utilisant PyTesseract. Attention toutefois, il arrive que le Captcha simple, avec une image, soit trop illisible pour un OCR. Cela ne marchera pas à tous les coups. 

Nous allons utiliser, à titre d’exemple le captcha suivant, que nous avons malicieusement téléchargé sur ce site : https://fakecaptcha.com/

Après le reprocessing, voilà à quoi ressemble l’image : 

captcha-pytesseract-hkrhzbt

Le script ci-dessous permet de reconnaître un captcha, et de lire l’image captcha.

Vous pouvez également télécharger le script ici : https://gist.github.com/Lobstrio/8010d0a21c48b8c807f0c3820467ee0c.

Le script s’appelle captcha_solver.py. Pour faire tourner ce script dans la commande, ou le terminal, vous devez taper le nom du script, suivi du chemin vers l’image à interpréter.

Et voilà le résultat :

captcha-pytesseract-5b05bzd

Limitations connues

Ce code peut résoudre des captchas simples, avec une clarté suffisante, comme le captcha présenté ci-dessus. La prochains fois, nous verrons comment résoudre des captchas en utilisant un outil de machine-learning lui aussi soutenu par Google, qui apprend en regardant des milliers de captcha : https://www.tensorflow.org/

Si vous avez besoin de professionnels pour collecter les données de sites complexes, contactez nous grâce au formulaire ci-dessous.

Avertissement: Tout code fourni dans nos tutoriels est destiné à des fins d’illustration et d’apprentissage uniquement. Nous ne sommes pas responsables de la façon dont il est utilisé et n’assumons aucune responsabilité pour toute utilisation préjudiciable du code source. La simple présence de ce code sur notre site n’implique pas que nous encourageons le scraping ou l’extraction de données des sites référencés dans le code et le tutoriel qui l’accompagne. Les tutoriels ne font qu’illustrer la technique de programmation des scrapers web pour les sites internet populaires. Nous ne sommes pas obligés de fournir un support pour le code, cependant, si vous ajoutez vos questions dans la section des commentaires, nous pouvons vous y répondre périodiquement.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *