API Eğitimleri

Node.js ve CaptchaAI ile Resim CAPTCHA'sını Çözme

Resim CAPTCHA'ları, kullanıcıların yazması gereken bozuk metni görüntüler. Devlet sitelerinde, eski formlarda ve kayıt sayfalarında görünürler.CaptchaAIresmi okur ve metni döndürür. Bu kılavuzda bunun Node.js'den nasıl yapılacağı gösterilmektedir.


Önkoşullar

Öğe Değer
CaptchaAI API anahtarı İtibarencaptchaai.com
Node.js 14+
Kütüphaneler axios, fs
Resim formatı JPG, PNG veya GIF (100 bayt – 100 KB)

Yöntem A: Base64 gönderimi

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}`);

Yöntem B: Dosya yükleme

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;

Metin sonucu için anket

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

Doğruluk parametreleri

// 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,
  },
});
Parametre Değer Amaç
numeric 1 = rakamlar, 2 = harfler Karakterleri sınırlar
min_len / max_len Tamsayı Uzunluk kısıtlamaları
calc 1 Matematik ifadesini hesaplar
regsense 1 Büyük/küçük harfe duyarlı

Tam çalışma örneği

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

Beklenen çıktı:

Solved: ABC123

Yaygın hatalar

Hata Sebep Düzeltme
ERROR_WRONG_FILE_EXTENSION Desteklenmeyen biçim JPG, PNG veya GIF kullanın
ERROR_TOO_BIG_CAPTCHA_FILESIZE Resim > 100 KB Önce sıkıştır
ERROR_ZERO_CAPTCHA_FILESIZE Resim < 100 bayt Resmi doğrulayın
CAPCHA_NOT_READY Hala çözülüyor Her 5 saniyede bir anket yapın

SSS

Matematik CAPTCHA'larını çözebilir miyim?

Evet. Parametrelere calc: 1 ekleyin; CaptchaAI hesaplanan sonucu döndürecektir.

Yanlış çözümleri nasıl bildirebilirim?

Yanlış sonuçları bildirmek için https://ocr.captchaai.com/res.php?key=KEY&action=reportbad&id=TASK_ID'yi arayın.

Base64 veya dosya yükleme daha mı hızlı?

Performans aynıdır. Base64, görüntüyü zaten hafızanızda bulundurduğunuzda daha kullanışlıdır.


İlgili kılavuzlar


CaptchaAI → ile görüntü CAPTCHA'larını çözmeye başlayın

Bu makale için yorumlar devre dışı bırakılmıştır.