CAPSOLVER
Blog
Cara menyelesaikan CAPTCHA di Agen LlamaIndex

Cara menyelesaikan CAPTCHA dalam agen LlamaIndex

Logo of CapSolver

Emma Foster

Machine Learning Engineer

31-Jul-2026

LlamaIndex agent mengatur alur kerja pengambilan data, indeks, dan pertanyaan di berbagai sumber. Ketika agen ini mengakses sumber data berbasis web yang dilindungi tantangan CAPTCHA, mereka memerlukan mekanisme penyelesaian untuk melanjutkan pengumpulan data. Paket capsolver-agent dari CapSolver menyediakan skema alat yang kompatibel dengan sistem FunctionTool LlamaIndex, memungkinkan agen Anda menyelesaikan reCAPTCHA, Cloudflare Turnstile, dan tantangan verifikasi lainnya sebagai bagian dari alur kerja data Anda.

TL;DR

  • Agent LlamaIndex terhambat saat sumber data web dilindungi oleh verifikasi CAPTCHA
  • CapSolver terintegrasi melalui wrapper FunctionTool LlamaIndex dengan penyelesaian asinkron
  • Executor capsolver-agent menangani penyelesaian dan mengembalikan hasil terstruktur untuk loop pemikiran agen
  • Mendukung reCAPTCHA v2/v3 dan Cloudflare Turnstile — jenis verifikasi web paling umum
  • Integrasi memakan waktu kurang dari 15 baris menggunakan create_executor() dan FunctionTool.from_defaults()

Mengapa Agent LlamaIndex Membutuhkan Pemecahan CAPTCHA

LlamaIndex unggul dalam membangun agen yang mengambil, mengindeks, dan menanyakan data dari berbagai sumber. Ketika sumber ini mencakup halaman web, API, atau database yang dilindungi sistem CAPTCHA, pipeline pengumpulan data agen terhambat. Agent RAG yang perlu mengindeks dokumentasi dari situs yang dilindungi CAPTCHA, atau agent penelitian yang menanyakan beberapa sumber web, tidak dapat melanjutkan tanpa penyelesaian verifikasi.

Masalah ini terutama parah untuk ekosistem koneksi data LlamaIndex. Koneksi berbasis web yang mengambil halaman untuk pengindeksan menghadapi CAPTCHA setelah akses berulang. Tanpa alat penyelesaian, agen akan melewatkan sumber (data tidak lengkap) atau gagal sepenuhnya (pipeline rusak).

Integrasi alat CapSolver mengikuti pola standar LlamaIndex: definisikan fungsi, bungkus sebagai FunctionTool, dan tambahkan ke daftar alat agen. Mesin pemikiran agen menentukan kapan memanggil penyelesaian berdasarkan konteks tugas.

Apa yang Anda Butuhkan Sebelum Memulai

bash Copy
# Paket CapSolver
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git

# LlamaIndex
pip install llama-index llama-index-llms-openai
bash Copy
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"

Langkah 1 — Membuat FunctionTool Pemecah CAPTCHA

python Copy
import asyncio
from llama_index.core.tools import FunctionTool
from capsolver_agent.schema import create_executor

executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")

def solve_captcha(tipe_captcha: str, url_website: str, kunci_website: str) -> str:
    """Selesaikan tantangan CAPTCHA dan kembalikan token verifikasi.
    
    Gunakan saat mengakses sumber web yang dilindungi verifikasi CAPTCHA.
    
    Args:
        tipe_captcha: 'reCaptchaV2', 'reCaptchaV3', atau 'cloudflare'
        url_website: URL lengkap halaman yang dilindungi CAPTCHA
        kunci_website: Kunci situs (nilai atribut data-sitekey)
    
    Returns:
        String token yang selesai atau pesan kesalahan
    """
    result = asyncio.run(executor.execute("solve_captcha", {
        "captcha_type": tipe_captcha,
        "website_url": url_website,
        "website_key": kunci_website
    }))
    if result["success"]:
        return f"CAPTCHA selesai. Token: {result['solution']['token']}"
    return f"Gagal: {result['error']}"

# Bungkus sebagai FunctionTool LlamaIndex
captcha_tool = FunctionTool.from_defaults(
    fn=solve_captcha,
    name="solve_captcha",
    description="Selesaikan tantangan CAPTCHA (reCAPTCHA v2/v3, Cloudflare Turnstile) di halaman web yang dilindungi"
)

Langkah 2 — Membangun Agent LlamaIndex dengan Kemampuan CAPTCHA

python Copy
from llama_index.core.agent import ReActAgent
from llama_index.llms.openai import OpenAI

# Buat LLM
llm = OpenAI(model="gpt-4o", temperature=0)

# Buat agen dengan alat penyelesaian CAPTCHA
agent = ReActAgent.from_tools(
    tools=[captcha_tool],
    llm=llm,
    verbose=True
)

# Jalankan agen
response = agent.chat(
    "Saya perlu mengakses https://example.com/data yang memiliki reCAPTCHA v2. "
    "Kunci situsnya adalah 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI. "
    "Selesaikan dan beri saya tokennya."
)
print(response)

Langkah 3 — Terintegrasi dengan Koneksi Data LlamaIndex

Untuk agen yang mengumpulkan data web, gabungkan penyelesaian CAPTCHA dengan pemuatan data:

python Copy
from llama_index.core import VectorStoreIndex, Document

def fetch_protected_page(url: str, kunci_website: str) -> str:
    """Ambil halaman yang dilindungi CAPTCHA dengan menyelesaikan terlebih dahulu."""
    # Selesaikan CAPTCHA
    token = solve_captcha("reCaptchaV2", url, kunci_website)
    if "Gagal" in token:
        return ""
    
    # Gunakan token untuk mengakses halaman
    import requests
    response = requests.post(url, data={"g-recaptcha-response": token.split("Token: ")[1]})
    return response.text

# Buat alat khusus untuk pengumpulan data yang dilindungi
protected_fetch_tool = FunctionTool.from_defaults(
    fn=fetch_protected_page,
    name="fetch_protected_page",
    description="Ambil konten dari halaman web yang dilindungi CAPTCHA dengan menyelesaikan verifikasi terlebih dahulu"
)

# Agen dengan kemampuan penyelesaian dan pengambilan
data_agent = ReActAgent.from_tools(
    tools=[captcha_tool, protected_fetch_tool],
    llm=llm,
    verbose=True
)

Langkah 4 — Pola Produksi

python Copy
def solve_captcha_with_retry(tipe_captcha: str, url_website: str, kunci_website: str, max_retries: int = 3) -> str:
    """Penyelesaian CAPTCHA dengan logika retry untuk produksi."""
    for attempt in range(max_retries):
        result = asyncio.run(executor.execute("solve_captcha", {
            "captcha_type": tipe_captcha,
            "website_url": url_website,
            "website_key": kunci_website
        }))
        if result["success"]:
            return f"Selesai (percobaan {attempt+1}). Token: {result['solution']['token']}"
        if attempt < max_retries - 1:
            import time
            time.sleep(3)
    return f"Gagal setelah {max_retries} percobaan: {result.get('error')}"

# Alat produksi dengan retry
production_captcha_tool = FunctionTool.from_defaults(
    fn=solve_captcha_with_retry,
    name="solve_captcha",
    description="Selesaikan CAPTCHA dengan retry otomatis saat gagal"
)
Jenis CAPTCHA Parameter Waktu Penyelesaian Biaya per 1K
reCAPTCHA v2 reCaptchaV2 5-12 detik $2-3
reCAPTCHA v3 reCaptchaV3 3-8 detik $1-2
Cloudflare Turnstile cloudflare 2-5 detik $1-2

Dapatkan Kode Bonus Anda: Gunakan kode WEBS di Dashboard CapSolver untuk mendapatkan bonus tambahan 5% pada setiap pengisian ulang.

Dokumentasi API CapSolver menjelaskan parameter tambahan. Untuk mengidentifikasi jenis CAPTCHA, gunakan ekstensi CapSolver. Panduan pencarian web CapSolver menjelaskan pola pengumpulan data yang berlaku untuk koneksi data LlamaIndex.

Kesimpulan

Mengintegrasikan penyelesaian CAPTCHA ke dalam agent LlamaIndex memerlukan pembungkus executor CapSolver dalam FunctionTool dan menambahkannya ke daftar alat agen ReAct. Loop pemikiran agen menentukan kapan memanggil penyelesaian berdasarkan konteks tugas. CapSolver menyediakan infrastruktur penyelesaian yang menangani reCAPTCHA dan Cloudflare Turnstile melalui API yang terpadu, menjaga alur kerja data LlamaIndex tetap berjalan tanpa gangguan.

FAQ

Apakah CapSolver berjalan dengan agen async LlamaIndex?

Ya. Executor capsolver-agent sepenuhnya asinkron. Untuk agen async LlamaIndex, gunakan await executor.execute() secara langsung alih-alih membungkus dengan asyncio.run().

Apakah saya bisa menggunakan ini dengan koneksi pembaca web LlamaIndex?

Ya. Gabungkan alat penyelesaian CAPTCHA dengan pembaca web khusus yang menangani verifikasi sebelum mengambil konten halaman. Agen dapat menyelesaikan CAPTCHA terlebih dahulu, lalu meneruskan token ke pembaca web untuk akses terotentikasi.

Apa yang terjadi jika agen LlamaIndex saya menghadapi jenis CAPTCHA yang tidak dikenal?

Alat get_supported_captchas mengembalikan daftar jenis yang didukung. Jika agen menghadapi jenis yang tidak didukung, ia menerima pesan kesalahan yang jelas dan dapat melaporkannya ke pengguna alih-alih gagal diam-diam.

Bagaimana perbandingannya dengan menggunakan capsolver-mcp dengan LlamaIndex?

capsolver-mcp digunakan untuk klien MCP (Claude Desktop, Cursor). Untuk agen LlamaIndex yang berjalan dalam kode, gunakan capsolver-agent dengan FunctionTool — ini memberi Anda kontrol programatik langsung dalam kerangka LlamaIndex.

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