Peu importe le nombre de fois où les gens ont écrit que le captcha a survécu depuis longtemps et ne fonctionne plus aussi efficacement que ses développeurs l'auraient souhaité au départ, cependant, les propriétaires de ressources Internet continuent pour protéger leurs projets avec des captchas. Mais quel est le captcha le plus populaire de notre époque ?
Clarification – tout le code qui sera présenté dans cet article a été préparé sur la base de la documentation API du service de reconnaissance captcha 2captcha
C'est recaptcha. Recaptcha V2, V3, etc., créé par Google en 2007. Cela fait de nombreuses années que le premier recaptcha est apparu, mais il continue de tenir le haut du pavé, perdant périodiquement du terrain face à ses concurrents puis le regagnant. Mais recaptcha n'a jamais pris la 2ème place en popularité, malgré toutes ses imperfections face aux réseaux de neurones.
Il y a eu un grand nombre de tentatives pour créer un "recaptcha killer", certaines ont eu moins de succès, certaines ne ressemblaient qu'à une menace pour le recaptcha, mais se sont en fait avérées n'être rien. Pourtant, il n'en demeure pas moins que le désir des concurrents de faire quelque chose de meilleur et de plus fiable que le recaptcha démontre sa popularité.
Si vous ne faites confiance à aucun module tiers, j'ai préparé le code le plus universel qui peut être inséré dans votre script Python avec des modifications mineures et résoudre automatiquement le recaptcha. Voici le code lui-même :
demandes d'importation
temps d'importation
API_KEY = 'Your_API_2Captcha_key' def solve_recaptcha_v2(site_key, url): payload = { 'key': API_KEY, 'method': 'userrecaptcha', 'googlekey': site_key, 'pageurl': url, 'json': 1 } response = requests.post('https://2captcha.com/in.php', data=payload) result = response.json() if result['status'] != 1: raise Exception(f"Error when sending captcha: {result['request']}") captcha_id = result['request'] while True: time.sleep(5) response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1") result = response.json() if result['status'] == 1: print("Captcha solved successfully.") return result['request'] elif result['request'] == 'CAPCHA_NOT_READY': print("The captcha has not been solved yet, waiting...") continue else: raise Exception(f"Error while solving captcha: {result['request']}") def solve_recaptcha_v3(site_key, url, action='verify', min_score=0.3): payload = { 'key': API_KEY, 'method': 'userrecaptcha', 'googlekey': site_key, 'pageurl': url, 'version': 'v3', 'action': action, 'min_score': min_score, 'json': 1 } response = requests.post('https://2captcha.com/in.php', data=payload) result = response.json() if result['status'] != 1: raise Exception(f"Error when sending captcha: {result['request']}") captcha_id = result['request'] while True: time.sleep(5) response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1") result = response.json() if result['status'] == 1: print("Captcha solved successfully.") return result['request'] elif result['request'] == 'CAPCHA_NOT_READY': print("The captcha has not been solved yet, waiting...") continue else: raise Exception(f"Error while solving captcha: {result['request']}") # Usage example for reCAPTCHA v2 site_key_v2 = 'your_site_key_v2' url_v2 = 'https://example.com' recaptcha_token_v2 = solve_recaptcha_v2(site_key_v2, url_v2) print(f"Received token for reCAPTCHA v2: {recaptcha_token_v2}") # Usage example for reCAPTCHA v3 site_key_v3 = 'your_site_key_v3' url_v3 = 'https://example.com' recaptcha_token_v3 = solve_recaptcha_v3(site_key_v3, url_v3) print(f"Received token for reCAPTCHA v3: {recaptcha_token_v3}")
Cependant, avant d'utiliser le script fourni, lisez attentivement les recommandations du service de reconnaissance d'un type particulier de recaptcha afin d'avoir une idée du fonctionnement de ce code.
N'oubliez pas non plus d'insérer votre clé API dans le code et, bien sûr, d'installer les modules nécessaires.
Comme dans le cas de Python, pour ceux qui n'aiment pas les solutions toutes faites, vous trouverez ci-dessous un script pour résoudre un captcha à l'aide du langage de programmation node js. Je vous rappelle de ne pas oublier d'installer les modules nécessaires au fonctionnement du code, notamment :
axios
Vous pouvez l'installer en utilisant cette commande –
npm installer axios
Voici le code lui-même :
const axios = require('axios'); const sleep = require('util').promisify(setTimeout); const API_KEY = 'YOUR_API_KEY_2CAPTCHA'; // Replace with your real API key // Function for reCAPTCHA v2 solution async function solveReCaptchaV2(siteKey, pageUrl) { try { // Sending a request for the captcha solution const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, { params: { key: API_KEY, method: 'userrecaptcha', googlekey: siteKey, pageurl: pageUrl, json: 1 } }); if (sendCaptchaResponse.data.status !== 1) { throw new Error(`Error when sending captcha: ${sendCaptchaResponse.data.request}`); } const requestId = sendCaptchaResponse.data.request; console.log(`Captcha sent, request ID: ${RequestId}`); // Waiting for the captcha solution while (true) { await sleep(5000); // Waiting 5 seconds before the next request const getResultResponse = await axios.get(`http://2captcha.com/res.php`, { params: { key: API_KEY, action: 'get', id: requestId, json: 1 } }); if (getResultResponse.data.status === 1) { console.log('Captcha solved successfully.'); return getResultResponse.data.request; } else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') { console.log('The captcha has not been solved yet, waiting...'); } else { throw new Error(`Error while solving captcha: ${getResultResponse.data.request}`); } } } catch (error) { console.error(`An error occurred: ${error.message}`); } } // Function for reCAPTCHA v3 solution async function solveReCaptchaV3(siteKey, pageUrl, action = 'verify', minScore = 0.3) { try { // Sending a request for the captcha solution const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, { params: { key: API_KEY, method: 'userrecaptcha', googlekey: siteKey, pageurl: pageUrl, version: 'v3', action: action, min_score: minScore, json: 1 } }); if (sendCaptchaResponse.data.status !== 1) { throw new Error(`Error when sending captcha: ${sendCaptchaResponse.data.request}`); } const requestId = sendCaptchaResponse.data.request; console.log(`Captcha sent, request ID: ${RequestId}`); // Waiting for the captcha solution while (true) { await sleep(5000); // Waiting 5 seconds before the next request const getResultResponse = await axios.get(`http://2captcha.com/res.php`, { params: { key: API_KEY, action: 'get', id: requestId, json: 1 } }); if (getResultResponse.data.status === 1) { console.log('Captcha solved successfully.'); return getResultResponse.data.request; } else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') { console.log('The captcha has not been solved yet, waiting...'); } else { throw new Error(`Error while solving captcha: ${getResultResponse.data.request}`); } } } catch (error) { console.error(`An error occurred: ${error.message}`); } } // Usage example for reCAPTCHA v2 (async () => { const siteKeyV2 = 'YOUR_SITE_KEY_V2'; // Replace with the real site key const pageUrlV2 = 'https://example.com '; // Replace with the real URL of the page const tokenV2 = await solveReCaptchaV2(siteKeyV2, pageUrlV2); console.log(`Received token for reCAPTCHA v2: ${tokenV2}`); })(); // Usage example for reCAPTCHA v3 (async () => { const siteKeyV3 = 'YOUR_SITE_KEY_V3'; // Replace with the real site key const pageUrlV3 = 'https://example.com '; // Replace with the real URL of the page const action = 'homepage'; // Replace with the corresponding action const MinScore = 0.5; // Set the minimum allowed score const tokenV3 = await solveReCaptchaV3(siteKeyV3, pageUrlV3, action, minScore); console.log(`Received token for reCAPTCHA v3: ${tokenV3}`); })();
N'oubliez pas non plus d'insérer votre clé API dans le code, au lieu de
"'VOTRE_API_KEY_2CAPTCHA'"
Eh bien, pour ceux qui n'ont pas l'habitude d'utiliser des modules prêts à l'emploi, voici le code pour l'intégration directement. Le code utilise des fonctions PHP standards telles que file_get_contents et json_decode, voici le code lui-même :
function solveRecaptchaV2($apiKey, $siteKey, $url) { $requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&json=1"; $response = file_get_contents($requestUrl); $result = json_decode($response, true); if ($result['status'] != 1) { throw new Exception("Error when sending captcha: " . $result['request']); } $captchaId = $result['request']; while (true) { sleep(5); $resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1"; $response = file_get_contents($resultUrl); $result = json_decode($response, true); if ($result['status'] == 1) { return $result['request']; } elseif ($result['request'] == 'CAPCHA_NOT_READY') { continue; } else { throw new Exception("Error while solving captcha: " . $result['request']); } } } function solveRecaptchaV3($apiKey, $siteKey, $url, $action = 'verify', $minScore = 0.3) { $requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&version=v3&action={$action}&min_score={$minScore}&json=1"; $response = file_get_contents($requestUrl); $result = json_decode($response, true); if ($result['status'] != 1) { throw new Exception("Error when sending captcha: " . $result['request']); } $captchaId = $result['request']; while (true) { sleep(5); $resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1"; $response = file_get_contents($resultUrl); $result = json_decode($response, true); if ($result['status'] == 1) { return $result['request']; } elseif ($result['request'] == 'CAPCHA_NOT_READY') { continue; } else { throw new Exception("Error while solving captcha: " . $result['request']); } } } // Usage example for reCAPTCHA v2 $apiKey = 'YOUR_API_KEY_2CAPTCHA'; $siteKeyV2 = 'YOUR_SITE_KEY_V2'; $urlV2 = 'https://example.com'; try { $tokenV2 = solveRecaptchaV2($apiKey, $siteKeyV2, $urlV2); echo "Received token for reCAPTCHA v2: {$tokenV2}\n"; } catch (Exception $e) { echo "Error: " . $e->getMessage() . "\n"; } // Usage example for reCAPTCHA v3 $siteKeyV3 = 'YOUR_SITE_KEY_V3'; $urlV3 = 'https://example.com'; $action = 'homepage'; // Specify the appropriate action $MinScore = 0.5; // Specify the minimum allowed score try { $tokenV3 = solveRecaptchaV3($apiKey, $siteKeyV3, $urlV3, $action, $minScore); echo "Received token for reCAPTCHA v3: {$tokenV3}\n"; } catch (Exception $e) { echo "Error: " . $e->getMessage() . "\n"; } ?> I also remind you of the need to replace some parameters in the code, in particular: $apiKey = 'YOUR_API_KEY_2CAPTCHA'; $siteKeyV2 = 'YOUR_SITE_KEY_V2'; $urlV2 = 'https://example.com';Ainsi, en utilisant les exemples donnés, vous pouvez résoudre la plupart des problèmes liés à la reconnaissance recaptcha. Vous pouvez poser des questions dans les commentaires s'il en reste !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!