Tutorial API

Solve Grid Image CAPTCHA dengan Node.js dan CaptchaAI

Gambar kisi CAPTCHA menampilkan kisi 3×3 atau 4×4 dengan instruksi seperti "pilih semua kotak dengan lampu lalu lintas". Tutorial ini menunjukkan cara menyelesaikannya dari Node.js menggunakanCaptchaAIdan Dalang.


Prasyarat

Barang Nilai
Kunci API CaptchaAI Daricaptchaai.com
Node.js 14+
Perpustakaan axios, puppeteer

Langkah 1: Ambil gambar grid

const puppeteer = require('puppeteer');
const fs = require('fs');

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com/page-with-recaptcha');

// Switch to the reCAPTCHA challenge iframe
const frames = page.frames();
const challengeFrame = frames.find((f) => f.url().includes('recaptcha/api2/bframe'));

// Get the instruction text
const instruction = await challengeFrame.$eval(
  '.rc-imageselect-desc-no-canonical',
  (el) => el.textContent.trim()
);

// Screenshot the grid
const grid = await challengeFrame.$('.rc-imageselect-target');
await grid.screenshot({ path: 'grid.png' });

Langkah 2: Kirim ke CaptchaAI

const axios = require('axios');
const FormData = require('form-data');

const API_KEY = 'YOUR_API_KEY';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

const form = new FormData();
form.append('key', API_KEY);
form.append('method', 'post');
form.append('grid_size', '3x3');
form.append('img_type', 'recaptcha');
form.append('instructions', instruction);
form.append('json', '1');
form.append('file', fs.createReadStream('grid.png'));

const { data: submitData } = await axios.post('https://ocr.captchaai.com/in.php', form, {
  headers: form.getHeaders(),
});

if (submitData.status !== 1) throw new Error(submitData.request);
const taskId = submitData.request;
console.log(`Task submitted: ${taskId}`);

Langkah 3: Jajak pendapat untuk solusinya

await sleep(5000);

let cellsToClick;
for (let i = 0; i < 30; i++) {
  const { data: pollData } = await axios.get('https://ocr.captchaai.com/res.php', {
    params: { key: API_KEY, action: 'get', id: taskId, json: 1 },
  });

  if (pollData.status === 1) {
    cellsToClick = JSON.parse(pollData.request);
    console.log('Click cells:', cellsToClick);
    break;
  }
  if (pollData.request !== 'CAPCHA_NOT_READY') {
    throw new Error(pollData.request);
  }
  await sleep(5000);
}

Langkah 4: Klik ubin yang benar

const tiles = await challengeFrame.$$('.rc-imageselect-tile');

for (const cellNum of cellsToClick) {
  await tiles[cellNum - 1].click();
  await sleep(300);
}

// Click verify
await challengeFrame.click('#recaptcha-verify-button');
console.log(`Solved: clicked tiles ${JSON.stringify(cellsToClick)}`);
await browser.close();

Hasil yang diharapkan:

Click cells: [1, 3, 6, 9]
Solved: clicked tiles [1,3,6,9]

Pertanyaan Umum

Apakah ini berfungsi dengan grid 4x4?

Ya. Setel grid_size ke 4x4 di parameter request.

Bisakah saya menggunakan Penulis Drama alih-alih Dalang?

Ya. Panggilan API CaptchaAI sama — hanya kode otomatisasi browser yang berubah.

Bagaimana jika CAPTCHA disegarkan dengan gambar baru?

Beberapa tantangan reCAPTCHA memuat ubin baru. Anda mungkin perlu menangkap dan mengirimkan lagi untuk setiap putaran.


Panduan terkait


Mulailah menyelesaikan Grid Image CAPTCHA dengan CaptchaAI →

Komentar dinonaktifkan untuk artikel ini.