问题描述
我正在尝试使用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 (将#修改为@)