【发布时间】:2022-07-14 18:14:24
【问题描述】:
我正在尝试抓取一个网站。但是,当我尝试通过按下验证码复选标记来通过验证码时,它会为我提供解决验证码的图像。有时它会这样做,有时它只是在解决验证码后传递并导航到页面。
下面是我如何设置我的 puppeteer 实例和页面的代码。
puppeteer.use(StealthPlugin());
const chromeOptions = {
headless: false,
ignoreHTTPSErrors: true,
slowMo: 30,
args: ['--no-sandbox'],
}
const browser = await puppeteer.launch(chromeOptions);
const page = await browser.newPage();
await page.evaluateOnNewDocument(() => {
delete navigator.__proto__.webdriver;
});
await page.setUserAgent(randomUseragent.getRandom());
await page.setJavaScriptEnabled(true);
//page.setDefaultNavigationTimeout(0);
await page.goto(`pagetoscrape`, {
waitUntil: "domcontentloaded",
});
下面是我尝试解决验证码的方法。
await delay(6000);
const iframes = await page.$('iframe');
const frame = await iframes.contentFrame();
const a = await frame.$('#checkbox');
await a.click();
await delay(5000);
await page.screenshot({path: 'headless-test-result.png'});
console.log("Solving captcha........");
await page.waitForNavigation();
await delay(7000);
【问题讨论】:
-
根据我的经验,我可以建议您使用任何服务来解决验证码。当然,如果您需要它用于商业而不是用于教育目的,价格就绰绰有余了。
标签: javascript node.js puppeteer