> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# hCaptcha API de reconnaissance de protocole Documentation

> hCaptcha verification code recognition service API guide - Ace Data Cloud

Cet article présente une documentation sur l'API de reconnaissance de protocole hCaptcha, qui permet aux utilisateurs de valider sans avoir à reconnaître et cliquer sur les images de captcha hCaptcha, il suffit de soumettre la clé du site Web pour réaliser le décodage automatique en arrière-plan et compléter la validation.

## Processus de demande

Pour utiliser l'API de reconnaissance de protocole hCaptcha, commencez par obtenir votre jeton API sur le [tableau de bord d'Ace Data Cloud](https://platform.acedata.cloud/console/applications) et conservez-le pour référence.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Si vous n'êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion qui vous invite à vous inscrire et à vous connecter, après quoi vous serez automatiquement renvoyé à la page actuelle.

**Un jeton API suffit pour appeler tous les services de la plateforme, sans avoir à en demander un pour chaque service.** La première demande vous donnera un quota gratuit pour une expérience sans frais ; en cas de quota insuffisant, vous pouvez recharger le solde général dans le [tableau de bord](https://platform.acedata.cloud/console/coin).

> 📘 Documentation complète : [API de reconnaissance de protocole hCaptcha →](https://platform.acedata.cloud/documents/captcha-token-hcaptcha)

## Utilisation de base

Tout d'abord, comprenez la méthode d'utilisation de base, qui consiste à entrer l'URL du site Web nécessitant le traitement du captcha hCaptcha pour obtenir le résultat traité. Vous devez d'abord transmettre un champ `website_url`, notre site d'exemple est : `https://accounts.hcaptcha.com/demo`, nous devons obtenir le `website_key` sur la page `website_url`, ouvrez d'abord cette page, appuyez sur F12 pour accéder à la console, puis effectuez une recherche globale dans l'onglet Element pour `hcaptcha-demo`, nous pouvons obtenir le résultat suivant :

<p>
  <img src="https://cdn.acedata.cloud/bmx7ik.png" width="500" className="m-auto" />
</p>

La chaîne de caractères correspondant à `data-sitekey` est la valeur de `website_key`, voici les résultats des paramètres spécifiques :

<p>
  <img src="https://cdn.acedata.cloud/st6q7a.png" width="500" className="m-auto" />
</p>

Ici, nous avons configuré les en-têtes de requête, y compris :

* `accept` : le format de réponse souhaité, ici rempli avec `application/json`, c'est-à-dire au format JSON.
* `authorization` : la clé pour appeler l'API, que vous pouvez sélectionner directement après la demande.

De plus, nous avons configuré le corps de la requête, y compris :

* `website_url` : l'URL du site Web nécessitant le traitement du captcha.
* `website_key` : l'identifiant de la clé du site dans hCaptcha.

Après sélection, vous pouvez constater que le code correspondant a également été généré à droite, comme illustré ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/5gse4m.png" width="500" className="m-auto" />
</p>

Cliquez sur le bouton « Essayer » pour effectuer un test, comme montré ci-dessus, ici nous avons obtenu le résultat suivant :

```json theme={null}
{
  "token": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.hadwYXNza2V5xQda4nQzFgUbYJqILiiwbvyhjocSilg8RjFHvIHmCzmqUNZa9hesIWEVRx5KIbMVeAQzSTWCwXmiQrPZuIEmZz-ZPL6DPNmB3ZXtJNsVYRLdRyvWPTB7EYskJG85yDVor2TcgQFNqAahhKT3WXjtk3S54ZBhv7QvaImUmos8MWgUOvUZHsvUtojN-izWIrBkD1if_71quOHvcvEVTLcSLx9dOgzpNAJ8_6BmJEsGlPbMGnSKrS1QfpPyzvgrnpjjIY_6TMYwJrR0EwJgCdp_lfc4mkxl0NJsZt8D_q7jcv3v6jt1CZ2qbqF5_-i4y0MYnQMCm1T62xBPdiEyst_FtGuWxJllkrrmWN0edyWcWeasLcCS6qpRry0H7RU7DYQnML6dmQoZg15NT0tFrAYeLK7EwvJxzcFbvUQ-Tc5QVk7tzvKpDtUVfQeZmRRgxWbCFf6bAT1z0uUwdma1O1lcTkSZCC5cVTaprkkKE04Ov4aCIKg2N7WGj4r0AOykisAISX5oidF3gejDTJy9vU1hgaCYFOimnwRKyqRsJdznptzhzDOQuICuAHYT3is1sY26ltJGOZTdDKkt2i2owCoAylgLbBP8VjTOGrsM12IH3Xsy076O40RCG6zThWN5TFKSpl7PNA6l2KoW-P3_K9WORjx2DSvKTAwqcouSU-0Rc_8Hlq9cIuS1iDhiNfJnJ_zNy_2gXSR2j7NP7m_lsfwELKypKm6pPzIhOuz5RwPotfPQfXOMdF3Xy98iQiihZmuHENvLAhjV_W7NL9TK3THPwDTFriS8ghIncl02v-fVARXDiuFTvjjlegL7xbHgIrOhLpunsxLiwdImUWatEI9jqaf84X4BtoS0TGYo4pHkpIG10dhoz3vooeSToAws6tz7ZWSHm6naksZ41X_WIxd7N8P9yzxrbLgVv-nHia5qHQLDmiZf3alITKhtisennw8NpespaQIVZzw_B16bdUNKqHCCTLdFbr16-3KpRoHzOOU2kBhV-gDN0NiA3ecqIMnyMdnpKlUpnjJ5sMA3e0pKEX_Vbu8DE8zfkcwLIwCIb2BLrKEHnCvv4JX8TfBktzMc5oTtZyEu-E_6ew0mSm_nhVsGtmLXSsB81FP9VGGRd50buIXRNW4GFp3XdTmYyuN32kc-AHJ5kKDj2HGraHxKco0McT7nV2bgx97k-C7hgxL2x5t3lC97edphh2kt2-gXuTxxfB7K-ZG6w5d1MnRte4ZG7TxvPFFi5693IFRFbvcr-U3WyGZJmGGdfV55PnoIU9Qn-WDtBU4EXyvd_KTt-asHtI6VQiVSNzacemTfsu9WBF33f2gafDY4qqhyXDPNsu6BZCGMSBhxDPURY74OBr4mYOdhjELY07nSkr9RQtQwiiSa8B8XFlezCPafjgdbmmNzG3PXa3n23sSwVnJHpHhq79eTP_KeeCiqlCvNsHLEfiH5HCNRGp7v5b342wBk__BWFimJMvohz0rucTVYgVFBdTOomUTuqCPeUgDP3X6BnNqyVDRA-HrdRl-RkU6mnw-3-IwyMZQ-fEnFMzbGp3zaoY7Do2jKvKKILoq6Q8zlDYkrLwuXjDP-nernI2hxP9wVOUVmtq5Rs19RLUI4MNWZAqwG-wGnaoB756d8nfmh5XhFzvArE5bpL50FY1yJqv7nbPW7JNnkfZG80yVRrIZO_F9NEb3n4eiIzg9Gu9fv8ncyChiCCp-swK5B7_w-XsAlco98bO-YK-fFMJOhyt0PU8Zc-hYoCa6cLVTvhdPzIUA0CQOemg4Pz6PX6SVwLYSlOXYkzbrgBlyH5YBS3oaRCeavVLrJsKt0_KwHwgBa1mdP5mlYUpBDbKR4PKwknU7y111JH0B4fO39dOVA-zecvDG0bnuy98Jym4KUchZr1tXabMcM20mg1UvcxMfnKOx0ojBcVwYA7kPQK3EzMnwX9NbAzYP6IlMgjFK9ZM7HCXxN6J1_6kw10RT4O58-Pbh3cMSrZDfM-GuG7p7XrVpJrX8TD195DCJqx-DmVv3Bs3CiuCPTvGrSZ58KE4hQagidGreUD2WXxLBFfTv1RgM3eXMtROs7hddyBajIu401lxucNbpRB7lYV7pJwxG7LQoSZ2G2LzG8eFPVPIkDNVOa8nGzh-sWaF7kc7bVv-P4FXbLX0WCjvQRES2MCbXPyJ-OpZZXZcJy7SOsGY3jZbTkGoez19cRQLiFO35gA5l9FBptDKW-_yGemt5XeKsR_FwGPN9C-0k1E-28oB4iKo-h1zb2kJpilhnmG36Z59F5T6W77M7OD_N6VHRWuPClLElO09OrPLHbJmxq9JvMWjTg5JjEaqyTLyLXWgw0N3kZMCqJJeqNj5w5I7dpuJ6ScfXKVaT96v2UESebdbMFT7vkZAkFF8LIowkN56pNwXLHkB2KyIWR2WQL-335BEpQ0AVB6RX4kdociIhtvAdsIE6pvFIwkzyO0OvIHxzOwPxZKdmDmBVMu7YxJStrhY-XWCu4kO5gDIJ0iedPWKNleHDOZuZqGKhzaGFyZF9pZM4xrUyBomtyqDE1ZmUwNDhkonBkAA.dVWyVc6N3lx2ZJQ7NJ9aEsWA-KAIuQ4PMSKVGQuWyCA"
}
```

Nous pouvons voir que nous avons obtenu le résultat de vérification du captcha hCaptcha, puis nous pouvons l'utiliser pour POST ou simuler une soumission au site cible, à usage unique, avec une durée de validité de 120 secondes, il est conseillé de l'utiliser dans les 60 secondes. Ensuite, nous fournirons une version CURL pour soumettre le token traité au site cible afin de passer le captcha Recaptcha2.

Tout d'abord, nous devons comprendre comment le site envoie la requête POST, afin que nous puissions y insérer le token généré. Nous devons d'abord ouvrir la console F12, puis passer manuellement par le processus, et enfin nous pouvons voir que le site a envoyé une requête POST. Nous devons simplement examiner la construction de cette requête POST, le processus spécifique est le suivant :

* D'abord, passez manuellement la vérification, comme indiqué dans l'image ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/bfg9w1.png" width="500" className="m-auto" />
</p>

* Ensuite, cliquez sur soumettre, regardez les changements dans le réseau de la console, comme indiqué dans l'image ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/eszhv3.png" width="500" className="m-auto" />
</p>

* Analysez la construction de la requête POST soumise, puis faites un clic droit sur cette requête pour copier le code CURL, comme indiqué dans l'image ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/bif3mj.png" width="500" className="m-auto" />
</p>

D'après l'image ci-dessus, nous pouvons voir que l'URL de cette requête POST est : `https://accounts.hcaptcha.com/demo`, nous devons simplement soumettre les paramètres `g-recaptcha-response`, `h-captcha-response` et `email`, puis nous devons simplement insérer le token traité dans les données ci-dessous, le code CURL correspondant pour vérifier le token est le suivant :

```shell theme={null}
curl 'https://accounts.hcaptcha.com/demo' \
  --data-raw 'email=&g-recaptcha-response={token}&h-captcha-response={token}'
```

Le code Python correspondant pour vérifier le token est le suivant :

```python theme={null}
import requests

token = '{token}'

data = {
    'email': '',
    'g-recaptcha-response': token,
    'h-captcha-response': token
}

response = requests.post('https://accounts.hcaptcha.com/demo',
                        data=data)

if response.status_code == 200:
    print(response.text)

```

Ensuite, nous observons que la console a produit ce résultat :

<p>
  <img src="https://cdn.acedata.cloud/87f51z.png" width="500" className="m-auto" />
</p>

Enfin, nous avons réussi à passer la vérification du captcha hCaptcha.

De plus, si vous souhaitez générer le code d'intégration correspondant, vous pouvez le copier directement, par exemple, le code CURL est le suivant :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/token/hcaptcha' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
  "website_url": "https://accounts.hcaptcha.com/demo"
}'
```

Le code d'intégration Python est le suivant :

```python theme={null}
import requests

url = "https://api.acedata.cloud/captcha/token/hcaptcha"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "website_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
    "website_url": "https://accounts.hcaptcha.com/demo"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

## Mode asynchrone (async)

Par défaut, l'API est synchrone et bloquante : une requête attendra jusqu'à ce que le traitement du token soit terminé avant de renvoyer une réponse. Si vous effectuez une rotation de plusieurs solveurs (multi-solver rotation) et souhaitez « soumettre une tâche et obtenir immédiatement un task\_id, puis planifier d'autres solveurs et revenir plus tard pour obtenir le résultat », vous pouvez passer `async: true` dans le corps de la requête.

En passant `async: true`, l'interface renverra immédiatement un `task_id`, sans bloquer l'attente :

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "trace_id": "2efa9340-b21b-4e26-9e14-4aac95f343ab",
  "status": "processing"
}
```

Ensuite, utilisez ce `task_id` pour interroger `POST /captcha/tasks` (il est conseillé de le faire toutes les 3 à 5 secondes) pour obtenir le résultat :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/captcha/tasks' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002"
}'
```

En cours de traitement, cela renverra `status: processing` :

```json theme={null}
{ "success": true, "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002", "status": "processing" }
```

Une fois le traitement terminé, cela renverra `status: ready` et le token :

```json theme={null}
{
  "success": true,
  "task_id": "61138bb6-19aa-11ec-a9c8-0242ac110002",
  "status": "ready",
  "token": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1Ni......"
}
```

Explication des frais : en mode asynchrone, la création de tâches et l'interrogation « en cours de traitement » ne sont pas facturées ; **vous ne serez facturé qu'une seule fois lorsque vous obtiendrez le token avec succès** (au même prix que le mode synchrone). Par conséquent, annuler les tâches non terminées lors de la rotation ne générera pas de frais. `/captcha/tasks` est commun à toutes les interfaces de captcha (token et séries de reconnaissance, comme hcaptcha, recaptcha2, recaptcha3, recognition/\*, etc.), vous pouvez interroger avec le même `task_id`.

## Gestion des erreurs

Lors de l'appel de l'API, si une erreur se produit, l'API renverra le code d'erreur et les informations correspondantes. Par exemple :

* `400 token_mismatched` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `400 api_not_implemented` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `401 invalid_token` : Non autorisé, token d'autorisation invalide ou manquant.
* `429 too_many_requests` : Trop de requêtes, vous avez dépassé la limite de taux.
* `500 api_error` : Erreur interne du serveur, quelque chose s'est mal passé sur le serveur.

### Exemple de réponse d'erreur

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusion

Grâce à ce document, vous avez compris comment utiliser l'API de reconnaissance du protocole hCaptcha pour permettre aux utilisateurs de ne pas avoir à reconnaître et cliquer sur les images de captcha hCaptcha, mais simplement en soumettant la clé du site pour réaliser le décodage automatique en arrière-plan et compléter la vérification. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n'hésitez pas à contacter notre équipe de support technique.
