# Comment contourner un Captcha (simple) avec Python3 et Pytesseract?

> Dans ce tutoriel, nous allons voir comment contourner un Captcha (simple) de façon programmatique avec PyTesseract.

- **Author**: Sasha Bouloudnine
- **Published**: 2023-04-14 (14 avr. 2023)
- **Reading time**: 4 min
- **Canonical**: https://www.lobstr.io/fr/blog/comment-contourner-un-captcha-simple-avec-python3-et-pytesseract-1
- **Also in**: en: https://www.lobstr.io/blog/how-to-bypass-a-simple-captcha-with-python3-and-pytesseract

---

Un CAPTCHA, acronyme qui signifie Completely Automated Public Turing test to tell Computers and Humans Apart, est un test utilisé par les sites internets partout dans le monde, pour déterminer si un utilisateur est véritablement un humain.

![How to bypass a (simple) Captcha with Python3 and Pytesseract?-image-1.png](https://d37gzvgyugjozl.cloudfront.net/How_to_bypass_a_simple_Captcha_with_Python3_and_Pytesseract_image_1_7717ad66e2.png "width=316;height=127")

[D’après cet excellent article de Cloudflare posté en Mai 2021](https://blog.cloudflare.com/introducing-cryptographic-attestation-of-personhood/), avec 4,6 milliards d’internautes chaque jour, et  un captcha résolu en moyenne une fois tous les 10 jours, c’est donc près de **500 millions de captcha qui sont résolus chaque jour**.

S’il est possible de résoudre ces challenges en faisant appel à des services tierces, comme la société [2captcha](https://2captcha.com), cela devient rapidement lent et coûteux, puisqu’il faut compter en moyenne 30 secondes par résolution, et 2 USD pour 1000 captchas résolus. Sans parler des implications éthiques.

Dans cet article, nous allons voir **comment contourner un CAPTCHA (simple) de façon entièrement programmatique, avec Python et** [la librairie Pytesseract](https://pypi.org/project/pytesseract/).

Le code est disponible en intégralité ici: 
https://gist.github.com/lobstrio/da95d31bff3f83a5e95ee9daeb253107#file-bypass_simple_captcha_pytesseract-py

## Prérequis

Afin de réaliser ce tutoriel de bout en bout, soyez sur d’avoir **les éléments suivants installés** sur votre ordinateur.

* [python3 ](https://www.codecademy.com/article/install-python3)
* [SublimeText](https://www.sublimetext.com/3)

Vous pouvez cliquer sur les liens ci-dessous, qui vous dirigeront soit vers un tutoriel d’installation, soit vers le site en question.

Pour préciser l’utilité de chacun des éléments cités ci-dessus: python3 est le langage informatique avec lequel nous allons scraper le pdf, et SublimeText est un éditeur de texte. Sublime.

À nous de jouer!

## Installation

On va procéder comme suit: 

1. Installer open-cv
2. Installer pytesseract
3. Installer tesseract
4. Télécharger le Captcha

Pour les 2 premières librairies, Il suffit dans la console, de taper les commandes suivantes: 

```bash
$ pip3 install opencv-python
$ pip3 install pytesseract
```

Enfin, il faut **installer tesseract**, qui est un OCR, l’acronyme de Optical Character Recognition, c'est-à-dire la technologie qui va permettre de déchiffrer les caractères du Captcha.

**Mac OS**

```bash
$ brew install tesseract
```

**Linux**

```bash
sudo apt update
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
```

Et l’ensemble des informations détaillés d’installation présentes ici: 
[https://stackoverflow.com/questions/50655738/how-do-i-resolve-a-tesseractnotfounderror](https://stackoverflow.com/questions/50655738/how-do-i-resolve-a-tesseractnotfounderror)

Et voilà, les librairies sont installées!

Enfin, on va **télécharger notre captcha (simple)**. Rendez-vous sur ce site de génération de captcha: [https://fakecaptcha.com/](https://fakecaptcha.com/). Taper le mot clé de votre choix. Enfin, télécharger l’image, à conserver précieusement: 

![How to bypass a (simple) Captcha with Python3 and Pytesseract?-image-2.png](https://d37gzvgyugjozl.cloudfront.net/How_to_bypass_a_simple_Captcha_with_Python3_and_Pytesseract_image_2_e116c0555e.png "width=628;height=471")

Allons désormais déchiffrer cette image. Et prouvez notre humanité. Sans aucune intervention humaine.

🤖

## Guide Complet

Nous allons passer par 3 étapes distinctes: 

1. Resize
2. Close
3. Threshold

Avec les **3 transformations** comme suit: 

![How to bypass a (simple) Captcha with Python3 and Pytesseract?-image-3.png](https://d37gzvgyugjozl.cloudfront.net/How_to_bypass_a_simple_Captcha_with_Python3_and_Pytesseract_image_3_29587713f8.png "width=441;height=553")

### 1. Resize

D’abord, nous allons **redimensionner** l’image. Le redimensionnement de l'image permet à l'algorithme OCR de détecter les traits de caractères ou de chiffres dans l'image d'entrée.

Le code comme suit: 

```python
filename = 'lobstr.jpeg'
img = cv2.imread(filename)
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(h, w) = gry.shape[:2]
gry = cv2.resize(gry, (w*2, h*2))
```

### 2. Close

Le closing est une opération morphologique visant à supprimer les petits trous dans l'image d'entrée. Si nous regardons attentivement les caractères l et b se composent de beaucoup de petits trous.

Le code: 

```python
cls = cv2.morphologyEx(gry, cv2.MORPH_CLOSE, None)
```

### 3. Threshold

Nous appliquerons **un seuil simple** pour binariser l'image. Notre objectif est de supprimer tous les artefacts restants de l'image, qui nuisent à la lisibilité.

Le code: 


```python
thr = cv2.threshold(cls, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
```

### 4. Decrypt

Enfin, une fois l’image suffisamment clarifiée, on décode le message avec [la librairie tesseract](https://pypi.org/project/pytesseract/) pour Python.

Et on imprime le message décodé dans la console: 

```python
txt = image_to_string(thr)
print(txt)
```

## Le Code

Voilà le code en intégralité: 

```python
import cv2
from pytesseract import image_to_string

# pip3 install opencv-python
# pip3 install pytesseract
# brew install tesseract

filename = 'lobstr.jpeg'
img = cv2.imread(filename)
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(h, w) = gry.shape[:2]
gry = cv2.resize(gry, (w*2, h*2))
cls = cv2.morphologyEx(gry, cv2.MORPH_CLOSE, None)
thr = cv2.threshold(cls, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
txt = image_to_string(thr)
print(txt)
```

Pour exécuter le code: 

1. Télécharger le code .py
2. Changer le chemin de l’image
3. Lancer le script via la ligne de commande

Et voilà ce qui va apparaître directement sur votre terminal: 

```bash
$ python3 bypass-captcha-pytesseract-tutorial.py
lobstr
```

Eureka!

✨

## Limitations

Ce code va vous permettre de convertir rapidement des images, générées depuis [https://fakecaptcha.com/](https://fakecaptcha.com/), en texte. Et donc de contourner les challenges possiblement posés lors d’un scraping de données.

Toutefois, **ce script ne fonctionne que pour des captchas simples** . Essayons pour voir avec un Captcha Amazon, ci-après: 
![How to bypass a (simple) Captcha with Python3 and Pytesseract?-image-4.png](https://d37gzvgyugjozl.cloudfront.net/How_to_bypass_a_simple_Captcha_with_Python3_and_Pytesseract_image_4_95e3da2bda.png "width=331;height=438")

On lance le script: 

```bash
$ python3 bypass-captcha-pytesseract-tutorial.py
nrrth
```

Qui ne fonctionne tout simplement pas.

🤷‍♀️

## Conclusion

Et c’est la fin du tutoriel!

Dans ce tutoriel, nous avons vu comment **contourner un Captcha simple avec Python3 et Pytesseract**, et ce de façon programmatique.

Si vous avez des questions, ou si vous avez besoin d’un service de scraping sur-mesure, solide et scalable, capable de contourner les captchas les plus robustes, [contactez-nous ici](https://www.lobstr.io/custom).

Happy scraping!

🦀

---

## Related articles

- [Comment télécharger des ebooks depuis un .onion avec Python3 ](https://www.lobstr.io/fr/blog/comment-telecharger-des-ebooks-depuis-un-onion-avec-python3-1)
- [Comment scraper anonymement avec Python et des Tor Proxies?](https://www.lobstr.io/fr/blog/comment-scraper-avec-des-tor-proxies-et-python)
- [Comment scraper des PDFs avec Python3 et Tika?](https://www.lobstr.io/fr/blog/comment-scraper-des-pdfs-avec-python3-et-tika)

Tags: Code

_Canonical HTML: https://www.lobstr.io/fr/blog/comment-contourner-un-captcha-simple-avec-python3-et-pytesseract-1_

More for agents: https://www.lobstr.io/llms.txt, pricing in Markdown: https://www.lobstr.io/pricing.md
