@nazar21015 похоже на простое смещение, глубоко не рыл. Попробуй прогнать по онлайн деабфускаторам некоторые дают читаемый вид.
Там скорее всего простой трюк со смещением массива.
помогите вызвать CallbackFunction после ришения капчи
-
This post is deleted!
-
@GamiD супер, спасибо, все облазил, только это помогло! Сайт один сменил обычную Recaptcha 2 на Enterprise версию. Соответственно стандартный модуль решения рекапчи не пашет, точнее в моем случае он ее решает, но т.к. капча кастомная, то вставляется она не туда куда надо. Как надо делать: по инструкции @GamiD находите коллбек функции, скорее всего она будет содержать в своем названии "___grecaptcha_cfg.clients". Потом с помощью модуля https://community.bablosoft.com/topic/11187/captchacustom решаете капчу, ее нужно будет вручную настроить, вписать токен сайта. Я его взял из запроса, который ушел через стандартный модуль решения рекапчи. После решения результат оказывается в переменной [[RESPONSE]] Потом в действии выполнить яваскрипт в браузере вписываете строчку с найденной по инструкции callback функции:
___grecaptcha_cfg.clients[1].B.B.callback([[RESPONSE]]);Благодарности @GamiD за инструкцию и @GhostZ за суперский модуль
-
Возникла следующая проблема, название коллбэк функции меняется, а конкретно вот эта ее часть ___grecaptcha_cfg.clients[1].B.B.callback
Не знаю как часто, возможно раз в пару дней и скорее всего не из за меня а просто автоматом такая фича у этрерпрайз версии. Но все равно это черевато сливом денег на антикапчу и времени вникуда если вовремя это не отследить. Вопрос, как то можно это выпарсить название автоматически каким то яваскрипт запросом? -
@GamiD said in помогите вызвать CallbackFunction после ришения капчи:
@serrgo Попробуй код который выше дал засунуть в "Выполнить Javascript На Элементе" в селектор укажи путь во внутренности iframe и запустить
Столкнулся с такой же проблемой.
Уже все советы с форума перепробовал, не хочет выполнятся переход.Подскажите где искать данную функцию
-
@GamiD said in помогите вызвать CallbackFunction после ришения капчи:
@dobrok https://community.bablosoft.com/topic/15414/решение-recaptcha2-с-callback
а в той теме ссылка на эту тему
:D -
@GamiD said in помогите вызвать CallbackFunction после ришения капчи:
@dobrok https://community.bablosoft.com/topic/15414/решение-recaptcha2-с-callback
У меня hcaptcha, скачивал смотрел... не робит.
-
const findRecap = () => { function findRecaptchaClients() { // eslint-disable-next-line camelcase if (typeof (___grecaptcha_cfg) !== 'undefined') { // eslint-disable-next-line camelcase, no-undef 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 (typeof toplevel === 'object' && 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; }); } return []; } return findRecaptchaClients(); }; document.getElementById('g-recaptcha-response').value = [[CAPTCHA_RESPONSE]]; const recapData = findRecap(); const callbackPath = recapData[0].callback; try { eval(`${callbackPath}('${[[CAPTCHA_RESPONSE]]}')`); } catch (e) { console.log("Error when calling the callback:", e); }Лично мне помогает такое решение (в частности для ReCaptcha v2 Invisible):
- Поиск callback'а через этот скрипт, как уже было указано выше.
- Вставка токена, полученного от сервиса, в value для <textarea> с id/name начинающимся на g-recaptcha-response.
- Ну и после вызов найденного callback'а с переданным ему токеном.
*Если, конечно, кому-то это решение еще нужно спустя несколько лет. 👀
