Bypassare Recaptcha V2 con NodeJS e Puppeteer
Cosa imparerete
- Installa NodeJS e Webstorm IDE sul sistema operativo appena installato Ubuntu.
- Installa e importa i moduli anticaptchaofficial e puppeteer npm.
- Imparerete come inviare il modulo questo con Recaptcha con lo script NodeJS.
- Impara a scrivere uno script puppeteer che apre Chromium in modalità background e va su una pagina.
- Impara a fare uno screenshot di una pagina e a salvarlo sul disco.
- Impara a compilare i campi di un modulo di testo usando i selettori CSS.
- Impara a risolvere i Recaptcha v2, compilare una casella di testo nascosta #g-recaptcha-response e inviare il modulo.
- Appunti su come estendere la tua conoscenza di Javascript ES6 e NodeJS.
Installa NodeJS e Webstorm IDE sul sistema operativo appena installato Ubuntu.
- Ubuntu OS: L'installazione del sistema operativo Ubuntu non è un requisito, ma una raccomandazione. È possibile eseguire NodeJS anche da Windows, ma il nostro codice potrebbe non essere compatibile.
- Node JS: Scarica NodeJS per il tuo sistema operativo qui
- Editor di codice: Consigliato VS Code o Atom. Entrambi sono IDE gratuiti.
Installare curl e nodejs in Ubuntu:
apt update
apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs
Installa e importa i moduli anticaptchaofficial e puppeteer npm.
Installare i moduli npm anti-captcha e Puppeteer:
npm install @antiadmin/anticaptchaofficial puppeteer
Creare un nuovo file index.js e aggiungere quanto segue. Sostituire "YOUR_API_KEY" con la propria chiave da API settings :
const ac = require("@antiadmin/anticaptchaofficial");
const pup = require("puppeteer");
ac.setAPIKey('YOUR_API_KEY');
Impara a scrivere uno script puppeteer che apre Chromium in modalità background e va su una pagina.
Aggiungere il seguente codice per risolvere il captcha, quindi compilare il modulo con login e password, incollare il token g-response nella textarea con id="g-recaptcha-response" e inviare il modulo:
const login = 'mylogin';
const password = 'my strong password';
(async () => {
console.log('solving recaptcha ...');
let token = await ac.solveRecaptchaV2Proxyless('https://anti-captcha.com/demo?page=recaptcha_v2_textarea', '6LfydQgUAAAAAMuh1gRreQdKjAop7eGmi6TrNIzp');
if (!token) {
console.log('something went wrong');
return;
}
console.log('opening browser ..');
const browser = await pup.launch();
console.log('creating new tab ..');
const tab = await browser.newPage();
console.log('changing window size .. ');
await tab.setViewport({ width: 1360, height: 1000 });
console.log('opening target page ..');
await tab.goto('https://anti-captcha.com/demo?page=recaptcha_v2_textarea', { waitUntil: "networkidle0" });
console.log('filling login input ..');
await tab.$eval('#contentbox > form > div > div:nth-child(1) > span > input', (element, login) => {
element.value = login;
}, login);
console.log('filling password input');
await tab.$eval('#contentbox > form > div > div:nth-child(2) > span > input', (element, password) => {
element.value = password;
}, password);
console.log('setting recaptcha g-response ...');
await tab.$eval('#g-recaptcha-response', (element, token) => {
element.value = token;
}, token);
console.log('submitting form .. ');
await Promise.all([
tab.click('#contentbox > form > div > div.tac.padding20px > button'),
tab.waitForNavigation({ waitUntil: "networkidle0" })
]);
console.log('making a screenshot ...');
await tab.screenshot({ path: 'screenshot.png' });
console.log('closing browser .. ');
await browser.close();
})();
Si può notare che prima risolviamo il captcha e solo dopo navighiamo nella pagina e incolliamo il risultato. Funziona con Recaptcha perché conosciamo già la sitekey e la durata del token è di 120 secondi.
L'immagine della pagina finale viene salvata in screenshot.png. Se si desidera vedere ciò che accade nel browser, disattivare la modalità headless:
console.log('opening browser ..');
//const browser = await pup.launch();
const browser = await pup.launch({ headless: false });
Appunti su come estendere la tua conoscenza di Javascript ES6 e NodeJS.
Si è imparato a bypassare un modulo con Recaptcha V2 nella sua implementazione più semplice, con la textarea "g-recaptcha-response" come parte del modulo. Si potrebbe voler ampliare le proprie conoscenze:
- Imparare il modulo come aggirare Recaptcha V2 con una funzione di callback usando NodeJS e Puppeteer.
- Corsi NodeJS e Javascript ES6 consigliati da Maximilian Schwarzmüller: NodeJS - The Complete Guide e Accelerated ES6 Javascript Training