تعرض صور CAPTCHA نصًا مشوهًا يجب على المستخدمين كتابته. وتظهر على المواقع الحكومية والنماذج القديمة وصفحات التسجيل.CaptchaAIيقرأ الصورة ويعيد النص. يوضح هذا الدليل كيفية القيام بذلك من Node.js.
المتطلبات الأساسية
| البند | القيمة |
|---|---|
| مفتاح CaptchaAI API | منcaptchaai.com |
| Node.js | 14+ |
| المكتبات | axios، fs |
| تنسيق الصورة | JPG أو PNG أو GIF (100 بايت - 100 كيلو بايت) |
الطريقة أ: إرسال Base64
const axios = require('axios');
const fs = require('fs');
const API_KEY = 'YOUR_API_KEY';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
// Read and encode the image
const imageB64 = fs.readFileSync('captcha.png').toString('base64');
// Submit to CaptchaAI
const { data: submitData } = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: API_KEY,
method: 'base64',
body: imageB64,
json: 1,
},
});
if (submitData.status !== 1) throw new Error(submitData.request);
const taskId = submitData.request;
console.log(`Task submitted: ${taskId}`);
الطريقة ب: تحميل الملف
const FormData = require('form-data');
const form = new FormData();
form.append('key', API_KEY);
form.append('method', 'post');
form.append('json', '1');
form.append('file', fs.createReadStream('captcha.png'));
const { data: submitData } = await axios.post('https://ocr.captchaai.com/in.php', form, {
headers: form.getHeaders(),
});
const taskId = submitData.request;
استطلاع لنتيجة النص
await sleep(5000);
let captchaText;
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) {
captchaText = pollData.request;
console.log(`CAPTCHA text: ${captchaText}`);
break;
}
if (pollData.request !== 'CAPCHA_NOT_READY') {
throw new Error(pollData.request);
}
await sleep(5000);
}
معلمات الدقة
// Digits only, 4-6 characters
const { data } = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: API_KEY,
method: 'base64',
body: imageB64,
numeric: 1, // digits only
min_len: 4, // minimum length
max_len: 6, // maximum length
json: 1,
},
});
| المعلمة | القيمة | الغرض |
|---|---|---|
numeric |
1 = أرقام، 2 = حروف |
حدود الأحرف |
min_len / max_len |
عدد صحيح | قيود الطول |
calc |
1 |
يحسب التعبير الرياضي |
regsense |
1 |
حساسة لحالة الأحرف |
مثال العمل الكامل
const axios = require('axios');
const puppeteer = require('puppeteer');
const fs = require('fs');
const API_KEY = 'YOUR_API_KEY';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
async function solveImageCaptcha() {
// 1. Load page and screenshot CAPTCHA
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com/register');
const captchaEl = await page.$('#captcha-image');
await captchaEl.screenshot({ path: 'captcha.png' });
// 2. Encode and submit
const imageB64 = fs.readFileSync('captcha.png').toString('base64');
const { data: submit } = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: { key: API_KEY, method: 'base64', body: imageB64, json: 1 },
});
const taskId = submit.request;
// 3. Poll for text
await sleep(5000);
let text;
for (let i = 0; i < 30; i++) {
const { data: poll } = await axios.get('https://ocr.captchaai.com/res.php', {
params: { key: API_KEY, action: 'get', id: taskId, json: 1 },
});
if (poll.status === 1) { text = poll.request; break; }
if (poll.request !== 'CAPCHA_NOT_READY') throw new Error(poll.request);
await sleep(5000);
}
// 4. Type and submit
await page.type('#captcha-input', text);
await page.click('form [type="submit"]');
console.log(`Solved: ${text}`);
await browser.close();
}
solveImageCaptcha().catch(console.error);
الناتج المتوقع:
Solved: ABC123
الأخطاء الشائعة
| خطأ | السبب | إصلاح |
|---|---|---|
ERROR_WRONG_FILE_EXTENSION |
تنسيق غير معتمد | استخدم JPG أو PNG أو GIF |
ERROR_TOO_BIG_CAPTCHA_FILESIZE |
الصورة> 100 كيلو بايت | ضغط أولا |
ERROR_ZERO_CAPTCHA_FILESIZE |
الصورة <100 بايت | التحقق من الصورة |
CAPCHA_NOT_READY |
لا يزال حل | استطلاع كل 5 ثواني |
الأسئلة الشائعة
هل يمكنني حل اختبار CAPTCHA الرياضي؟
نعم. أضف calc: 1 إلى المعلمات وسيقوم CaptchaAI بإرجاع النتيجة المحسوبة.
كيف يمكنني الإبلاغ عن الحلول الخاطئة؟
اتصل بـ https://ocr.captchaai.com/res.php?key=KEY&action=reportbad&id=TASK_ID للإبلاغ عن نتائج غير صحيحة.
هل Base64 أو تحميل الملف أسرع؟
الأداء هو نفسه. يعد Base64 أكثر ملاءمة عندما تكون الصورة موجودة بالفعل في الذاكرة.
أدلة ذات صلة
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق
- كيفية حلّ reCAPTCHA v2 عبر الـ API: دليل خطوة بخطوة