解决表单验证码问题,无需提交表单/单击按钮(使用回调)

问题描述 投票:0回答:1

我正在尝试从网站上尝试抓取来解决重新捕获问题

通常的工作方式是,验证码在表单内,我将验证码数据发送到求解验证码api(即使用DBC),它们返回令牌]]

我将令牌放入验证码输入(#g-recaptcha-response)内,即使在我提交表单时绿色支票也没有出现,它也会被接受

但是当验证码的绿色检查出现时,验证码以另一种方式解决后,此网站会自动显示我要剪贴的信息,页面会更新新信息

所以我的问题是,当我将令牌放入验证码输入中时,有没有方法可以提交验证码解决的事件(或绿色检查出现时发生的任何事情……我猜是某种回调)而无需提交表单?

编辑:

通过探索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();

    }
}

im试图从网站上获取一个Recaptcha,我通常试图以这种方式工作,captcha在表单内部,我将captcha数据发送到一个解决captcha api(im使用DBC),他们...

javascript node.js recaptcha puppeteer
1个回答
0
投票

我找到了答案,以防万一有人在您的浏览器控制台中出现此问题,并在此对象___grecaptcha_cfg上播放以发现回调地雷在这里

© www.soinside.com 2019 - 2024. All rights reserved.