Menu

NodeJS ve Puppeteer ile Recaptcha V2'yi Atlama


ne öğreneceksin

  • Yeni yüklenmiş Ubuntu işletim sistemine NodeJS ve Webstorm IDE kur.
  • anticaptchaofficial ve puppeteer npm modüllerini kur ve içe aktar.
  • NodeJS betiği ile Recaptcha ile Bu formunu nasıl göndereceğinizi öğreneceksiniz.
  • Arkaplan modunda Chromium açan ve bir sayfaya giden bir puppeteer dizisi nasıl yazılır öğren.
  • Bir sayfanın ekran görüntüsünü nasıl alacağınızı ve onu diske nasıl kaydedeceğinizi öğrenin.
  • CSS seçicileri kullanarak bir formun metin alanlarını nasıl dolduracağınızı öğrenin.
  • Recaptcha v2 nasıl çözülür öğrenin, gizli textarea #g-recaptcha-response yanıtını doldurun ve formu gönderin.
  • Javascript ES6 ve NodeJS hakkındaki bilginizi artırmak hakkında notlar.
Source code

Yeni yüklenmiş Ubuntu işletim sistemine NodeJS ve Webstorm IDE kur.

  • Ubuntu İşletim Sistemi: Ubuntu İşletim Sisteminin kurulması bir gereklilik değil, bir öneridir. NodeJS'yi Windows'tan çalıştırmak da mümkündür, ancak kodumuz uyumlu olmayabilir.
  • Node JS: İşletim sisteminiz için NodeJS'yi indirin burada
  • Kod düzenleyici: Önerilen VS Code veya Atom. Her ikisi de ücretsiz IDE'dir.

Ubuntu'da curl ve nodejs yükleyin:

apt update
apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs

anticaptchaofficial ve puppeteer npm modüllerini kur ve içe aktar.

Anti-captcha ve Puppeteer npm modüllerini kurun:

npm install @antiadmin/anticaptchaofficial puppeteer

Yeni bir index.js dosyası oluşturun ve aşağıdakileri ekleyin. "YOUR_API_KEY" öğesini API ayarları öğesindeki anahtarınızla değiştirin:

const ac = require("@antiadmin/anticaptchaofficial");
      const pup = require("puppeteer");
      ac.setAPIKey('YOUR_API_KEY');

Arkaplan modunda Chromium açan ve bir sayfaya giden bir puppeteer dizisi nasıl yazılır öğren.

Önce captcha'yı çözmek için aşağıdaki kodu ekleyin, ardından formu kullanıcı adı ve şifre ile doldurun, g-response belirtecini id="g-recaptcha-response" ile textarea'ya yapıştırın ve formu gönderin:

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();

})();

Önce captcha'yı çözdüğümüzü ve ancak daha sonra sayfaya gidip sonucu yapıştırdığımızı not edebilirsiniz. Site anahtarını zaten bildiğimiz için Recaptcha için çalışıyor ve belirtecin ömrü 120 saniyedir.

Son sayfanın ekran görüntüsü ekran görüntüsüne kaydedilir.png. Tarayıcıda neler olduğunu görmek istiyorsanız, başsız modunu kapatın:

console.log('opening browser ..');
//const browser = await pup.launch();
const browser = await pup.launch({ headless: false });

Javascript ES6 ve NodeJS hakkındaki bilginizi artırmak hakkında notlar.

En basit uygulama biçiminde Recaptcha V2 ile bir formu nasıl atlayacağınızı öğrendiniz - formun bir parçası olarak "g-recaptcha-response" textarea ile. Bilginizi genişletmek isteyebilirsiniz:

Github

https://github.com/anti-captcha/solving-captcha-concepts/blob/master/tutorial1.js