Cara Menyelesaikan reCAPTCHA v3 di LlamaIndex Agens

Emma Foster
How to use CapSolver
28-Aug-2026
TL;DR
- Bungkus fungsi CapSolver async yang sempit dengan LlamaIndex
FunctionTool; jangan ekspos kunci API, kredensial proxy, kuki, atau objek browser mentah ke model. - Baca
websiteURL,websiteKey, danpageActiondari alur kerja yang diotorisasi secara langsung. Jangan pernah biarkan agen membuatnya. - Gunakan
ReCaptchaV3TaskProxyLessuntuk mode token server-proxy atauReCaptchaV3Tasksaat proxy yang disetujui harus disediakan. - Tangani token yang dikembalikan sebagai data runtime yang bersifat sementara, kirimkan segera melalui kode yang tepercaya, dan verifikasi status aplikasi sebelum melanjutkan.
- Batasi jumlah percobaan penyelesaian, arahkan ke ulasan operator untuk kegagalan berulang, dan catat hanya metadata yang telah direddact.
Pendahuluan
Solver reCAPTCHA v3 LlamaIndex yang andal adalah alat pemulihan yang terstruktur, bukan kemampuan penjelajahan yang tidak terbatas. Agen LlamaIndex harus menentukan kapan tugas yang disetujui terblokir, sementara kode yang tepercaya memvalidasi target, membaca kunci situs dan tindakan yang tepat dari halaman saat ini, memanggil CapSolver, mengirim token, dan memverifikasi status yang diharapkan. Pemisahan ini penting karena reCAPTCHA v3 berjalan tanpa checkbox interaktif dan mengevaluasi permintaan yang spesifik terhadap tindakan. Token yang dibuat untuk URL yang salah atau pageAction bisa ditolak bahkan ketika panggilan API itu sendiri berhasil. Panduan ini menunjukkan bidang tugas CapSolver resmi, FunctionTool LlamaIndex async, kontrol kebijakan sisi server, penanganan mode sesi, hasil yang terstruktur, ulang yang terbatas, verifikasi browser, dan observabilitas produksi.
Pahami Batas Alat LlamaIndex
Dokumentasi alat resmi LlamaIndex menjelaskan bahwa FunctionTool mengelilingi fungsi Python sinkron atau asinkron dan dapat menginfer skema fungsi. Ia juga mencatat bahwa nama alat, deskripsi, dan deskripsi argumen secara kuat memengaruhi bagaimana model memilih dan memanggil alat.
Untuk solver reCAPTCHA v3 LlamaIndex, pertahankan alat yang sempit:
text
Agen LlamaIndex
↓ memilih alat yang terstruktur
Pembungkus FunctionTool
↓ memvalidasi referensi yang tepercaya
Executor CapSolver
↓ mengembalikan solusi yang bersifat sementara
Layanan browser
↓ mengirim dan memverifikasi
Agen LlamaIndex melanjutkan alur kerja
Dokumentasi CapSolver AI Agents menjelaskan pembagian kerja yang sama: model menentukan, adapter mengekspos skema, dan inti mengeksekusi pekerjaan tantangan yang didukung.
Kenali Parameter reCAPTCHA v3 yang Diperlukan
Dokumentasi reCAPTCHA v3 CapSolver mendefinisikan empat tipe tugas:
| Tipe tugas | Mode proxy | Enterprise |
|---|---|---|
ReCaptchaV3TaskProxyLess |
Proxy server CapSolver | Tidak |
ReCaptchaV3Task |
Proxy Anda yang disetujui | Tidak |
ReCaptchaV3EnterpriseTaskProxyLess |
Proxy server CapSolver | Ya |
ReCaptchaV3EnterpriseTask |
Proxy Anda yang disetujui | Ya |
Bidang dasar adalah:
| Bidang | Persyaratan | Sumber tepercaya |
|---|---|---|
websiteURL |
Wajib | URL halaman yang diotorisasi saat ini |
websiteKey |
Wajib | Konfigurasi halaman yang hidup |
pageAction |
Biasanya wajib untuk v3 | Tindakan grecaptcha.execute halaman |
proxy |
Wajib untuk tugas non-proxyless | Profil proxy yang disetujui sisi server |
enterprisePayload |
Bersyarat | Konfigurasi Enterprise yang hidup |
isSession |
Bersyarat | Alur kerja yang disetujui spesifik target |
< a href="https://developers.google.com/recaptcha/docs/v3" rel="nofollow">pedoman reCAPTCHA v3 Google menjelaskan nama tindakan sebagai bagian dari integrasi. Tindakan yang diamati di halaman harus dipertahankan secara tepat.
< a href="https://www.capsolver.com/blog/recaptcha" rel="nofollow">blog reCAPTCHA CapSolver memiliki panduan tambahan untuk penyelesaian masalah dan implementasi.
Jangan Biarkan Model Membuat Parameter Target
Berikan referensi ke state server, bukan nilai sembarangan.
python
from dataclasses import dataclass
from urllib.parse import urlparse
@dataclass(frozen=True)
class CaptchaContext:
context_id: str
website_url: str
website_key: str
page_action: str
enterprise: bool = False
proxy_profile: str | None = None
session_mode: bool = False
TRUSTED_CONTEXTS: dict[str, CaptchaContext] = {}
ALLOWED_HOSTS = {"staging.example.com", "portal.example.org"}
def get_trusted_context(context_id: str) -> CaptchaContext:
context = TRUSTED_CONTEXTS.get(context_id)
if context is None:
raise ValueError("Konteks CAPTCHA tidak dikenal")
host = urlparse(context.website_url).hostname
if host not in ALLOWED_HOSTS:
raise PermissionError("Target di luar kebijakan host yang disetujui")
if not context.website_key or not context.page_action:
raise ValueError("Konteks tepercaya kehilangan parameter v3 yang diperlukan")
return context
Model hanya menerima context_id. Layanan browser memiliki halaman saat ini, kunci situs, tindakan, dan ikatan proxy.
Instal Paket yang Didukung
Dokumentasi CapSolver Agent yang disediakan pengguna menentukan instalasi paket inti sebelum paket agen:
bash
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
pip install llama-index-core
Atur kunci API di lingkungan runtime:
bash
export CAPSOLVER_API_KEY="kunci-api-capsolver-anda"
Jangan tempel kunci ke prompt, notebook, dataset skenario, atau jejak. FAQ CapSolver AI dan otomatisasi menjelaskan model integrasi.
Buat Executor CapSolver Sisi Server
capsolver-agent menyediakan create_executor() untuk batas model–adapter–core.
python
import os
from capsolver_agent.schema import create_executor
executor = create_executor(
api_key=os.environ["CAPSOLVER_API_KEY"],
default_timeout=120,
)
Executor mengirim solve_captcha ke CapSolver Core dan mengembalikan hasil yang terstruktur. Pertahankan di kode aplikasi yang tepercaya.
Tulis Fungsi Selesaikan Async yang Sempit
Fungsi menyelesaikan konteks tepercaya, memilih tipe tugas resmi, dan memanggil executor.
python
from typing import Annotated
async def solve_recaptcha_v3(
context_id: Annotated[
str,
"ID yang tidak terlihat untuk konteks CAPTCHA browser yang disetujui dan saat ini"
],
) -> dict:
"""Selesaikan reCAPTCHA v3 untuk konteks browser yang disetujui.
Hanya gunakan ketika alur kerja saat ini melaporkan checkpoint reCAPTCHA v3 yang didukung.
Jangan tebak atau ubah URL, kunci situs, atau tindakan target.
"""
context = get_trusted_context(context_id)
captcha_type = (
"reCaptchaV3Enterprise"
if context.enterprise
else "reCaptchaV3"
)
args = {
"captcha_type": captcha_type,
"website_url": context.website_url,
"website_key": context.website_key,
"page_action": context.page_action,
}
if context.proxy_profile:
args["proxy"] = resolve_proxy(context.proxy_profile)
result = await executor.execute("solve_captcha", args)
if not result.get("success"):
return {
"success": False,
"context_id": context_id,
"error": normalize_error(result.get("error")),
}
solution = result.get("solution") or {}
token = solution.get("token")
if not token:
return {
"success": False,
"context_id": context_id,
"error": "solusi tidak mengandung token",
}
receipt = await submit_solution_and_verify(
context_id=context_id,
token=token,
session_cookie=extract_session_cookie(solution),
)
return {
"success": receipt["verified"],
"context_id": context_id,
"verified": receipt["verified"],
"next_state": receipt["next_state"],
}
resolve_proxy, normalize_error, dan submit_solution_and_verify adalah adapter kebijakan yang dimiliki aplikasi. Mereka tidak boleh terlihat oleh model.
Bungkus Fungsi dengan LlamaIndex FunctionTool
python
from llama_index.core.tools import FunctionTool
tool = FunctionTool.from_defaults(
async_fn=solve_recaptcha_v3,
name="solve_recaptcha_v3",
description=(
"Selesaikan reCAPTCHA v3 untuk konteks browser yang disetujui. "
"Input harus ID konteks yang tidak terlihat yang disediakan oleh layanan browser. "
"Jangan panggil untuk halaman yang tidak didukung atau host yang tidak disetujui."
),
)
Periksa skema selama pengembangan:
python
schema = tool.metadata.get_parameters_dict()
print(schema)
Ini mengikuti pola FunctionTool LlamaIndex yang telah didokumentasikan sambil mengurangi permukaan argumen model menjadi satu identifikasi yang tidak terlihat.
Hubungkan Alat ke Agen LlamaIndex
python
from llama_index.core.agent.workflow import FunctionAgent
agent = FunctionAgent(
llm=llm,
tools=[tool],
system_prompt=(
"Jalankan hanya alur kerja browser yang disetujui. Ketika layanan browser "
"melaporkan checkpoint reCAPTCHA v3 yang didukung, panggil "
"solve_recaptcha_v3 dengan konteks_id yang disediakan. Panggil sekali. "
"Lanjutkan hanya jika verified=true; jika tidak, minta ulasan."
),
)
Jalankan alur kerja dengan pengamatan browser yang tepercaya:
python
response = await agent.run(
"Alur kerja staging yang disetujui menunggu di checkpoint reCAPTCHA v3. "
"Gunakan context_id ctx_7f19 dan lanjutkan hanya jika verified."
)
Agen tidak pernah melihat kunci API, proxy mentah, token, atau kuki.
Baca pageAction dari Halaman yang Aktif
Solver reCAPTCHA v3 LlamaIndex yang andal tidak boleh menggunakan tindakan umum seperti login untuk semua target. Layanan browser harus membaca integrasi target saat ini.
python
async def collect_v3_context(page, context_id: str) -> CaptchaContext:
website_url = page.url
host = urlparse(website_url).hostname
if host not in ALLOWED_HOSTS:
raise PermissionError("Target tidak disetujui")
values = await page.evaluate("""
() => {
const scripts = Array.from(document.scripts)
.map(s => s.textContent || '')
.join('\n');
const siteKey =
document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey')
|| null;
const actionMatch = scripts.match(
/grecaptcha(?:\.enterprise)?\.execute\([^,]+,\s*\{\s*action:\s*['\"]([^'\"]+)/
);
return {
siteKey,
pageAction: actionMatch ? actionMatch[1] : null,
enterprise: scripts.includes('grecaptcha.enterprise')
};
}
""")
if not values["siteKey"] or not values["pageAction"]:
raise RuntimeError("Tidak dapat membaca parameter v3 yang diperlukan")
return CaptchaContext(
context_id=context_id,
website_url=website_url,
website_key=values["siteKey"],
page_action=values["pageAction"],
enterprise=values["enterprise"],
)
Untuk integrasi yang kompleks, gunakan panduan ekstensi CapSolver untuk memeriksa parameter halaman selama pengembangan dan pengujian yang disetujui.
Kelola Mode Sesi dengan Cermat
Dokumentasi resmi v3 CapSolver mencatat bahwa beberapa target dapat mengembalikan recaptcha-ca-t saat isSession diaktifkan. Tangani sebagai materi sesi yang sensitif dan bersifat sementara.
python
SESSION_KEYS = {
"recaptcha-ca-t",
"recaptcha_ca_t",
}
def extract_session_cookie(solution: dict) -> str | None:
raw = solution.get("raw") or {}
for key in SESSION_KEYS:
value = solution.get(key) or raw.get(key)
if value:
return value
return None
Hanya aktifkan mode sesi ketika integrasi target membutuhkannya dan alur kerja diotorisasi. Simpan nilai tersebut dalam memori proses atau penyimpanan terenkripsi sementara; jangan tempatkan di konteks LlamaIndex.
Kirim dan Verifikasi dalam Kode Browser yang Tepercaya
< a href="https://developers.google.com/recaptcha/docs/verify" rel="nofollow">dokumentasi verifikasi sisi server Google menjelaskan bahwa situs memvalidasi token di backend-nya. Otomatisasi Anda harus mengirim token melalui alur aplikasi yang disetujui, lalu memverifikasi status halaman yang dihasilkan.
python
async def submit_solution_and_verify(
context_id: str,
token: str,
session_cookie: str | None,
) -> dict:
browser_state = BROWSER_CONTEXTS[context_id]
page = browser_state.page
if session_cookie:
await browser_state.context.add_cookies([{
"name": "recaptcha-ca-t",
"value": session_cookie,
"domain": urlparse(page.url).hostname,
"path": "/",
"secure": True,
}])
await page.evaluate(
"""({ token }) => {
let input = document.querySelector(
'textarea[name="g-recaptcha-response"]'
);
if (!input) {
input = document.createElement('textarea');
input.name = 'g-recaptcha-response';
input.style.display = 'none';
document.body.appendChild(input);
}
input.value = token;
input.dispatchEvent(new Event('change', { bubbles: true }));
}""",
{"token": token},
)
await trigger_trusted_callback(page, browser_state.callback_name)
try:
await page.locator(browser_state.success_selector).wait_for(
state="visible",
timeout=15000,
)
return {"verified": True, "next_state": "continue"}
except Exception:
return {"verified": False, "next_state": "operator_review"}
Penemuan callback adalah spesifik target. Tangkap di konteks browser yang tepercaya daripada meminta model untuk menghasilkan JavaScript.
< a href="https://www.capsolver.com/blog/reCAPTCHA/captcha-solver-response-api" rel="nofollow">panduan API respons reCAPTCHA CapSolver menjelaskan pola penanganan respons yang umum.
Terapkan Satu Percobaan dan Status yang Jelas
python
from enum import Enum
class RecoveryState(str, Enum):
DETECTED = "detected"
SOLVING = "solving"
VERIFIED = "verified"
REVIEW_REQUIRED = "review_required"
ATTEMPTS: dict[str, int] = {}
async def guarded_solve(context_id: str) -> dict:
attempts = ATTEMPTS.get(context_id, 0)
if attempts >= 1:
return {
"success": False,
"context_id": context_id,
"next_state": RecoveryState.REVIEW_REQUIRED,
"error": "anggaran pemulihan habis",
}
ATTEMPTS[context_id] = attempts + 1
return await solve_recaptcha_v3(context_id)
Panggilan berulang sering menandakan parameter usang, tindakan yang salah, state browser yang kedaluwarsa, atau jalur yang tidak didukung. Hentikan loop dan kumpulkan diagnostik.
Catat Observabilitas yang Direddact
Catat metadata operasional, bukan rahasia.
python
from datetime import datetime, timezone
def recovery_event(context: CaptchaContext, result: dict) -> dict:
return {
"event": "recaptcha_v3_recovery",
"context_id": context.id_konteks,
"host": urlparse(context.url_website).hostname,
"page_action": context.tindakan_halaman,
"enterprise": context.enterprise,
"session_mode": context.mode_sesi,
"success": result.get("success", False),
"next_state": str(result.get("next_state")),
"observed_at": datetime.now(timezone.utc).isoformat(),
}
Jangan log websiteKey jika kebijakan Anda menganggapnya sebagai konfigurasi, dan jangan pernah log token solusi, kuki sesi, kunci API, proxy mentah, atau HTML halaman pribadi lengkap.
Pertanyaan yang Sering Diajukan tentang Kesalahan CapSolver (https://www.capsolver.com/faq/errors-and-troubleshooting) dapat membantu menormalkan kategori kesalahan.
Kode Bonus: Gunakan kode WEBS di Dashboard CapSolver untuk mendapatkan bonus tambahan 5% pada setiap pengisian ulang.
Ringkasan Perbandingan
| Pola integrasi | Input model | Risiko kebocoran rahasia | Penggunaan terbaik |
|---|---|---|---|
| Model menyediakan semua bidang tugas | URL, kunci, tindakan, proxy | Tinggi | Hindari di produksi |
| Fungsi Tool yang diberi tipe dengan bidang yang diverifikasi | Bidang yang jelas | Menengah | Prototipe yang dikendalikan |
| ID konteks yang tidak terlihat ditambah validasi server | Hanya referensi konteks | Rendah | Alur kerja LlamaIndex produksi |
Inti browser-only solve_on_page |
Tidak ada parameter model | Terendah | Pemulihan deterministik Playwright |
Pola konteks yang tidak terlihat memberi agen LlamaIndex cukup kontrol untuk meminta pemulihan tanpa memungkinkannya mengubah parameter sensitif atau spesifik tujuan.
Daftar Periksa Produksi
- Simpan kunci API dan profil proxy di manajer rahasia.
- Izinkan hanya host yang disetujui dan tujuan alur kerja yang tepat.
- Baca
websiteKeydanpageActiondari halaman saat ini. - Sesuaikan Enterprise dan pengaturan sesi dengan integrasi target.
- Kirim token secara langsung melalui kode browser yang tepercaya.
- Verifikasi status aplikasi yang diharapkan sebelum melanjutkan.
- Izinkan satu percobaan penyelesaian, lalu arahkan ke tinjauan operator.
- Redakt token, kuki, proxy, dan kredensial dari jejak.
- Uji ulang skema alat setiap kali SDK atau prompt berubah.
Halaman produk CapSolver (https://www.capsolver.com/products) mencantumkan kategori solusi yang didukung, sementara blog CapSolver AI (https://www.capsolver.com/blog/ai) membahas pola integrasi agen terkait.
Penggunaan Bertanggung Jawab
Gunakan alur kerja ini hanya pada aplikasi yang Anda miliki, uji, atau memiliki izin eksplisit untuk otomatisasi. Kemampuan teknis tidak memberi akses. Hormati ketentuan tujuan, batas kecepatan, persyaratan privasi, dan batas otentikasi. Jangan gunakan alat agen untuk mengakses akun pribadi, catatan terbatas, atau alur kerja pihak ketiga tanpa izin. Letakkan tindakan berdampak tinggi seperti pengiriman, pembayaran, pemesanan, dan perubahan akun di belakang langkah kebijakan dan konfirmasi terpisah.
Kesimpulan
Solver reCAPTCHA v3 LlamaIndex produksi harus mengekspos satu fungsi pemulihan yang sempit dan berjenis. Layanan browser menyediakan ID konteks yang tepercaya, kode sisi server mempertahankan URL, kunci situs, tindakan, mode Enterprise, dan kebijakan proxy, CapSolver mengembalikan solusi berumur pendek, dan browser memverifikasi status yang diharapkan sebelum agen melanjutkan.
Mulai integrasi LlamaIndex yang disetujui dengan CapSolver, uji di alur kerja staging yang dikendalikan, dan tambahkan penguatan parameter dan asersi ulang sebelum produksi.
FAQ
Apakah reCAPTCHA v3 memerlukan klik kotak centang?
Tidak. reCAPTCHA v3 berbasis skor dan biasanya berjalan di latar belakang. Alur kerja harus mempertahankan kunci situs, URL, dan tindakan target.
Mengapa pageAction penting?
Tindakan mengidentifikasi operasi yang dievaluasi, seperti login atau kirim. Gunakan tindakan yang tepat yang dibaca dari integrasi saat ini daripada nilai umum.
Apakah agen LlamaIndex menerima token?
Lebih baik pengiriman sisi server dan hanya kembalikan status yang diverifikasi. Token adalah data runtime berumur pendek dan tidak boleh masuk ke konteks model atau log.
Kapan mode sesi harus diaktifkan?
Aktifkan hanya ketika target yang sah membutuhkan nilai sesi yang dikembalikan. Simpan nilai tersebut di penyimpanan runtime yang dienkripsi berumur pendek.
Apa yang harus terjadi setelah percobaan gagal?
Berhenti setelah anggaran percobaan yang ditentukan, catat peristiwa diagnostik yang telah direkam, perbarui parameter halaman yang tepercaya jika sesuai, dan arahkan alur kerja ke tinjauan operator.
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

Cara menginstal CapSolver MCP dari Registri MCP Resmi
Cari CapSolver MCP di Registry MCP Resmi, pasang versi 0.1.3 dengan uvx atau pip, konfigurasi klien lokal, dan verifikasi alat stdio.

Khadija Santos
18-Sep-2026

Alat CAPTCHA AI Pydantic: Input yang Diketik dan Hasil Pemecah
Tambahkan alat CAPTCHA ke Pydantic AI menggunakan adapter CapSolver resmi, uji eksekusi alat secara lokal, dan kelola input yang ditentukan tipe serta hasil penyelesaian yang terstruktur.

Emma Foster
18-Sep-2026

MCP vs CLI untuk Agen AI: Biaya Konteks dan Penanganan Kegagalan
Membandingkan antarmuka MCP dan CLI untuk agen AI dalam hal penemuan alat, biaya konteks, keamanan, debugging, penanganan kegagalan, dan arsitektur hibrid.

Nikolai Smirnov
18-Sep-2026

Cara Mengatasi Banyak Widget CAPTCHA dalam Agen Browser Kecerdasan Buatan
Menangani beberapa widget CAPTCHA di satu halaman dengan pemilikan formulir yang jelas, parameter solver, pengalihan hasil, dan pemeriksaan tindakan agen AI yang diinginkan.

Lucas Mitchell
15-Sep-2026

Agen AI vs Skrip: Bagaimana Memilih untuk Otomasi Web
Pilih antara agen AI, skrip, dan otomatisasi web hibrid berdasarkan ketidakpastian tugas, kemampuan pengujian, biaya, dan kontrol yang diperlukan untuk eksekusi yang andal.

Lucas Mitchell
11-Sep-2026

Server MCP CapSolver Sekarang Tersedia untuk Agens AI
Pasang Server MCP CapSolver dari PyPI dan berikan agen AI yang kompatibel lima alat untuk penanganan CAPTCHA yang diizinkan melalui Protokol Konteks Model.

Emma Foster
10-Sep-2026

