Kasus Penggunaan

Penanganan Bot CAPTCHA Otomatisasi dengan CaptchaAI

Bot otomatisasi menangani tugas yang berulang - pengiriman formulir, pembuatan akun, entri data, pemantauan. CAPTCHA mengganggu alur kerja ini. CaptchaAI menyelesaikan CAPTCHA secara terprogram sehingga bot Anda berjalan tanpa campur tangan manusia.

Skenario Otomatisasi Umum

Skenario CAPTCHA yang khas Metode CaptchaAI
Pengiriman formulir reCAPTCHA v2 method=userrecaptcha
Pendaftaran akun reCAPTCHA v2/v3 method=userrecaptcha
Portal entri data Gambar CAPTCHA method=base64
Pemesanan/reservation Cloudflare Turnstile method=turnstile
Akses gerbang API Cloudflare Challenge method=cloudflare_challenge

Kerangka Bot Generik

Bangun kerangka bot penyelesaian CAPTCHA yang dapat digunakan kembali:

import requests
import time
import logging

logger = logging.getLogger(__name__)

class CaptchaBot:
    def __init__(self, api_key):
        self.api_key = api_key
        self.session = requests.Session()
        self.session.headers.update({
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
        })

    def solve(self, method, **params):
        """Solve any CAPTCHA type."""
        params["key"] = self.api_key
        params["method"] = method

        resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
        if not resp.text.startswith("OK|"):
            raise Exception(f"Submit error: {resp.text}")

        task_id = resp.text.split("|")[1]
        logger.info(f"Task submitted: {task_id}")

        for _ in range(60):
            time.sleep(5)
            result = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get", "id": task_id
            })
            if result.text == "CAPCHA_NOT_READY": continue
            if result.text.startswith("OK|"): return result.text.split("|")[1]
            raise Exception(f"Error: {result.text}")

        raise TimeoutError("CAPTCHA solve timed out")

    def submit_form(self, url, form_data, captcha_field="g-recaptcha-response",
                    site_key=None, captcha_method="userrecaptcha"):
        """Submit a form with CAPTCHA solving."""
        if site_key:
            if captcha_method == "userrecaptcha":
                token = self.solve(captcha_method, googlekey=site_key, pageurl=url)
            elif captcha_method == "turnstile":
                token = self.solve(captcha_method, sitekey=site_key, pageurl=url)
            form_data[captcha_field] = token

        return self.session.post(url, data=form_data)

Contoh: Bot Pengiriman Formulir

bot = CaptchaBot("YOUR_API_KEY")

# Submit a contact form protected by reCAPTCHA
result = bot.submit_form(
    url="https://example.com/contact",
    form_data={
        "name": "John Doe",
        "email": "john@example.com",
        "message": "Inquiry about your service"
    },
    site_key="6Le-wvkS...",
    captcha_method="userrecaptcha"
)

print(f"Form submitted: {result.status_code}")

Contoh: Bot Alur Kerja Multi-Langkah

def appointment_booking_bot(date, time_slot, user_info):
    bot = CaptchaBot("YOUR_API_KEY")

    # Step 1: Load booking page
    page = bot.session.get("https://example.com/book")

    # Step 2: Select date and time
    resp = bot.session.post("https://example.com/book/select", data={
        "date": date,
        "time": time_slot
    })

    # Step 3: Fill personal info with CAPTCHA
    result = bot.submit_form(
        url="https://example.com/book/confirm",
        form_data={
            "name": user_info["name"],
            "email": user_info["email"],
            "phone": user_info["phone"],
            "date": date,
            "time": time_slot
        },
        site_key="6Le-wvkS...",
        captcha_method="userrecaptcha"
    )

    return result.status_code == 200

# Run
success = appointment_booking_bot(
    date="2025-02-15",
    time_slot="10:00",
    user_info={"name": "John Doe", "email": "john@example.com", "phone": "555-0100"}
)

Contoh: Bot Entri Data dengan Gambar CAPTCHA

import base64

def data_entry_bot(entries, captcha_image_url):
    bot = CaptchaBot("YOUR_API_KEY")

    for entry in entries:
        # Load the form page
        page = bot.session.get("https://portal.example.com/entry")

        # Download and solve image CAPTCHA
        img = bot.session.get(captcha_image_url)
        img_b64 = base64.b64encode(img.content).decode()
        captcha_text = bot.solve("base64", body=img_b64)

        # Submit entry
        resp = bot.session.post("https://portal.example.com/entry", data={
            **entry,
            "captcha": captcha_text
        })

        logger.info(f"Entry submitted: {resp.status_code}")
        time.sleep(random.uniform(2, 5))

Kerangka Bot Node.js

const axios = require("axios");

class CaptchaBot {
  constructor(apiKey) {
    this.apiKey = apiKey;
  }

  async solve(method, params) {
    params.key = this.apiKey;
    params.method = method;

    const submit = await axios.get("https://ocr.captchaai.com/in.php", {
      params,
    });
    const taskId = submit.data.split("|")[1];

    while (true) {
      await new Promise((r) => setTimeout(r, 5000));
      const result = await axios.get("https://ocr.captchaai.com/res.php", {
        params: { key: this.apiKey, action: "get", id: taskId },
      });
      if (result.data === "CAPCHA_NOT_READY") continue;
      if (result.data.startsWith("OK|")) return result.data.split("|")[1];
      throw new Error(result.data);
    }
  }

  async submitForm(url, formData, siteKey, method = "userrecaptcha") {
    const token = await this.solve(method, {
      googlekey: siteKey,
      pageurl: url,
    });
    formData["g-recaptcha-response"] = token;

    return axios.post(url, new URLSearchParams(formData));
  }
}

// Usage
const bot = new CaptchaBot("YOUR_API_KEY");
const result = await bot.submitForm(
  "https://example.com/submit",
  { name: "John", email: "john@example.com" },
  "6Le-wvkS..."
);

Pemecahan Masalah

Masalah Solusi
Token CAPTCHA ditolak Gunakan token dalam waktu 120 detik setelah penyelesaian
Bot terdeteksi meskipun token valid Tambahkan header yang sesuai dan jeda antar permintaan
Formulir memerlukan kolom tambahan Periksa sumber formulir untuk bidang tersembunyi (token CSRF)
Pembatasan laju pada pengiriman berulang Tambahkan jeda dan putar proxy

Pertanyaan Umum

Bisakah bot otomatisasi menangani semua jenis CAPTCHA?

Dengan CaptchaAI, ya. API ini mendukung reCAPTCHA (semua versi), Cloudflare Turnstile, GeeTest, hCaptcha, image CAPTCHA, dan banyak lagi. Kerangka bot Anda hanya perlu mendeteksi jenisnya dan memanggil metode yang tepat.

Bagaimana cara menjalankan bot 24/7?

Gunakan alat penjadwalan (cron, Penjadwal Tugas, systemd) atau terapkan ke fungsi cloud. CaptchaAI API tersedia 24/7 dengan waktu aktif 99,9%+.

Bagaimana dengan bot yang perlu menangani anti-bot selain CAPTCHA?

Gabungkan CaptchaAI dengan browser mode standar (undetected-chromedriver, puppeteer-extra). CaptchaAI menangani lapisan CAPTCHA; alat standar menangani deteksi sinyal browser.

Panduan Terkait

  • Penanganan CAPTCHA Login Otomatis
  • Skrip Otomatisasi CAPTCHA
  • Penanganan CAPTCHA Playwright
Komentar dinonaktifkan untuk artikel ini.