я пытаюсь найти ответ с веб-сайта, который я пытаюсь очистить
обычно так оно и есть, капча находится внутри формы, я отправлю данные капчи на решение капчи API (я использую DB C), они возвращают токен
Я помещаю токен в поле ввода капчи (#g-recaptcha-response)
, и даже если зеленая галочка не отображается, когда я отправляю форму, она будет принята
но этот веб-сайт автоматически отображает информацию, которую я хочу удалить, как только капча решается другим способом, когда появляется зеленая проверка капчи, страница обновляется с новой информацией
, поэтому мой вопрос, когда я Поместите токен в поле ввода капчи. Есть ли способ инициировать событие, разрешенное капчей (или что-то происходит, когда появляется зеленая галочка. Я предполагаю какой-то обратный вызов) без отправки формы?
edit:
, исследуя конфигурацию recaptcha, я нашел это
___grecaptcha_cfg.clients[0].L.L.callback
, которое указывает на это
function verifyCallback(e)
, но я не уверен, как вызвать его
async function init_puppeteer() {
const global_browser = await puppeteer.launch({headless: false , slowMo : 10 , args: ['--no-sandbox', '--disable-setuid-sandbox' , ]});
const page = await global_browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
await page.setViewport({width: 1200, height: 1500});
try {
await page.goto('https://example.com', {timeout: 60000})
.catch(function (error) {
throw new Error('TimeoutBrows');
});
await page.waitForSelector('input[name="url"]');
await page.type('input[name="url"]', 'example.com' , {delay: 10})
await page.click('button.css-117i75i-button');
await page.waitForSelector('#g-recaptcha' ,{visible : true });
const datakey = await page.$eval('#g-recaptcha' , el => el.getAttribute('data-sitekey'));
const cap = await solvecaptcha(datakey ,page.url() );
await page.$eval('#g-recaptcha-response', (el , cap ) => el.value = cap , cap );
console.log('done!');
}
catch(e)
{
console.log('--------ERRRO--------------------------');
console.log(e);
await page.close();
}
}