تقدم اختبارات CAPTCHA لصورة الشبكة شبكة 3×3 أو 4×4 مع تعليمات مثل "حدد جميع المربعات التي تحتوي على إشارات المرور". يوضح هذا البرنامج التعليمي كيفية حلها من خلال استخدام Node.jsCaptchaAIوPuppeteer.
المتطلبات الأساسية
| البند | القيمة |
|---|---|
| مفتاح CaptchaAI API | منcaptchaai.com |
| Node.js | 14+ |
| المكتبات | axios، puppeteer |
الخطوة 1: التقاط صورة الشبكة
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' });
الخطوة 2: أرسل إلى 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}`);
الخطوة 3: استطلاع للحل
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);
}
الخطوة 4: انقر فوق البلاط الصحيح
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();
الناتج المتوقع:
Click cells: [1, 3, 6, 9]
Solved: clicked tiles [1,3,6,9]
الأسئلة الشائعة
هل يعمل هذا مع شبكات 4×4؟
نعم. اضبط grid_size على 4x4 في معلمات الطلب.
هل يمكنني استخدام Playwright بدلاً من Puppeteer؟
نعم. مكالمات CaptchaAI API هي نفسها — فقط يتغير رمز أتمتة المتصفح.
ماذا لو تم تحديث اختبار CAPTCHA بصور جديدة؟
تقوم بعض تحديات reCAPTCHA بتحميل مربعات جديدة. قد تحتاج إلى الالتقاط والإرسال مرة أخرى لكل جولة.
أدلة ذات صلة
- حل CAPTCHA صور الشبكة (Grid) تلقائيًا باستخدام CaptchaAI
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق