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