Guías
Encontrar los parámetros de reCAPTCHA
Esta página se tradujo automáticamente de la versión en chino y puede contener errores. Prevalece la versión en chino.
Para crear una tarea de reCAPTCHA necesitas websiteURL (la dirección de la página donde aparece el captcha) y websiteKey (la clave del sitio); v3 además requiere pageAction. Si simulas el envío con herramientas como Selenium, también necesitas conocer la función callback. Todo esto se puede encontrar en las herramientas de desarrollo del navegador (F12).
La forma más rápida: script de búsqueda automática
Sección titulada «La forma más rápida: script de búsqueda automática»Abre la página donde aparece el captcha, pulsa F12 para abrir la consola (Console), pega el siguiente código y ejecútalo:
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.function findRecaptchaClients() { if (typeof ___grecaptcha_cfg === 'undefined') return []; return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => { const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' }; const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object'); objects.forEach(([toplevelKey, toplevel]) => { const found = Object.entries(toplevel).find( ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value, ); if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI; if (found) { const [sublevelKey, sublevel] = found; data.sitekey = sublevel.sitekey; const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback'; const callback = sublevel[callbackKey]; if (!callback) { data.callback = null; data.function = null; } else { data.function = callback; const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join(''); data.callback = `___grecaptcha_cfg.clients${keys}`; } } }); return data; });}
findRecaptchaClients();En el resultado, sitekey es el websiteKey, pageurl es el websiteURL, version indica si es v2 o v3, y function y callback son la función callback:
[ { "id": "0", "version": "V2", "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "function": "onSuccess", "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']", "pageurl": "https://www.google.com/recaptcha/api2/demo" }]Si devuelve un arreglo vacío, la página aún no ha cargado reCAPTCHA; vuelve a ejecutarlo cuando aparezca el captcha.
websiteKey y websiteURL
Sección titulada «websiteKey y websiteURL»En la pestaña Network, busca anchor y localiza una solicitud como esta:
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=...&hl=en&size=normal- El valor que sigue a
k=es elwebsiteKey. - En
websiteURLva la dirección completa de la página donde aparece el captcha (normalmente es elRefererde esta solicitud).
También puedes buscar data-sitekey en el código fuente de la página.
pageAction (v3)
Sección titulada «pageAction (v3)»pageAction es el action que la página pasa al llamar a grecaptcha.execute(clave del sitio, {action: '...'}), y debe coincidir con el de la página.
Método 1: buscar en el código fuente. En la pestaña Sources de las herramientas de desarrollo, haz clic derecho y elige “Search in all files”. En v3 normal busca .execute(; en v3 Enterprise busca .enterprise.execute, y mira el action que aparece a continuación:
grecaptcha.ready(function () { grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l', { action: 'login' }).then(function (token) { // ... });});Aquí pageAction es login.
Método 2: punto de interrupción. Si el código está ofuscado y la búsqueda no encuentra nada, ejecuta en la consola debug(grecaptcha.execute) (en Enterprise, debug(grecaptcha.enterprise.execute)) y realiza en la página la acción que dispara la verificación (por ejemplo, hacer clic en iniciar sesión). Cuando el depurador se detenga, mira el valor de action en Scope, en el panel de la derecha.
Un sitio puede usar distintos action en pasos diferentes (por ejemplo, al registrarse primero signup/submit_email y luego signup/success); usa el valor del paso que quieres superar. Pulsa F8 para continuar la ejecución y ver el siguiente action.
Función callback
Sección titulada «Función callback»Cuando rellenas el token en el navegador con Selenium u otras herramientas, después debes llamar a la función callback de la página para avisarle de que la verificación ha terminado:
- Busca
data-callbacken la pestaña Elements; su valor es el nombre de la función callback, por ejemplodata-callback="onSuccess". - O busca
grecaptcha.rendery mira el parámetrocallback. - O consulta
___grecaptcha_cfg.clientsen la consola, o usa el script de búsqueda automática de arriba.
Cómo llamarla:
driver.execute_script("onSuccess(arguments[0])", g_recaptcha_response)Algunas páginas no tienen función callback; en ese caso, rellena el token en el cuadro de texto g-recaptcha-response y envía el formulario directamente. Para el flujo completo, consulta Completar reCAPTCHA con un token.