Dans cet article de blog, vous verrez :
- Qu’est-ce que le CAPTCHA d’Amazon et comment fonctionne-t-il ?
- Trois approches différentes pour éviter cela
- Une comparaison complète de ces techniques
Commençons.
Amazon CAPTCHA : Introduction
Avant d’apprendre comment l’éviter, il faut comprendre ce qu’est le CAPTCHA d’Amazon et pourquoi il apparaît sur certaines pages.
Définition
Amazon CAPTCHA est une mesure anti-bot qui apparaît lorsque vous visitez des pages Amazon avec un script d’automatisation ou que vous effectuez des interactions automatisées sur le site. Dans la plupart des cas, il s’agit d’un CAPTCHA textuel simple, qui vous oblige à saisir les caractères apparaissant à l’écran :
Le défi ci-dessus peut sembler simple, mais il suffit à arrêter la plupart des scripts de raclage de sites de commerce électronique. La bonne nouvelle, c’est qu’il ne s’agit pas du CAPTCHA le plus avancé du marché, et qu’il existe certainement des moyens de le contourner.
Lorsqu’il est affiché
Voici la partie délicate… Le CAPTCHA d’Amazon n’apparaît pas dans un ensemble fixe de scénarios ou de configurations de navigateur. Parfois, vous le trouverez, parfois non.
D’après nos tests, les scénarios les plus courants qui déclenchent le CAPTCHA lors de l’utilisation d’outils d’automatisation tels que Selenium, Puppeteer et Playwright sont les suivants :
- Visiter directement la page d’un produit Amazon
- Effectuer une recherche automatisée
- Tentative de connexion ou d’enregistrement
Cependant, il est important de noter qu’aucune de ces actions ne garantit un défi CAPTCHA. Bien que vous puissiez penser que ce comportement est bon, il ne l’est pas vraiment ! Vous pouvez être amené à penser que votre scraper Amazon fonctionne parfaitement, avant d’être soudainement bloqué sans raison apparente.
Par exemple, un simple script Selenium comme le suivant peut fonctionner sans problème, ou vous pouvez déclencher un CAPTCHA :
# pip install selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# Configure the browser to launch in headless mode
options = Options()
options.add_argument("--headless")
# Initialize the WebDriver to control Chrome
driver = webdriver.Chrome(service=Service(),options=options)
# Connect to the target page (Amazon Kindle product page)
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
# Take a screenshot of the entire page
driver.save_screenshot("product-page.png")
# Additional scraping logic...
# Release the driver resources
driver.quit()
S’il est exécuté correctement, le script produira cette capture d’écran :
En revanche, en cas d’échec, il produira :
La nature imprévisible de l’émergence du CAPTCHA rend difficile le développement d’une logique d’automatisation fiable qui déclenche systématiquement le défi. Par conséquent, il est également difficile de l’étudier. Heureusement, cela ne signifie pas qu’il est impossible de contourner le CAPTCHA.
Il est temps d’apprendre.
Comment contourner le CAPTCHA d’Amazon : 3 techniques
Dans ce chapitre, vous explorerez trois approches différentes pour résoudre le CAPTCHA d’Amazon :
- Utiliser un navigateur caché
- Utiliser l’IA
- Utiliser un résolveur de CAPTCHA
Pour d’autres méthodes, consultez notre guide sur le contournement des CAPTCHA en Python.
Plongeons dans le vif du sujet.
Méthode n° 1 : utiliser un navigateur caché
Combien de fois avez-vous vu un CAPTCHA en naviguant sur Amazon ? Il y a de fortes chances que vous ne l’ayez que rarement, voire jamais, vu. Cela suggère que les utilisateurs humains réels ne sont pas affectés de manière significative par les systèmes anti-bots et anti-scraping d’Amazon.
Comme dans la plupart des cas, la prévention est préférable à l’atténuation. L’objectif n’est pas d’essayer de résoudre le CAPTCHA, mais d’empêcher son déclenchement. Comment ? En configurant la logique d’automatisation du navigateur de manière à imiter le plus fidèlement possible un véritable utilisateur humain lorsqu’il interagit avec les pages web d’Amazon.
L’objectif peut être atteint en utilisant des navigateurs dotés de plug-ins furtifs qui modifient les paramètres du navigateur liés à l’automatisation afin d’éviter les fuites et de réduire la détection des robots. Voici quelques outils populaires à cet effet :
- SeleniumBase: Un cadre d’automatisation basé sur Python avec des capacités de furtivité intégrées pour contourner la détection des robots dans Selenium.
- Playwright Stealth: plugin Playwright Extra qui modifie les paramètres du navigateur pour éviter d’être détecté par les systèmes anti-bots.
- Puppeteer Stealth: plugin Puppeteer Extra qui modifie les empreintes digitales du navigateur pour leur donner une apparence plus humaine.
chromedriver-not-detected
: un pilote Web Selenium corrigé qui aide à contourner la détection par les mécanismes anti-bots.
Dans cette section, nous nous concentrerons sur SeleniumBase, car il fonctionne parfaitement avec Python. Cependant, vous pouvez facilement utiliser n’importe laquelle des autres options.
Pour installer SeleniumBase, exécutez la commande suivante :
pip install seleniumbase
Vous pouvez alors modifier le script Selenium ci-dessus pour utiliser SeleniumBase comme suit :
from seleniumbase import Driver
# Initialize the SeleniumBase driver
driver = Driver(uc=True) # Enables stealth mode
# Connect to the target Amazon page
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
# Take a screenshot of the entire page
driver.save_screenshot("product-page.png")
# Additional scraping logic...
# Release the driver resources
driver.quit()
Génial ! Les chances de trouver les CAPTCHA d’Amazon ont été considérablement réduites.
Approche 2 : résoudre le problème grâce à l’IA
Si vous regardez une collection de CAPTCHA d’Amazon, il est difficile de croire que l’IA n’est pas capable de les résoudre :
Après tout, les défis de reconnaissance de texte de base semblent désuets par rapport aux CAPTCHAs plus avancés et plus complexes sur le marché aujourd’hui :
L’idée est donc la suivante :
- Faites une capture d’écran de la page CAPTCHA
- Nourrir ChatGPT ou tout autre modèle d’IA
- Obtenez la réponse de l’IA et utilisez-la pour résoudre le CAPTCHA.
Si vous inspectez le code HTML du CAPTCHA, vous verrez que le champ de saisie de texte peut être sélectionné avec le sélecteur CSS .a-span12
. Compte tenu de ces informations, nous pouvons contourner le CAPTCHA d’Amazon en utilisant l’IA avec l’approche suivante :
import os
import time
import base64
from openai import OpenAI
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def solve_amazon_captcha(driver, timeout=5):
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
captcha_elements = driver.find_elements(By.CSS_SELECTOR, "a-span12")
# If the CAPTCHA has been detected
if len(captcha_elements) > 0:
print("CAPTCHA detected!")
# Take a screenshot of the CAPTCHA page
driver.maximize_window()
screenshot_path = "captcha.png"
driver.save_screenshot(screenshot_path)
print("Attempting to solve the CAPTCHA...")
# Feed the screenshot to the AI for CAPTCHA solving
base64_image = encode_image(screenshot_path)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Extract the text from this CAPTCHA. Return only the text."},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}},
],
}
],
)
# Get the CAPTCHA text
captcha_text = response.choices[0].message.content.strip()
# Select teh CAPTCHA input text and fill it out
# with the AI generated text
input_element = captcha_elements[0]
input_element.send_keys(captcha_text, Keys.ENTER)
print("CAPTCHA solved!")
print(f"Wait up to {timeout} seconds for page reload...")
# Wait up to 5 seconds for a page reload
time.sleep(timeout)
Pour que la fonction solve_amazon_captcha()
fonctionne, installez la dépendance openai
:
pip install openai
En outre, définissez votre clé d’API OpenAI en tant que variable d’environnement globale appelée OPENAI_API_KEY
.
C’est ainsi que l’on peut appeler la fonction de résolution des CAPTCHA alimentée par l’IA :
driver = webdriver.Chrome()
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")
solve_amazon_captcha(driver)
driver.quit()
Maintenant, votre script résoudra le CAPTCHA comme le ferait un utilisateur humain.
Pour une approche similaire utilisant Gemini, consultez le projet Genaptcha sur GitHub.
Méthode #3 : Intégrer un solveur CAPTCHA
Pour obtenir une précision maximale tout en minimisant les appels aux modèles d’IA – qui peuvent être coûteux en raison de la consommation de jetons par les images – il convient de combiner les deux solutions susmentionnées :
- Réduire la fréquence des CAPTCHA sur Amazon
- Résoudre les problèmes uniquement lorsqu’ils apparaissent
Cependant, l’approche hybride comporte ses propres défis :
- Dépendances supplémentaires: Vous avez besoin d’un outil d’automatisation de navigateur furtif, du client OpenAI et des paramètres d’environnement appropriés.
- Instabilité: les plugins furtifs peuvent fonctionner aujourd’hui mais être inefficaces demain en raison de la bataille permanente entre les développeurs de bots et les solutions anti-bots. C’est pourquoi il est essentiel de maintenir les bibliothèques à jour. En outre, les modèles LLM produisent parfois des résultats incohérents, ce qui peut poser un problème supplémentaire. En outre, l’IA a du mal à résoudre des CAPTCHA plus complexes, qu’Amazon est susceptible d’adopter dans un avenir proche.
- Logique de réessai requise: pour garantir que le CAPTCHA est effectivement résolu, vous devez mettre en œuvre un mécanisme de réessai en cas d’échec de l’IA.
- Lenteur: l’IA introduit des retards importants dans le traitement. En outre, l’attente de l’apparition et de la disparition du CAPTCHA ralentit encore le processus d’automatisation/de raclage.
- Frais généraux de maintenance: vous êtes chargé de veiller à ce que toutes les technologies choisies soient correctement configurées et continuent de fonctionner au fil du temps.
Ne serait-il pas plus simple d’utiliser un résolveur de CAPTCHA ? Bien sûr, surtout si cette fonctionnalité est intégrée directement dans le navigateur sans tête contrôlé par l’outil d’automatisation du navigateur de votre choix.
C’est exactement l’expérience qu’offre Scraping Browser. Il s’agit d’un navigateur en nuage optimisé pour le web scraping, conçu pour offrir des performances maximales et éliminer le besoin de gestion de l’infrastructure. Ce navigateur spécialisé propose la rotation des IP, des tentatives automatiques, des mécanismes avancés d’évitement des robots et, bien sûr, la capacité de résoudre les CAPTCHA.
Voyez comment l’intégrer facilement avec Selenium, Playwright et Puppeteer comme n’importe quel autre navigateur dans notre documentation.
La meilleure façon de déchiffrer le CAPTCHA d’Amazon
Voici un récapitulatif des techniques CAPTCHA d’Amazon étudiées dans cet article :
Approche | Sauter le CAPTCHA | Résolution CAPTCHA | Maintenance | Logique manuelle | Coût |
---|---|---|---|---|---|
Navigateur caché | ✔️ | ❌ | Exigée | Exigée | Gratuit |
Solution IA | ❌ | ✔️ | Exigée | Exigée | 💲 |
Résolveur CAPTCHA | ✔️ | ✔️ | Ce n’est pas nécessaire, car la solution fonctionne dans le nuage. | Ce n’est pas nécessaire, car toutes les fonctions sont intégrées dans l’outil. | 💲 |
Leurs forces et leurs faiblesses sont résumées ci-dessous.
Méthode n° 1 : utiliser un navigateur caché
👍 Pour :
- Libre et gratuit
👎 Cons :
- L’évasion du CAPTCHA, pas son contournement
- Dépend des navigateurs corrigés, qui peuvent être instables.
- Nécessite une maintenance continue
Approche 2 : résoudre le problème grâce à l’IA
👍 Pour :
- Peut résoudre efficacement les CAPTCHAs basés sur du texte
👎 Cons :
- Résultats incohérents et inefficaces face à des CAPTCHA complexes
- La détection des CAPTCHA sur la page peut s’avérer délicate
- Les appels à l’IA ont un coût
Méthode #3 : Intégrer un solveur CAPTCHA
👍 Pour :
- Très efficace
- Fonctionne de manière transparente avec n’importe quel outil d’automatisation de navigateur ou client HTTP
- Il n’est pas nécessaire d’appliquer une logique de relance, de configurer le navigateur ou d’effectuer d’autres tâches manuelles.
👎 Cons :
- Service Premium
Conclusion
Dans cet article de blog, vous avez appris pourquoi Amazon peut vous arrêter avec un CAPTCHA et comment le gérer dans votre script de scraping. Malheureusement, les apparences des CAPTCHA sont incohérentes, ce qui les rend difficiles à étudier. Heureusement, il existe des techniques pour éviter ou contourner les CAPTCHA, et nous explorons ici les trois plus utiles.
Comme indiqué ci-dessus, l’approche la plus efficace consiste à utiliser le navigateur de scraping de Bright Data, qui comprend un résolveur de CAPTCHA intégré et s’intègre de manière transparente à Selenium, Playwright et Puppeteer.
Si vous recherchez une solution encore plus simple, envisagez nos autres options :
- Amazon CAPTCHA Solver: Un CAPTCHA Solver dédié à Amazon et pris en charge par notre Web Unlocker.
- Amazon Scraper: un point final de scraping conçu spécifiquement pour les pages Amazon. Il suffit de l’appeler pour obtenir les données dont vous avez besoin, déjà analysées dans le format de votre choix.
- Amazon Datasets: ensembles de données prêts à l’emploi contenant les données qui vous intéressent. Aucun scrapping n’est nécessaire.
Créez un compte Bright Data gratuit dès aujourd’hui et découvrez nos solutions de scraping et de dataset grâce à un essai gratuit.
Aucune carte de crédit requise