Перейти к содержимому
СтатусПанель

Руководства

Как найти параметры reCAPTCHA

Эта страница переведена с китайской версии машинным переводом и может содержать ошибки. Приоритет имеет китайская версия.

Для создания задачи reCAPTCHA нужны websiteURL (адрес страницы, на которой появляется капча) и websiteKey (ключ сайта), а для v3 ещё и pageAction. Если вы отправляете токен через Selenium или похожий инструмент, понадобится и callback-функция. Всё это можно найти в инструментах разработчика браузера (F12).

Самый быстрый способ: скрипт автоматического поиска

Заголовок раздела «Самый быстрый способ: скрипт автоматического поиска»

Откройте страницу с капчей, нажмите F12, перейдите в консоль (Console), вставьте и запустите:

find-recaptcha-clients.js
// 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();

В результате sitekey — это websiteKey, pageurl — это websiteURL, version показывает, v2 это или v3, а function и callback — 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"
}
]

Пустой массив означает, что reCAPTCHA на странице ещё не загрузилась. Запустите скрипт снова, когда капча появится.

На вкладке Network найдите по запросу anchor запрос вида:

https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=...&hl=en&size=normal
  • Значение после k= — это websiteKey.
  • В websiteURL укажите полный адрес страницы, на которой появляется капча (обычно это Referer данного запроса).

Также можно поискать data-sitekey в исходном коде страницы.

pageAction — это значение action, которое страница передаёт в grecaptcha.execute(ключ_сайта, {action: '...'}). Оно должно совпадать со значением на странице.

Способ 1: поиск по исходному коду. На вкладке Sources нажмите правой кнопкой мыши и выберите «Search in all files». Для обычной v3 ищите .execute(, для v3 Enterprise — .enterprise.execute, и посмотрите на action после него:

grecaptcha.ready(function () {
grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l', { action: 'login' }).then(function (token) {
// ...
});
});

Здесь pageAction равен login.

Способ 2: точка останова. Если код обфусцирован и поиск ничего не находит, выполните в консоли debug(grecaptcha.execute) (для Enterprise — debug(grecaptcha.enterprise.execute)), затем выполните на странице действие, которое запускает проверку (например, нажмите «Войти»). Когда выполнение остановится, посмотрите значение action в панели Scope справа.

Сайт может использовать разные action на разных шагах (например, при регистрации сначала signup/submit_email, затем signup/success). Берите значение для того шага, который вам нужно пройти. Нажмите F8, чтобы продолжить выполнение и увидеть следующий action.

Когда вы подставляете токен на страницу через Selenium или похожий инструмент, после этого нужно вызвать callback-функцию страницы, чтобы сообщить ей, что проверка пройдена:

  • Найдите data-callback на вкладке Elements: его значение — имя callback-функции, например data-callback="onSuccess".
  • Либо найдите grecaptcha.render и посмотрите параметр callback.
  • Либо посмотрите ___grecaptcha_cfg.clients в консоли или воспользуйтесь скриптом автоматического поиска выше.

Как вызвать:

driver.execute_script("onSuccess(arguments[0])", g_recaptcha_response)

У некоторых страниц нет callback-функции: достаточно подставить токен в текстовое поле g-recaptcha-response и сразу отправить форму. Полный порядок действий см. в разделе Как пройти reCAPTCHA с помощью токена.