Comparisons

Kenapa Developer Beralih dari Anti-Captcha ke CaptchaAI

Alasannya biasanya hanya dua: target yang dulu aman tiba-tiba memunculkan halaman Cloudflare Challenge, dan biaya per solve membengkak saat volume scraping naik. Anti-Captcha tetap layanan matang — persoalannya ada di dua titik itu. Perbandingan berikut memakai tiga sudut pandang: kode yang berubah, tipe yang tertangani, dan pergerakan biaya.


Ringkasnya: kapan pindah masuk akal

  • Target Anda memunculkan Cloudflare Challenge, bukan sekadar widget Turnstile.
  • Anda butuh BLS CAPTCHA untuk portal pemerintah atau janji temu visa.
  • Anda ingin biaya bulanan datar, bukan tagihan yang mengikuti jumlah solve.

Format API: dari task JSON ke gaya 2Captcha

Perbedaan terbesar ada pada bentuk request. Anti-Captcha memakai task JSON:

# Anti-Captcha — custom JSON format
import requests

resp = requests.post("https://api.anti-captcha.com/createTask", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "SITE_KEY",
    }
})
task_id = resp.json()["taskId"]

# Poll with different endpoint and format
result = requests.post("https://api.anti-captcha.com/getTaskResult", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "taskId": task_id,
})

CaptchaAI memakai format kompatibel 2Captcha lewat in.php dan res.php:

# CaptchaAI — standard 2Captcha-compatible format
import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Standard polling
result = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Alurnya identik — kirim, simpan task ID, polling, pakai token — hanya parameter dan endpoint yang berbeda. Karena format 2Captcha dipakai ratusan library, wrapper yang sudah ada umumnya cukup diganti base URL dan API key-nya.


BLS CAPTCHA untuk portal pemerintah

Otomatisasi portal pemerintah dan janji temu visa sering berhenti di BLS CAPTCHA:

# CaptchaAI — BLS with a high success rate
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "bls",
    "pageurl": "https://bls-portal.example.com",
    "sitekey": "BLS_SITE_KEY",
    "json": 1,
})

Anti-Captcha tidak punya metode BLS.


Cakupan Cloudflare: Turnstile saja tidak cukup

Anti-Captcha menangani token Turnstile, tetapi tidak halaman Cloudflare Challenge penuh:

Jenis Cloudflare Anti-Captcha CaptchaAI
Turnstile (managed)
Turnstile (invisible) Sebagian
Cloudflare Challenge

Ini yang paling sering menjatuhkan job yang tadinya stabil: situs mengaktifkan mode challenge, worker menerima HTML interstitial, dan parser mengembalikan nol baris.


Kualitas skor reCAPTCHA v3 dan posisi GeeTest

Skor v3 rendah memicu verifikasi tambahan di sisi situs, dan pendekatan berbantuan manusia cenderung menghasilkan skor naik-turun.

Angka berikut bersumber dari pengamatan dan laporan pengguna. Hasil dapat berbeda tergantung lingkungan, volume, dan waktu pengujian.

Penyedia Rata-rata skor v3 Kontrol skor
Anti-Captcha 0.3–0.5 Terbatas

CaptchaAI mendukung GeeTest v3 lewat method=geetest. GeeTest v4 belum didukung — statusnya masih "segera hadir".


Perbandingan fitur

Fitur Anti-Captcha CaptchaAI
reCAPTCHA v2
reCAPTCHA v3 ✅ (skor rendah) ✅ Kontrol skor
reCAPTCHA Enterprise dan invisible
Turnstile
Cloudflare Challenge
GeeTest v3
GeeTest v4 Ya ❌ (segera hadir)
hCaptcha Ya ❌ belum didukung
FunCaptcha (Arkose Labs) Ya ❌ belum didukung
BLS
Gambar/OCR ✅ 27.500+ varian
Format API JSON khusus Kompatibel 2Captcha
Dukungan proxy dan callback

Kalau beban kerja Anda didominasi hCaptcha atau FunCaptcha, CaptchaAI bukan penggantinya.


Kecepatan penyelesaian

Kolom CaptchaAI adalah batas atas resmi per tipe, bukan rata-rata:

Jenis CAPTCHA Anti-Captcha CaptchaAI
reCAPTCHA v2 15–45 detik <60 detik
reCAPTCHA v3 10–30 detik <4 detik
Gambar CAPTCHA 5–15 detik <0.5 detik
Turnstile 10–30 detik <10 detik
GeeTest v3 15–40 detik <12 detik

Pada worker di AWS ap-southeast-1 (Singapura) atau ap-southeast-3 (Jakarta), latensi jaringan kecil sehingga waktu penyelesaian jadi faktor dominan — sesuaikan batas waktu polling dengan kolom kanan.


Biaya: per solve vs berbasis thread

Untuk freelancer dan agensi price-monitoring di Indonesia yang marginnya ketat, ini bagian paling menentukan. Anti-Captcha menagih per solve, jadi biaya mengikuti volume harian. CaptchaAI menagih per thread bersamaan, solve tanpa batas per thread: BASIC ($15/bulan, 5 thread), lalu ADVANCE ($90/bulan, 50 thread) saat job berjalan paralel.


Wrapper transisi untuk dua penyedia

Selama peralihan, jaga kedua penyedia di balik satu antarmuka:

import requests
import time

class CaptchaSolver:
    """Unified solver — supports Anti-Captcha and CaptchaAI."""

    def __init__(self, provider="captchaai", api_key="YOUR_API_KEY"):
        self.provider = provider
        self.api_key = api_key

    def solve_recaptcha_v2(self, sitekey, pageurl):
        if self.provider == "captchaai":
            return self._solve_captchaai("userrecaptcha", sitekey, pageurl)
        else:
            return self._solve_anticaptcha(sitekey, pageurl)

    def _solve_captchaai(self, method, sitekey, pageurl):
        resp = requests.post("https://ocr.captchaai.com/in.php", data={
            "key": self.api_key,
            "method": method,
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        })
        task_id = resp.json()["request"]

        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, "json": 1,
            })
            data = result.json()
            if data["request"] != "CAPCHA_NOT_READY":
                return data["request"]

        raise TimeoutError("Solve timeout")

    def _solve_anticaptcha(self, sitekey, pageurl):
        resp = requests.post("https://api.anti-captcha.com/createTask", json={
            "clientKey": self.api_key,
            "task": {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": pageurl,
                "websiteKey": sitekey,
            },
        })
        task_id = resp.json()["taskId"]

        for _ in range(60):
            time.sleep(5)
            result = requests.post(
                "https://api.anti-captcha.com/getTaskResult",
                json={"clientKey": self.api_key, "taskId": task_id},
            )
            data = result.json()
            if data["status"] == "ready":
                return data["solution"]["gRecaptchaResponse"]

        raise TimeoutError("Solve timeout")

Proyek baru pakai provider="captchaai"; proyek lama cukup ubah parameter konstruktor.


Masalah umum saat migrasi

Masalah Sebab Perbaikan
Request ditolak Anti-Captcha memakai task JSON Kirim form data ke in.php
Field method tidak ada Anti-Captcha memakai type di dalam task Ganti ke method=userrecaptcha
Polling tidak mengembalikan hasil Endpoint hasil berbeda Pakai GET ke res.php dengan action=get
Nama tipe task tidak dikenali Penamaan metode berbeda Pakai userrecaptcha, turnstile, bls

Pertanyaan yang sering muncul

Berapa lama migrasi kode dari Anti-Captcha biasanya memakan waktu?

Untuk satu integrasi reCAPTCHA v2, umumnya 15–30 menit: ganti endpoint, ubah payload jadi form data, sesuaikan pembacaan respons polling.

Bagaimana status hCaptcha dan FunCaptcha di CaptchaAI?

Belum. Kedua tipe itu tidak didukung, begitu pula GeeTest v4. Beban kerja yang bertumpu di sana tetap memerlukan layanan lain.

Bisakah saya menjalankan kedua layanan bersamaan selama transisi?

Bisa, dan itu cara paling aman: wrapper di atas membandingkan keberhasilan keduanya pada trafik yang sama. Parameter proxy dan proxytype tetap tersedia.

Bagaimana cara memperkirakan jumlah thread yang saya butuhkan?

Hitung dari solve yang berjalan bersamaan pada jam puncak, bukan total bulanan. Satu thread menangani satu CAPTCHA, lalu mengambil antrean berikutnya.


Panduan Terkait


Uji satu target Cloudflare Challenge milik Anda — ambil API key CaptchaAI dan bandingkan hasilnya dengan integrasi sekarang.

Komentar dinonaktifkan untuk artikel ini.