Puppeteer中的功能运行评估与开发控制台中的功能不同

问题描述

我正在尝试使用Puppeteer解决页面上的验证码。我已经正确解决了验证码答案,并且正在触发验证码的data-callback函数在这种情况下,它是handleCaptcha('ANSWER')。如果我在开发人员控制台中运行此功能,它将接受答案并移至下一页。如果我在puppeteer中使用page[0].evaluate(`handleCaptcha("${answer}")`);运行它,它将刷新页面

代码如下:

twoClient = new Client(global.twocaptchakey,{
                timeout: 300000,polling: 5000,throwErrors: true
            });

            // This function takes between 10-300 seconds
            const response = await twoClient.decodeRecaptchaV2({
                googlekey: global.sitekey,pageurl: page[0].url()
            });

            const answer = response._text;

            console.log("Captcha Answer:");
            console.log(answer);
            //Here is the problem code
            page[0].evaluate(`handleCaptcha("${answer}")`);
            // page[0].evaluate(answer => {
            //     handleCaptcha(answer);
            // },answer)
            
            //Make sure that no code running later interferes with this
            await page[0].waitFor(10000);

这使用了Infosimple's Node TwoCaptcha wrapper

我已经尝试了evaluate()的两种变体,单引号和双引号等。evaluate()函数可以正常工作(在警报上测试)。当我在控制台中运行handleCaptcha('ANSWER');时,我使用上面记录的答案,因此我知道这两个函数正在运行相同的东西。

Here是库中弹出的同一错误。我注意到在两种情况下,这都是在PerimeterX页面上发生的。他们有可能修改Puppeteer的行为吗?

如果需要的话,here是完整代码(大部分来自ramsessalcedo / chegg-bot)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)