
Emma Foster
Machine Learning Engineer

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.
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.
Skyvern saat ini memerlukan Python 3.11, 3.12, atau 3.13. Instal Skyvern, SDK CapSolver, dan Chromium:
pip install "skyvern[local]"
pip install --upgrade capsolver
python -m playwright install chromium
# 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:
token = solution["gRecaptchaResponse"]
Peran parameter:
websiteURL dan websiteKey harus konsisten dengan konfigurasi halaman saat ini.
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.
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()
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:
Menulis ke bidang tersembunyi g-recaptcha-response;
Memanggil callback JavaScript yang dikonfigurasi di halaman;
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.
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?
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.

ImageToTextTask memerlukan konversi gambar CAPTCHA ke Base64 dan mengirimkannya melalui parameter body. Jika src gambar adalah URL Data, misalnya:
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:
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:
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
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.

Misalnya, ketika mengenali CAPTCHA berbasis angka, Anda dapat mengubah parameter tugas menjadi:
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.
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.
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
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.
Perbaiki penanganan captcha dalam otomatisasi pengajuan persidangan untuk LegalTech: alur kerja dan alat yang sesuai regulasi untuk mempermudah e-filing, mengurangi kesalahan, dan mempercepat pengajuan.

Pelajari cara menyelesaikan captcha dalam pelacakan inventaris e-commerce dengan metode praktis, tips otomatisasi, dan kepatuhan untuk menjaga data stok tetap akurat dan skalabel.
