Cette page aide les équipes Selenium à intégrer la résolution de captcha avec des flux de travail stables et reproductibles pour les pipelines de test et d'automatisation.
Death By Captcha (DBC) permet aux scripts Selenium de résolver les défis de captcha via l'API au lieu de l'interaction manuelle : votre script extrait les paramètres du défi de la page, demande une solution à DBC, réinjecte le résultat dans la page puis poursuit le flux. Cette page est le quickstart : installation, un exemple de code exécutable et les notes sur les tâches prises en charge.
Python:
pip install selenium deathbycaptcha-official
Utilisez vos identifiants de compte DBC dans le client. Créez un compte et vérifiez les tarifs et le solde avant de lancer le flux.
import json
import os
import time
import deathbycaptcha
from selenium import webdriver
from selenium.webdriver.common.by import By
USERNAME = os.getenv('DBC_USERNAME')
PASSWORD = os.getenv('DBC_PASSWORD')
DEMO_URL = 'https://www.google.com/recaptcha/api2/demo'
def solve_recaptcha_v2(driver):
# 1. extract the challenge parameters from the page
sitekey = driver.find_element(By.ID, 'recaptcha-demo').get_attribute('data-sitekey')
token_params = json.dumps({'googlekey': sitekey, 'pageurl': DEMO_URL})
client = deathbycaptcha.SocketClient(USERNAME, PASSWORD)
if client.get_balance() <= 0:
raise SystemExit('No balance - top up before solving.')
# 2. request the solution token from DBC (type 4 = reCAPTCHA v2 token)
result = client.decode(type=4, token_params=token_params)
return result['text'] if result else None
driver = webdriver.Firefox()
driver.get(DEMO_URL)
token = solve_recaptcha_v2(driver)
if not token:
print('No solution yet - retry with backoff')
raise SystemExit(1)
# 3. inject the token back into the page
driver.execute_script("document.getElementById('g-recaptcha-response').value = arguments[0]", token)
# 4. submit and wait for the success element
driver.find_element(By.ID, 'recaptcha-demo-submit').click()
time.sleep(2)
print(driver.find_element(By.CLASS_NAME, 'recaptcha-success').text)
driver.quit()
Version complète exécutable : examples/deathbycaptcha-python-selenium dans le dépôt officiel du client Python
| Besoin | Contexte Selenium | Chemin DBC |
|---|---|---|
| Flux de travail de jeton stable | Gestion déterministe lors d’exécutions d’automatisation répétées. | Flux de jetons piloté par API avec limites de tentatives/délai explicites. |
| Type de couverture | Différents projets correspondent à différentes classes de défis. | Utilisez des points de terminaison spécifiques au type et validez chaque scénario séparément. |
| Soutien opérationnel | Les problèmes de production nécessitent un diagnostic rapide. | Surfaces de support et de fiabilité pour l’escalade et la planification. |
| Sujet | Remarque |
|---|---|
| Types de captcha (API) | reCAPTCHA v2 et v3, Cloudflare Turnstile, GeeTest, DataDome et captchas image/texte. |
| Flux | Extrayez le sitekey de la page, demandez le jeton à l'API DBC (type 4), réinjectez-le et soumettez le formulaire. |
| Solde | Les solutions sont payées avec le solde du compte ; vérifiez-le avant de décoder. |
| Nouvelles tentatives | L'absence de solution est temporaire : réessayez avec backoff, comme le fait l'exemple officiel. |
| API contre extension | Ce flux utilise l'API dans votre script ; l'extension de navigateur est le chemin sans code pour la navigation manuelle. |
| Navigateurs pris en charge | N'importe quel navigateur compatible WebDriver ; l'échantillon officiel s'exécute sur Firefox et Chrome. |
Pour le déploiement du solveur captcha Selenium, confirmez d'abord le flux de jetons stable, puis connectez les pages de fiabilité et de tarification pour finaliser la planification de la production.