Verwenden Sie ein Plugin, um den Personenverkehr zu simulieren
import NextCaptcha from 'nextcaptcha-ts';
import puppeteer from 'puppeteer';
Öffnen Sie dann eine Chrome-Instanz und navigieren Sie zur Demoseite.
const url = "https://www.google.com/recaptcha/api2/demo"
const browser = await puppeteer.launch({});
const page = await browser.newPage();
await page.goto(url, {
waitUntil: 'networkidle0',
});
Der nächste Schritt besteht darin, den CAPTCHA-Websiteschlüssel und die Website-URL für den
NextCaptcha-Client zu ermitteln, der die Textlösung zurückgibt. Speichern Sie sie in der Variable data.solution.gRecaptchaResponse.
const data = await client.recaptchaV2({websiteKey, websiteURL: url});
console.log('gRecaptchaResponse: ', data.solution.gRecaptchaResponse);
console.log('submitting form .. ');
await Promise.all([
page.click('#recaptcha-demo-submit'),
page.waitForNavigation({ waitUntil: "networkidle0" })
]);
console.log('making a screenshot ...');
await page.screenshot({ path: 'screenshot.png' });
console.log('closing browser .. ');
await browser.close();
import NextCaptcha from 'nextcaptcha-ts';
import puppeteer from 'puppeteer';
const url = "https://bot.sannysoft.com"
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
await page.goto(url, {
waitUntil: 'networkidle0',
});
console.log('making a screenshot ...');
await page.screenshot({ path: 'screenshot.png' });
await sleep(30000)
console.log('closing browser .. ');
await browser.close();
function sleep(time = 1000) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true)
}, time)
})
}
Es wird angezeigt, dass WebDrive vorhanden ist (fehlgeschlagen).
Zugriff verweigert! Sannysoft hat nicht-menschlichen Datenverkehr erkannt und unseren Bot blockiert. Hier kommt das Puppeteer-Extra-Plugin-Stealth zur Hilfe, ein Plugin für Puppeteer-Extra und Playwright-Extra zur Verhinderung der Erkennung. Es lässt Ihren Datenverkehr manueller aussehen und verhindert, dass er blockiert wird, z. B. mit CAPTCHAs.
Installieren Sie zunächst das Stealth-Paket
import puppeteer from 'puppeteer-extra';
import puppeteer-extra-plugin-stealth from 'puppeteer-extra-plugin-stealth';
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
dann verwenden Sie den Puppenspieler als normale
const url = "https://bot.sannysoft.com"
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
await page.goto(url, {
waitUntil: 'networkidle0',
});
console.log('making a screenshot ...');
await page.screenshot({ path: 'screenshot.png' });
await sleep(30000)
console.log('closing browser .. ');
await browser.close();
function sleep(time = 1000) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true)
}, time)
})
}
Schauen wir uns die Ausgabe an:
Erfolg! Dies hilft, CAPTCHA mit Puppeteer zu umgehen.