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
- Selesaikan Grid Image CAPTCHA dengan Python
- Cara Mengatasi Gambar Grid CAPTCHA
Mulailah menyelesaikan Grid Image CAPTCHA dengan CaptchaAI →