Dans cet article, nous avons essayé de répondre à toutes les questions essentielles. Pour commencer à résoudre le problème, il faut d’abord déterminer quel système de protection est utilisé. Pour cela, vous pouvez consulter la liste des captchas et systèmes de protection antibot les plus populaires, qui présente des exemples visuels et des caractéristiques clés permettant d’identifier rapidement avec quoi vous avez affaire.
Si vous constatez que votre site utilise Cloudflare Challenge, l’étape suivante consiste à étudier plus en détail ses propriétés et son fonctionnement. Dans cet article, vous pouvez également consulter le guide d’intégration de Cloudflare Challenge afin de comprendre pleinement la façon dont il fonctionne sur votre site. Cela vous permettra non seulement de mieux connaître la protection en place, mais aussi de planifier correctement sa maintenance.
Travailler avec CapMonster Cloud via l’API comprend généralement les étapes suivantes :
type - TurnstileTask
websiteURL - URL de la page où le captcha est résolu
websiteKey - Clé Turnstile (n’importe quelle chaîne peut être transmise)
cloudflareTaskType - cf_clearance
htmlPageBase64 - La page HTML « Just a moment » encodée en Base64, renvoyée avec le code 403 lors de l’accès à un site protégé par ce mécanisme.
userAgent - User-Agent du navigateur. Transmettez uniquement l’UA actuel de Windows.
Vous devez également utiliser vos propres proxies pour cette tâche :
proxyType :
proxyAddress - Adresse IP du proxy (IPv4/IPv6).
proxyPort - Port du proxy.
proxyLogin - Identifiant du proxy.
proxyPassword - Mot de passe du proxy.
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"TurnstileTask",
"websiteURL":"https://example.com",
"websiteKey":"xxxxxxxxxx",
"cloudflareTaskType": "cf_clearance",
"htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0VCJomVuLjF7n0kdM0PXaPjpDsRcohxGr7hb2CE7WfcHpmQZ70goqEjdWxPsDhSVaKNTz9opxWguiNdWEEq_.SceWXIqfP7tnEb69f3bP0mixNqcWy_5P_9INpoAEqr1k7aYU0r45PT4gPr5pwHxedVySyLRdoBXIJasdTE52YOQ3NPdGWTwQ_3h2n_wYqqIvf0kCSAvimRrmsgZxomlyejwqPI6ZHi.w"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from 'playwright';
import {
CapMonsterCloudClientFactory,
ClientOptions,
TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';
// Paramètres — remplacez par vos valeurs
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // n'importe quelle chaîne peut être utilisée
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36';
// Paramètres proxy
const proxy = {
proxyType: 'http',
proxyAddress: '8.8.8.8',
proxyPort: 8080,
proxyLogin: 'proxyLogin',
proxyPassword: 'proxyPassword'
};
async function main() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Lancer le navigateur
const browser = await chromium.launch({
headless: false,
proxy: proxy.proxyAddress ? {
server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
username: proxy.proxyLogin,
password: proxy.proxyPassword
} : undefined
});
// Créer le contexte avec User-Agent requis et taille de fenêtre (optionnel)
const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });
// Créer la page et charger l'URL cible
const page = await context.newPage();
const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Statut de la requête initiale :', resp?.status());
// Obtenir le HTML de la page et convertir en Base64 pour CapMonster
const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');
// Créer la tâche Turnstile pour obtenir cf_clearance
const solveResult = await cmcClient.Solve(new TurnstileRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
cloudflareTaskType: 'cf_clearance',
htmlPageBase64: htmlBase64,
userAgent: USER_AGENT,
proxy: proxy.proxyAddress ? proxy : undefined
}));
const cf_clearance = solveResult?.solution?.cf_clearance;
if (!cf_clearance) {
console.error('Impossible d'obtenir cf_clearance depuis CapMonster :', solveResult);
await browser.close();
return;
}
console.log('cf_clearance obtenu :', cf_clearance);
// Ajouter le cookie cf_clearance au contexte du navigateur
await context.addCookies([{
name: 'cf_clearance',
value: cf_clearance,
domain: '.' + new URL(TARGET_URL).hostname,
path: '/',
httpOnly: true,
secure: true
}]);
console.log('Cookie cf_clearance ajouté avec succès au navigateur.');
// Rouvrir la page avec cf_clearance défini
const page2 = await context.newPage();
const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Statut de la requête après la définition de cf_clearance :', resp2?.status());
await browser.close();
console.log('Script terminé.');
}
main().catch(err => {
console.error('Une erreur est survenue :', err);
process.exit(1);
});
http.request.uri.path contains "/login"Si vous avez récupéré un site avec un captcha ou un autre système de protection déjà installé, mais sans accès au code, pas de panique ! Il est assez simple d’identifier quelle technologie est utilisée. Pour vérifier que tout fonctionne correctement, vous pouvez utiliser le service de reconnaissance CapMonster Cloud dans un environnement de test isolé, afin de vous assurer que le mécanisme de traitement des jetons et la logique de vérification fonctionnent correctement.
Dans le cas de Cloudflare Challenge, il suffit d’identifier le système, d’étudier son comportement et de vérifier que la protection fonctionne correctement. Dans cet article, nous avons montré comment reconnaître Cloudflare Challenge et où trouver les instructions pour son intégration ou sa reconfiguration, afin de maintenir la protection en toute confiance et de garder son fonctionnement sous contrôle.