
Emma Foster
Machine Learning Engineer

CrewAI mengoordinasikan beberapa agen AI yang bekerja sama pada tugas kompleks — penelitian, pengumpulan data, pembuatan konten, dan otomatisasi alur kerja. Ketika agen mana pun dalam kru menghadapi tantangan CAPTCHA selama interaksi web, seluruh alur kerja multi-agen terhenti. Paket capsolver-agent dari CapSolver terintegrasi langsung ke dalam alur kerja CrewAI, memberikan agen Anda kemampuan untuk menyelesaikan reCAPTCHA, Cloudflare Turnstile, dan tantangan verifikasi lainnya tanpa mengganggu alur eksekusi kolaboratif.
capsolver-agent menyelesaikan melalui layanan AI CapSolver dan mengembalikan hasil yang terstrukturcreate_executor() dan dekorator @tool CrewAICrewAI memungkinkan tim agen AI khusus untuk bekerja sama pada tugas yang membutuhkan berbagai kemampuan. Sebuah kru yang umum mungkin mencakup agen peneliti yang menjelajahi web, agen analis yang memproses data, dan agen penulis yang menghasilkan laporan. Ketika agen peneliti menemui CAPTCHA di situs target, ia tidak dapat melanjutkan — dan karena agen CrewAI mentransfer output secara berurutan, seluruh alur kerja kru terhenti.
Masalah ini diperparah dalam CrewAI karena beberapa agen mungkin membutuhkan akses web. Sebuah kru peningkatan kualitas pemasok mungkin memiliki satu agen yang mengumpulkan data perusahaan dan satu lagi yang memverifikasi informasi kontak — keduanya menemui CAPTCHA di situs berbeda secara bersamaan. Tanpa mekanisme penyelesaian, kru produksi memerlukan pengawasan manusia terus-menerus, yang menghilangkan tujuan pengoordinasian multi-agen otonom.
Menurut Data produksi CapSolver, sekitar 30% tugas web agen menghadapi tantangan verifikasi. Untuk kru CrewAI yang menjalankan 10 tugas tergantung web, itu berarti 3 titik potensi kehentian per run — masing-masing memerlukan intervensi manual tanpa penyelesaian otomatis.
Instal paket yang diperlukan:
# Mesin inti CapSolver (dependensi yang diperlukan)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# Alat agen CapSolver
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# Kerangka kerja CrewAI
pip install crewai crewai-tools
Atur variabel lingkungan:
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
Pastikan Anda memiliki akun CapSolver dengan kredit API yang terisi. Halaman harga CapSolver menunjukkan tarif saat ini per jenis CAPTCHA.
CrewAI menggunakan alat kustom yang didefinisikan dengan dekorator @tool. Bungkus executor CapSolver ke dalam alat yang kompatibel dengan CrewAI:
import asyncio
from crewai import Agent, Task, Crew
from crewai.tools import tool
from capsolver_agent.schema import create_executor
# Buat executor CapSolver
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
@tool("Selesaikan CAPTCHA")
def solve_captcha(captcha_type: str, website_url: str, website_key: str) -> str:
"""Selesaikan tantangan CAPTCHA dan kembalikan token.
Gunakan alat ini saat Anda menemui CAPTCHA di situs web.
Argumen:
captcha_type: Jenis CAPTCHA - 'reCaptchaV2', 'reCaptchaV3', atau 'cloudflare'
website_url: URL lengkap halaman dengan CAPTCHA
website_key: Kunci situs (nilai atribut data-sitekey)
Mengembalikan:
Token CAPTCHA yang telah diselesaikan untuk dikirim dengan formulir
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"CAPTCHA berhasil diselesaikan. Token: {result['solution']['token']}"
else:
return f"Penyelesaian CAPTCHA gagal: {result['error']}"
Alat ini mengikuti pola standar CrewAI — dekorator @tool mendaftarkannya dengan nama dan deskripsi yang digunakan LLM agen untuk menentukan kapan menggunakannya.
Agen CrewAI memilih alat berdasarkan deskripsinya. Alat penyelesaian CAPTCHA yang dengan baik didefinisikan memungkinkan agen untuk secara otonom mengenali kapan ia membutuhkan penyelesaian dan memanggil alat dengan parameter yang benar. Format kembalian yang terstruktur memberikan umpan balik jelas kepada agen tentang keberhasilan atau kegagalan.
asyncio.run() di dalam fungsi alat.Buat agen CrewAI yang memiliki kemampuan penyelesaian CAPTCHA sebagai salah satu alatnya:
from crewai import Agent
# Agen peneliti dengan kemampuan penyelesaian CAPTCHA
researcher = Agent(
role="Spesialis Penelitian Web",
goal="Kumpulkan data dari situs web, menangani tantangan CAPTCHA yang ditemui",
backstory="""Anda adalah ahli peneliti web yang mengumpulkan data dari berbagai sumber online.
Ketika Anda menemui tantangan CAPTCHA di situs web, Anda menggunakan alat solve_captcha untuk menyelesaikannya
dan melanjutkan penelitian Anda. Anda tahu cara mengidentifikasi jenis CAPTCHA: reCaptchaV2 (checkbox atau tidak terlihat), reCaptchaV3
(berdasarkan skor), dan cloudflare (widget Turnstile).""",
tools=[solve_captcha],
verbose=True
)
Untuk kru yang membutuhkan beberapa agen dengan akses web, berikan alat CAPTCHA kepada setiap agen yang mungkin menghadapi verifikasi:
# Agen pengumpul data
data_collector = Agent(
role="Spesialis Pengumpulan Data",
goal="Ekstrak data terstruktur dari situs target",
backstory="Anda mengumpulkan data dari sumber web dan menangani tantangan CAPTCHA menggunakan alat solve_captcha.",
tools=[solve_captcha],
verbose=True
)
# Agen verifikasi
verifier = Agent(
role="Spesialis Verifikasi Data",
goal="Memverifikasi data yang dikumpulkan terhadap sumber otoritatif",
backstory="Anda memverifikasi akurasi data dengan memeriksa sumber resmi, menyelesaikan CAPTCHA ketika diperlukan.",
tools=[solve_captcha],
verbose=True
)
Definisikan tugas yang mungkin memerlukan penyelesaian CAPTCHA dan susun menjadi kru:
from crewai import Task, Crew, Process
# Tugas yang mungkin menghadapi CAPTCHA
research_task = Task(
description="""Telusuri situs web target di {url}.
Jika Anda menemui tantangan CAPTCHA, identifikasi jenisnya dan kunci situs,
lalu gunakan alat solve_captcha untuk mendapatkan token.
Situs ini menggunakan reCAPTCHA v2 dengan kunci situs: {site_key}.
Kumpulkan data yang diperlukan setelah menyelesaikan CAPTCHA.""",
expected_output="Data yang dikumpulkan dari situs web target dengan token CAPTCHA jika diperlukan",
agent=researcher
)
# Tugas analisis (tergantung hasil penelitian)
analysis_task = Task(
description="Analisis data yang dikumpulkan oleh peneliti dan hasilkan laporan ringkasan.",
expected_output="Laporan analisis terstruktur dari data yang dikumpulkan",
agent=data_collector
)
# Buat kru
crew = Crew(
agents=[researcher, data_collector],
tasks=[research_task, analysis_task],
process=Process.sequential,
verbose=True
)
# Jalankan kru
result = crew.kickoff(inputs={
"url": "https://example.com/data",
"site_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
})
print(result)
Proses sekuensial memastikan peneliti menyelesaikan (termasuk penyelesaian CAPTCHA) sebelum pengumpul data memulai analisis. Untuk eksekusi paralel, setiap agen menangani CAPTCHA secara mandiri di situs yang ditugaskan.
Kekuatan CrewAI adalah kolaborasi multi-agen. Dengan memberikan kemampuan penyelesaian CAPTCHA kepada agen yang membutuhkannya, kru beroperasi secara otonom dari awal hingga akhir. Tidak diperlukan intervensi manusia saat tantangan verifikasi muncul — agen mengenali situasi tersebut, memanggil alat, dan melanjutkan.
Situs web yang berbeda menggunakan sistem CAPTCHA yang berbeda. Buat alat khusus untuk skenario umum:
@tool("Selesaikan reCAPTCHA v3")
def solve_recaptcha_v3(website_url: str, website_key: str, page_action: str = "verify") -> str:
"""Selesaikan tantangan reCAPTCHA v3 dengan token skor tinggi.
Gunakan ketika situs menggunakan reCAPTCHA v3 yang tidak terlihat (berdasarkan skor, tidak ada checkbox).
Argumen:
website_url: URL lengkap halaman
website_key: Kunci reCAPTCHA
page_action: Nama tindakan untuk skoring v3 (default: 'verify')
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "reCaptchaV3",
"website_url": website_url,
"website_key": website_key,
"page_action": page_action,
"min_score": 0.7
}))
if result["success"]:
return f"reCAPTCHA v3 diselesaikan. Token: {result['solution']['token']}"
return f"Gagal: {result['error']}"
@tool("Selesaikan Cloudflare Turnstile")
def solve_turnstile(website_url: str, website_key: str) -> str:
"""Selesaikan tantangan Cloudflare Turnstile.
Gunakan ketika situs dilindungi oleh Cloudflare dan menampilkan widget Turnstile.
Argumen:
website_url: URL lengkap halaman
website_key: Kunci Turnstile (dimulai dengan 0x)
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "cloudflare",
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Turnstile diselesaikan. Token: {result['solution']['token']}"
return f"Gagal: {result['error']}"
| Jenis CAPTCHA | Alat yang Digunakan | Waktu Penyelesaian Rata-rata | Umum Di |
|---|---|---|---|
| reCAPTCHA v2 | solve_captcha | 5-12 detik | Halaman login, formulir |
| reCAPTCHA v3 | solve_recaptcha_v3 | 3-8 detik | API, perlindungan tidak terlihat |
| Cloudflare Turnstile | solve_turnstile | 2-5 detik | SaaS modern, Shopify |
Garis panduan reCAPTCHA CapSolver dan guru Cloudflare Turnstile memberikan detail tambahan tentang parameter dan perilaku setiap jenis CAPTCHA.
Dapatkan Kode Bonus Anda: Gunakan kode WEBS di Dasbor CapSolver untuk mendapatkan bonus tambahan 5% pada setiap pengisian ulang. Sempurna untuk tim yang menjalankan alur kerja multi-agen CrewAI dalam skala besar.
Untuk penggunaan CrewAI di produksi, tambahkan penanganan kesalahan dan logika ulang:
@tool("Selesaikan CAPTCHA dengan Ulang Otomatis")
def solve_captcha_robust(captcha_type: str, website_url: str, website_key: str) -> str:
"""Selesaikan CAPTCHA dengan ulang otomatis pada kegagalan.
Mencoba menyelesaikan hingga 3 kali sebelum melaporkan kegagalan.
"""
for attempt in range(3):
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Selesai pada percobaan {attempt + 1}. Token: {result['solution']['token']}"
if attempt < 2:
import time
time.sleep(3)
return f"Gagal setelah 3 percobaan: {result.get('error', 'Kesalahan tidak diketahui')}"
Untuk kru yang memproses beberapa situs, implementasikan pengecekan saldo sebelum memulai:
@tool("Periksa Saldo Penyelesaian CAPTCHA")
def check_balance() -> str:
"""Periksa saldo yang tersisa untuk kredit penyelesaian CAPTCHA."""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"Saldo: ${result['balance']:.2f}"
return "Tidak dapat memeriksa saldo"
Dokumentasi web scraping CapSolver menutupi pola tambahan untuk pengumpulan data volume tinggi yang berlaku untuk agen penelitian CrewAI. Untuk agen yang menggunakan otomatisasi browser, ekstensi CapSolver membantu mengidentifikasi parameter CAPTCHA selama pengembangan.
Mengintegrasikan penyelesaian CAPTCHA ke dalam alur kerja multi-agen CrewAI memerlukan pembungkusan executor CapSolver dalam fungsi @tool yang kompatibel dengan CrewAI, memberikan alat tersebut ke agen yang melakukan tugas web, dan mengumpulkan kru yang dapat beroperasi secara otonom melalui tantangan verifikasi. CapSolver menyediakan infrastruktur penyelesaian berbasis AI yang menjaga alur kerja multi-agen Anda berjalan tanpa intervensi manusia.
Mulailah dengan membuat alat penyelesaian CAPTCHA tunggal, uji dengan satu agen, lalu perluas ke kru lengkap dengan agen yang berinteraksi web. Pendekatan berbasis alat berarti agen memutuskan kapan harus menyelesaikan berdasarkan konteks — tidak diperlukan logika deteksi CAPTCHA yang ditetapkan secara keras.
Ya. Setiap agen yang memiliki alat penyelesaian CAPTCHA dapat memanggilnya secara independen. API CapSolver mendukung pengiriman tugas paralel tanpa pembatasan kecepatan, sehingga eksekusi kru paralel berjalan tanpa konflik. Setiap penyelesaian dilacak dengan ID permintaan unik untuk debugging.
LLM agen merenungkan situasi berdasarkan deskripsi alat dan konteks tugas. Ketika tugas melibatkan akses ke sumber daya yang dilindungi CAPTCHA, agen mengenali kebutuhan dan memanggil alat penyelesaian dengan parameter yang sesuai. Anda juga dapat menyertakan detail CAPTCHA dalam deskripsi tugas untuk panduan eksplisit.
Alat mengembalikan pesan kegagalan ke agen. Agen kemudian dapat mencoba lagi, mencoba parameter alternatif, atau melaporkan kegagalan dalam output tugasnya. Penanganan kesalahan CrewAI memungkinkan kru melanjutkan tugas yang tersisa meskipun satu tugas menghadapi CAPTCHA yang tidak dapat diselesaikan.
Ya. Dalam mode hierarkis, agen manajer mendistribusikan tugas ke anggota kru. Jika tugas yang didistribusikan membutuhkan penyelesaian CAPTCHA, agen yang ditugaskan menggunakan alatnya secara independen. Manajer menerima hasil yang selesai tanpa perlu memahami detail penyelesaian CAPTCHA.
Biaya tergantung pada jumlah CAPTCHA yang dihadapi dan jenisnya. reCAPTCHA v2 biayanya sekitar $2-3 per 1.000 penyelesaian, reCAPTCHA v3 biayanya $1-2 per 1.000, dan Cloudflare Turnstile biayanya $1-2 per 1.000. Sebuah tim penelitian CrewAI yang menghadapi 3-5 CAPTCHA per eksekusi biayanya $0.005-0.015 per eksekusi.
Panduan langkah demi langkah untuk mengintegrasikan penyelesaian reCAPTCHA ke dalam SDK Agens OpenAI menggunakan function_tool CapSolver, dengan contoh kode asinkron untuk v2 dan v3.

Bangun alur kerja solver Cloudflare Turnstile LangGraph dengan CapSolver, penanganan sesi Playwright, tahapan kebijakan, pengulangan, verifikasi, dan ulasan.
