CAPSOLVER
Blog
Temukan cara untuk secara efektif mengelola dan melewati tantangan CAPTCHA dalam otomatisasi browser AI. Panduan ini menyediakan langkah-langkah praktis untuk solusi otomatisasi web yang kuat dan skalabel.

Mengintegrasikan CapSolver: Panduan untuk Penanganan CAPTCHA dalam Otomasi Browser AI

Logo of CapSolver

Emma Foster

Machine Learning Engineer

28-Jul-2026

TL;DR

  • Skyvern bertanggung jawab untuk membuka halaman web, mengisi formulir, dan melanjutkan alur bisnis, sementara CapSolver menangani pengembalian Token CAPTCHA.

  • Instal SDK resmi capsolver secara langsung dan panggil capsolver.solve() untuk menghindari implementasi logika createTask dan polling sendiri.

  • Setelah Token diperoleh, kembalikan ke halaman browser saat ini, lalu biarkan Skyvern mengirim formulir dan memverifikasi hasilnya.

Pendahuluan

Skyvern adalah platform otomatisasi browser AI yang dibangun di atas Playwright, model visi, dan Model Bahasa Besar (LLMs). Skyvern dapat memahami teks, formulir, dan elemen interaktif dalam halaman web, menyelesaikan tugas seperti navigasi halaman, klik tombol, input konten, unggah file, ekstraksi informasi, dan alur kerja multi-langkah berdasarkan instruksi dalam bahasa alami. Pendekatan ini mengurangi biaya pemeliharaan skrip yang disebabkan oleh perubahan struktur halaman, membuatnya ideal untuk skenario seperti login, pengiriman formulir, operasi back-office, dan pengumpulan data.

Ketika alur otomasi menghadapi tantangan CAPTCHA, Anda dapat memanggil SDK Python resmi CapSolver dengan memberikan parameter seperti alamat halaman saat ini, Site Key, dan jenis CAPTCHA. Setelah CapSolver menyelesaikan tugas, ia mengembalikan Token verifikasi yang sesuai. Program kemudian menggunakan Playwright untuk menulis Token ini ke bidang respons halaman saat ini, callback JavaScript, atau permintaan bisnis. Setelah verifikasi berhasil, Skyvern dapat melanjutkan mengeksekusi tugas yang diizinkan pengguna asli, seperti mengirim formulir, masuk ke halaman berikutnya, atau memeriksa hasil operasi akhir.

1. Menginstal Ketergantungan

Skyvern saat ini memerlukan Python 3.11, 3.12, atau 3.13. Instal Skyvern, SDK CapSolver, dan Chromium:

Bash Copy
pip install "skyvern[local]"
pip install --upgrade capsolver
python -m playwright install chromium

2. Kode CapSolver

Python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver

# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV2TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})

print(solution)

Bila berhasil, hasil yang dikembalikan terutama menggunakan:

Python Copy
token = solution["gRecaptchaResponse"]

Peran parameter:

websiteURL dan websiteKey harus konsisten dengan konfigurasi halaman saat ini.

3. Contoh Integrasi Skyvern

Berikut adalah contoh integrasi minimal. Skyvern terlebih dahulu membuka halaman dan mengisi formulir, lalu mengambil Token melalui SDK resmi, dan akhirnya mengembalikan Token ke halaman untuk pengiriman.

Python Copy
import asyncio
import capsolver
from skyvern import Skyvern


TARGET_URL = "https://www.google.com/recaptcha/api2/demo"
WEBSITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"


async def inject_token(page, token: str):
    await page.evaluate(
        """
        (token) => {
            const textarea = document.getElementById('g-recaptcha-response');
            if (textarea) {
                textarea.value = token;
            }
        }
        """,
        token,
    )


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ReCaptchaV2TaskProxyLess",
                "websiteURL": TARGET_URL,
                "websiteKey": WEBSITE_KEY,
            },
        )

        token = solution["gRecaptchaResponse"]
        await inject_token(page, token)

        await page.act("Submit")
        await page.validate("Verification successful... Great!")
    finally:
        await browser.close()

4. Cara Mengembalikan Token ke Halaman

CapSolver hanya bertanggung jawab untuk mengembalikan Token; ia tidak secara otomatis mengirim formulir bisnis situs target. Situs web yang berbeda menangani Token dengan cara yang berbeda, dengan metode umum termasuk:

  1. Menulis ke bidang tersembunyi g-recaptcha-response;

  2. Memanggil callback JavaScript yang dikonfigurasi di halaman;

  3. Mengirim Token sebagai parameter antarmuka bisnis.

Fungsi inject_token() dalam contoh mencoba kedua metode bidang tersembunyi dan callback uji coba. Dalam penggunaan nyata, potongan kode ini harus disesuaikan sesuai dengan implementasi frontend situs web Anda.

5. Masalah Umum

Token dikembalikan, tetapi halaman tetap gagal

Periksa parameter berikut:

  • Apakah websiteURL alamat halaman saat ini?

  • Apakah websiteKey dari situs saat ini?

  • Apakah halaman diperbarui setelah mendapatkan Token?

  • Apakah Token diserahkan ke callback atau antarmuka bisnis halaman yang benar?

6. Menggunakan API CapSolver untuk Menyelesaikan ImageToText

Selain reCAPTCHA, Skyvern juga dapat bekerja sama dengan CapSolver untuk menangani CAPTCHA standar berbasis gambar ke teks. Mengambil contoh BotDetect CAPTCHA Demo: ID elemen gambar CAPTCHA adalah demoCaptcha_CaptchaImage, ID kotak input hasil adalah captchaCode, dan ID tombol validasi adalah validateCaptchaButton.

BotDetect

ImageToTextTask memerlukan konversi gambar CAPTCHA ke Base64 dan mengirimkannya melalui parameter body. Jika src gambar adalah URL Data, misalnya:

Plain Text Copy
data:image/png;base64,iVBORw0KGgoAAA...

Ketika mengirimkannya ke CapSolver, tetapkan hanya konten Base64 setelah koma, tanpa prefix data:image/...;base64,. Berbeda dengan tugas jenis Token, ImageToTextTask mengembalikan hasil pengenalan langsung tanpa memerlukan polling tambahan getTaskResult.

Berikut adalah contoh integrasi Skyvern lengkap:

Python Copy
import asyncio

import capsolver
from skyvern import Skyvern


TARGET_URL = "https://captcha.com/demos/features/captcha-demo.aspx"


async def main():
    skyvern = Skyvern.local()
    browser = await skyvern.launch_local_browser(headless=False)
    page = await browser.get_working_page()

    try:
        await page.goto(TARGET_URL)
        await page.locator("#demoCaptcha_CaptchaImage").wait_for()

        # Baca URL Data gambar CAPTCHA.
        image_src = await page.locator(
            "#demoCaptcha_CaptchaImage"
        ).get_attribute("src")

        if not image_src or "," not in image_src:
            raise RuntimeError("Gambar CAPTCHA Base64 yang valid tidak ditemukan")

        # Hapus prefix URL Data dan simpan hanya data Base64.
        base64_image = image_src.split(",", 1)[1]

        solution = await asyncio.to_thread(
            capsolver.solve,
            {
                "type": "ImageToTextTask",
                "websiteURL": TARGET_URL,
                "module": "common",
                "body": base64_image,
            },
        )

        captcha_text = solution["text"]
        print("Hasil pengenalan:", captcha_text)

        await page.locator("#captchaCode").fill(captcha_text)
        await page.locator("#validateCaptchaButton").click()
        await page.wait_for_timeout(5000)
    finally:
        await browser.close()


if __name__ == "__main__":
    asyncio.run(main())

Proses eksekusi kode dapat dirangkum sebagai berikut:

Plain Text Copy
Skyvern membuka halaman CAPTCHA
  -> Cari #demoCaptcha_CaptchaImage
  -> Ekstrak dan bersihkan data gambar Base64
  -> Panggil capsolver.solve(ImageToTextTask)
  -> Baca solution["text"]
  -> Isi ke #captchaCode
  -> Klik #validateCaptchaButton

Memilih Model Pengenalan yang Tepat

module adalah parameter opsional; common dapat digunakan secara default. Jika CAPTCHA hanya berisi angka, Anda dapat menggunakan number; untuk beberapa gaya khusus, Anda juga dapat memilih model independen yang sesuai sesuai dokumentasi CapSolver untuk meningkatkan akurasi pengenalan.

filename.png

Misalnya, ketika mengenali CAPTCHA berbasis angka, Anda dapat mengubah parameter tugas menjadi:

Python Copy
solution = capsolver.solve({
    "type": "ImageToTextTask",
    "module": "number",
    "images": [base64_image],
})

answers = solution["answers"]

Model number mendukung pengiriman beberapa gambar sekaligus, dan images dapat berisi hingga 9 string Base64. Untuk nama model lain dan jenis gambar yang sesuai, silakan merujuk ke Dokumentasi Resmi CapSolver ImageToTextTask.

7. Ringkasan

Pemilihan solusi teknis yang tepat untuk otomatisasi browser AI bergantung pada kompleksitas tugas, frekuensi perubahan halaman, dan mekanisme verifikasi situs target. Alat tradisional seperti Selenium dan Playwright cocok untuk alur kerja otomasi dengan struktur yang stabil dan jalur operasi yang jelas. Skyvern membangun di atas ini dengan memperkenalkan model visi dan LLM, membuatnya lebih cocok untuk tugas web di mana struktur halaman sering berubah, memerlukan pemahaman semantik, atau melibatkan operasi multi-langkah. Karena Skyvern mengontrol browser berdasarkan Playwright, ia dapat menyelesaikan navigasi halaman, pengisian formulir, klik tombol, dan ekstraksi data melalui bahasa alami. Ketika proses menghadapi tantangan CAPTCHA, pengembang dapat menggabungkan SDK resmi CapSolver untuk memperoleh Token verifikasi dan kemudian mengisi hasilnya kembali ke halaman saat ini, memungkinkan Skyvern melanjutkan operasi berikutnya seperti pengiriman formulir, transisi halaman, dan verifikasi hasil. Dengan menggabungkan Skyvern dan CapSolver, pengembang dapat membangun alur kerja otomatisasi browser yang lebih fleksibel, mudah dipelihara, dan skalabel, mengurangi biaya pemeliharaan selektor tradisional sambil meningkatkan efisiensi dan stabilitas tugas web kompleks. Menjelaskan dengan jelas lingkup otorisasi, melindungi API Keys, dan memverifikasi serta mencatat hasil otomatisasi adalah prasyarat penting untuk operasi proyek yang stabil.

Referensi

Dapatkan Kode Bonus CapSolver Anda

Tingkatkan anggaran otomatisasi Anda secara instan!
Gunakan kode bonus CAP26 saat menambahkan dana ke akun CapSolver Anda untuk mendapatkan tambahan 5% bonus pada setiap pengisian ulang — tanpa batas.
Dapatkan sekarang di dashboard CapSolver Anda
Kode Bonus

Pertanyaan yang Sering Diajukan (FAQ)

Q1: Bagaimana menangani CAPTCHA dalam iframes?
A1: Pertama, pindah ke konteks iframe menggunakan page.frame_locator('iframe_selector') sebelum menyuntikkan token. Pastikan websiteURL yang dikirim ke CapSolver adalah alamat halaman induk, bukan alamat iframe.

Q2: Apa yang dilakukan jika situs menggunakan callback JavaScript khusus?
A2: Identifikasi nama fungsi callback (misalnya, onCaptchaResolved) dan jalankan melalui Playwright: await page.evaluate("onCaptchaResolved(token)", token).

Q3: Bagaimana meningkatkan tingkat pengenalan ImageToText?
A3: Gunakan parameter module yang spesifik (seperti number untuk CAPTCHA berbasis angka) dan pastikan gambar Base64 yang diekstrak jelas dan beresolusi tinggi.

Q4: Bagaimana mengamankan API Key?
A4: Jangan menyisipkan API Key secara langsung. Gunakan variabel lingkungan (misalnya, os.getenv("CAPSOLVER_API_KEY")) untuk memuatnya secara aman.

Q5: Apakah saya perlu mengimplementasikan mekanisme ulang?
A5: Ya, gunakan perpustakaan seperti tenacity untuk mengimplementasikan ulang eksponensial untuk capsolver.solve() untuk menangani masalah jaringan atau layanan sementara.

Q6: Bagaimana dengan masa berlaku Token?
A6: Token CAPTCHA berlaku singkat (misalnya, 2 menit). Suntikkan dan kirim token secara langsung setelah menerimanya dari CapSolver.

Q7: Apakah Skyvern dapat mengarahkan berbagai jenis CAPTCHA secara otomatis?
A7: Ya, Anda dapat menggunakan kemampuan visi Skyvern untuk mengidentifikasi jenis CAPTCHA terlebih dahulu, lalu secara dinamis membangun payload CapSolver yang sesuai (misalnya, beralih antara ReCaptchaV2TaskProxyLess dan ImageToTextTask).

Q8: Bagaimana lainnya visi Skyvern membantu?
A8: Ini memungkinkan pencarian elemen dinamis (menemukan CAPTCHA tanpa ID tetap), validasi pasca-pengiriman visual (memeriksa pesan keberhasilan), dan deteksi kesalahan visual untuk retry yang lebih cerdas.

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut