Migrer une intégration reCAPTCHA de CapSolver vers solvethree

Par solvethree6 min de lecture

Changer le nom d’hôte de l’API ne suffit pas. Remplacez clientKey et l’objet imbriqué task de CapSolver par une authentification Bearer et un corps de requête à plat, puis adaptez la récupération et la soumission du résultat.

Sur cette page

Vérifier la prise en charge de la tâche et configurer le site

solvethree utilise reCAPTCHA v3 Enterprise par défaut et accepte aussi la version v3 standard. Ses autres produits publics sont Kasada et Ticketmaster TMPT. Il ne prend pas en charge reCAPTCHA v2, hCaptcha, Turnstile ni la résolution par extension de navigateur : ce n’est donc pas un remplacement universel de toutes les intégrations CapSolver.

Avant d’envoyer une tâche reCAPTCHA, configurez le site cible dans la console et assurez-vous qu’un profil actif est disponible pour votre espace de travail. Envoyer un nom d’hôte et une action ne crée pas ce profil. Ne supprimez pas le champ websiteKey de CapSolver en supposant que le reste de la requête suffit.

Remplacer l’authentification et le corps de requête

La requête initiale utilise clientKey de CapSolver et une enveloppe de tâche propre au fournisseur :

Avant · enveloppe de tâche CapSolver
{
  "clientKey": "CAPSOLVER_API_KEY",
  "task": {
    "type": "ReCaptchaV3Task",
    "websiteURL": "https://accounts.example.com/login",
    "websiteKey": "PUBLIC_SITE_KEY",
    "pageAction": "login",
    "isEnterprise": true,
    "proxy": "http://user:[email protected]:8080"
  }
}

Pour solvethree, envoyez le corps à plat ci-dessous à POST https://api.solvethree.com/v1/tasks. Définissez l’en-tête Authorization sur Bearer suivi de la clé API de votre espace de travail. Gardez cette clé côté serveur ; ne reprenez pas clientKey dans le nouveau corps JSON.

reCAPTCHA Enterprise · structure de la requête
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://user:[email protected]:8080",
  "requestId": "example_login_001"
}
Modifications des champs de la requête Enterprise ci-dessus
Modifications des champs de la requête Enterprise ci-dessus
Donnée d’entrée CapSolverCorrespondance solvethree
clientKeyDéplacez l’authentification dans l’en-tête Bearer en utilisant une clé API d’espace de travail solvethree.
taskSupprimez l’enveloppe ; les champs de la tâche doivent figurer au premier niveau.
task.type et isEnterpriseN’envoyez aucun de ces champs. recaptchaType vaut enterprise-v3 par défaut ; définissez-le sur v3 pour la version v3 standard.
websiteURLUtilisez uniquement le nom d’hôte dans site : accounts.example.com, sans le schéma ni le chemin /login. N’envoyez pas de champ url.
websiteKeyOmettez-le du corps de tâche public. Le site doit déjà disposer d’un profil actif accessible à l’espace de travail.
pageActionEnvoyez l’action souhaitée dans action ; l’exemple conserve login.
proxyFournissez une URL de proxy HTTP ou HTTPS. Exactement un des champs proxy ou proxyCandidates est requis.

L’exemple est une requête Enterprise, car il laisse recaptchaType à sa valeur par défaut. Sélectionnez explicitement la version v3 standard si votre cible l’utilise ; ne convertissez pas tous les types de tâches CapSolver vers la valeur Enterprise par défaut.

Revoir les hypothèses ProxyLess avant de migrer

Une tâche CapSolver ProxyLess n’a pas d’équivalent direct sans proxy ici : solvethree exige un proxy fourni par l’appelant. Si votre intégration actuelle ne gère pas de proxy, il s’agit d’une modification de l’intégration, pas d’un renommage de champ. Ne copiez pas non plus une configuration de proxy SOCKS dans la nouvelle requête ; solvethree accepte les URL de proxy HTTP et HTTPS.

Commencez avec un seul proxy afin que la route utilisée pour la résolution et la soumission soit sans ambiguïté. Si vous utilisez plutôt proxyCandidates, fournissez au maximum douze URL de proxy HTTP ou HTTPS distinctes, sans chemin, paramètres de requête ni fragment. Ces candidats permettent au service d’essayer d’autres sorties réseau ; ils ne garantissent pas qu’un proxy ou une cible fonctionnera.

Remplacer getTaskResult par le cycle de vie des tâches

CapSolver récupère les résultats asynchrones via getTaskResult avec clientKey et taskId. solvethree les récupère via GET /v1/tasks/:id avec une authentification Bearer. Mettez à jour l’analyseur de résultats ainsi que l’appel HTTP ; les champs de statut et d’erreur de CapSolver relèvent d’un contrat différent.

  1. 1.

    Vérifier d’abord la réponse HTTP

    Traitez les réponses HTTP non réussies avant de lire le contenu d’une réponse réussie. Une erreur de requête HTTP et une tâche de résolution échouée nécessitent des traitements distincts.

  2. 2.

    Examiner la tâche renvoyée lors de la création

    La création reCAPTCHA attend jusqu’à 15 secondes par défaut ; la réponse peut donc déjà indiquer un état final. Seul ready contient une solution utilisable. Si la tâche est pending ou solving, récupérez-la avec l’ID de tâche solvethree renvoyé.

  3. 3.

    Arrêter les interrogations lorsque la tâche est prête ou a échoué

    Pour ready, transmettez la solution à votre code de soumission. Pour failed, examinez errorCode et error, puis cessez d’interroger cette tâche. Les résolutions échouées sont remboursées. Ne réessayez pas aveuglément avec des données invalides inchangées et ne supposez pas que chaque échec indique un crédit insuffisant.

Lors d’une migration progressive, associez chaque ID de tâche à son fournisseur. Terminez les tâches CapSolver existantes via CapSolver et acheminez les nouvelles tâches solvethree via solvethree. Normalisez leurs résultats dans votre adaptateur plutôt que d’envoyer l’ID de tâche de l’ancien fournisseur à la nouvelle API.

Renvoyer plus qu’une chaîne de jeton depuis votre adaptateur

Utilisez solution.token lorsque vous soumettez le résultat reCAPTCHA à la cible prévue. Conservez également les valeurs userAgent et secChUa renvoyées, et utilisez le proxy qui a fonctionné pour la soumission. Si votre adaptateur actuel ne renvoie qu’une chaîne de jeton, modifiez-le pour transmettre ces informations jusqu’au client chargé de la soumission.

Si un jeton prêt est rejeté, examinez la requête applicative sortante avant de payer une autre résolution. Vérifiez qu’elle contient le nouveau jeton — pas un ID de tâche ni un ancien jeton — et que la soumission utilise l’identité du navigateur renvoyée, le proxy qui a fonctionné et l’URL cible prévue. Une tâche ready signifie qu’une solution a été générée, pas que la cible a accepté votre requête suivante.

Récupérer les requêtes de création ayant dépassé le délai sans dupliquer le travail

L’exemple après migration inclut requestId pour la récupération. Générez-en un pour chaque nouvelle tâche logique et conservez-le avec les données exactes de la requête. Il doit contenir de 1 à 64 lettres ASCII, chiffres, traits de soulignement ou traits d’union. Le réutiliser avec la même requête de tâche renvoie la tâche existante ; l’utiliser avec des données différentes provoque un conflit.

Si la création dépasse le délai, récupérez la tâche si vous avez son ID, ou renvoyez le même corps avec le même requestId. Une réponse perdue ne prouve pas que la création a échoué. Ne générez pas un nouvel ID simplement parce que votre client a cessé d’attendre.

Dans le délai d’expiration de votre client, prévoyez l’attente par défaut de la création reCAPTCHA, jusqu’à 15 secondes, plus le temps réseau. L’interrogation GET répond sans attendre par défaut et accepte waitMs jusqu’à 15000. Placez waitMs dans les paramètres de l’URL, pas dans le JSON de la tâche, et tenez aussi compte de cette attente dans le délai d’expiration des interrogations.

Lancez votre première tâche.

Démarrez avec $5 de crédit dans votre espace de travail.

Créer un espace de travail
Migrer une intégration reCAPTCHA de CapSolver vers solvethree · solvethree