
Emma Foster
Machine Learning Engineer

Mungkinkan asisten AI Anda untuk memicu ekstraksi data otomatis di sisi server — tanpa injeksi browser, tanpa kode.
Saat Agen AI Anda menavigasi web, CAPTCHA adalah hambatan utama. Halaman yang dilindungi memblokir agen, formulir tidak dapat dikirim, dan tugas terhenti, menunggu intervensi manusia. Hal ini secara signifikan membatasi efisiensi dan otonomi Agen AI dalam pengikisan data otomatis dan pemrosesan informasi.
Untuk mengatasi masalah inti ini, kami menawarkan dua solusi kuat yang menggabungkan OpenClaw dan CapSolver:
Pendekatan 1 — Integrasi Ekstensi Browser
Muat ekstensi CapSolver Chrome ke dalam lingkungan browser OpenClaw. Ekstensi ini secara tak terlihat mendeteksi dan menyelesaikan CAPTCHA di sisi klien, tanpa keterlibatan n8n, memungkinkan Agen AI untuk melewati verifikasi dengan mulus saat menavigasi halaman. (Lihat panduan lengkap kami tentang pendekatan ekstensi)
Pendekatan 2 — Alur Otomatisasi n8n Sisi Server (Fokus Panduan ini)
OpenClaw memicu satu permintaan webhook, dan n8n kemudian menyelesaikan CAPTCHA melalui API CapSolver, mengirimkan formulir, dan mengembalikan konten halaman yang bersih ke Agen AI Anda. Dalam proses ini, Agen AI tidak pernah secara langsung menangani verifikasi CAPTCHA.
Apa yang akan Anda bangun:
Alur otomatisasi CAPTCHA sisi server yang dipicu OpenClaw melalui webhook. n8n akan memanfaatkan CapSolver untuk menyelesaikan CAPTCHA, mengirimkan formulir, dan mengembalikan konten halaman yang diproses ke Agen AI Anda, memastikan kelancaran pelaksanaan tugas ekstraksi data.
Sebelum Anda mulai, pastikan Anda memiliki lingkungan dan alat berikut:
openclaw gateway start)CapSolver tersedia sebagai integrasi resmi di n8n, tidak memerlukan instalasi node komunitas tambahan. Anda dapat menemukannya langsung di panel node saat membangun alur kerja Anda. Untuk mengaktifkan node CapSolver untuk mengautentikasi dengan akun Anda, Anda perlu membuat kredensial di n8n.
Buka kanvas n8n Anda, klik + untuk menambahkan node, dan cari CapSolver. Node ini menangani pembuatan tugas, polling, dan pengambilan token dalam satu unit.
Langkah-langkah untuk menambahkan kredensial Anda:
Penting: Setiap node CapSolver dalam alur kerja Anda akan merujuk kredensial ini. Anda hanya perlu membuatnya sekali — semua alur kerja penyelesaian CAPTCHA Anda akan berbagi kredensial yang sama. Selain itu, CapSolver secara resmi menyediakan repositori Keterampilan GitHub yang kaya, di mana Anda dapat menjelajahi lebih banyak integrasi dan kasus penggunaan yang terkait dengan CapSolver, yang selanjutnya memperluas kemampuan Agen AI Anda.
Segala sesuatu di bawah ini adalah contoh. URL, nama bidang, jenis CAPTCHA, kondisi keberhasilan, struktur respons — semuanya khusus untuk situs demo yang digunakan di sini. Target nyata Anda akan berbeda. Perlakukan setiap konfigurasi node sebagai titik awal, bukan pengaturan yang sudah selesai.
pageText dari respons.Webhook ──► Selesaikan CAPTCHA ──► Kirim Token ──► Berhasil? ──► Ekstrak Hasil ──► Tanggapi Webhook
└─► Tandai Gagal ────┘
Buat alur kerja baru bernama “OpenClaw/Capsolver/n8n Scraper” dengan node berikut:
openclaw/scrapeReCaptchaV2TaskProxylesshttps://example.com/protected-pageYOUR_SITE_KEY (temukan di sumber halaman — cari data-sitekey)Menggunakan reCAPTCHA v3? Ubah Jenis Tugas ke
ReCaptchaV3TaskProxylessdan tambahkan bidang Tindakan Halaman (misalnya,login,submit,homepage). Ini diperlukan untuk v3 — ini adalah nama tindakan yang didaftarkan situs dengan Google. Anda akan menemukannya di sumber halaman di dekat panggilangrecaptcha.execute(...).Ingatlah bahwa setiap jenis CAPTCHA memiliki set parameternya sendiri — beberapa bidang yang opsional di v2 menjadi wajib di v3, dan v3 dapat mengekspos bidang yang tidak ada di v2 sama sekali (seperti
minScore). Selalu periksa dokumen CapSolver untuk parameter persis yang diperlukan oleh Jenis Tugas Anda.
Node ini memanggil API CapSolver, menunggu penyelesaian (biasanya 5–20 detik), dan mengembalikan token di $json.data.solution.gRecaptchaResponse.
https://example.com/protected-pageg-recaptcha-response = ={{ $json.data.solution.gRecaptchaResponse }}Ini mengirimkan formulir dengan token yang diselesaikan, persis seperti yang dilakukan browser.
Perhatian: Cara token dikirimkan bervariasi menurut situs. Sebagian besar formulir mengharapkannya di badan permintaan sebagai
g-recaptcha-response, tetapi beberapa situs mengirimkannya sebagai bidang JSON, header khusus, atau bahkan cookie atau nama yang berbeda. Gunakan DevTools browser Anda (tab Jaringan) untuk memeriksa seperti apa pengiriman yang sebenarnya dan cerminkan itu di node Permintaan HTTP Anda.
$json.data berisi "recaptcha-success"Kedua cabang menetapkan satu bidang:
pageText = {{ $json.data }}Cabang keberhasilan dan kegagalan keduanya melewati pageText — pemanggil dapat memeriksa HTML untuk menentukan hasilnya.
Sesuaikan ini dengan halaman Anda: Cara Anda mengurai dan menggunakan data respons sepenuhnya bergantung pada apa yang Anda inginkan dan apa yang dikembalikan situs target. Beberapa halaman mengembalikan JSON, yang lain mengembalikan HTML, beberapa mengalihkan pada keberhasilan. Anda mungkin ingin mengekstrak bidang tertentu, mengurai tabel, memeriksa cookie sesi, atau menghapus HTML sepenuhnya. Kondisi keberhasilan (
"recaptcha-success") juga hanya sebuah contoh — situs Anda akan memiliki indikatornya sendiri. Node ini adalah titik awal; bersiaplah untuk menyesuaikannya untuk kasus penggunaan Anda.
Node ini meneruskan { pageText, savedAt } ke respons webhook dan secara opsional menyimpan hasil ke penyimpanan.
Catatan: Node Kode n8n berjalan di VM sandbox yang memblokir bawaan Node.js seperti
require('fs'). Gunakan node Jalankan Perintah sebagai gantinya untuk menulis ke disk, atau ganti node ini sepenuhnya dengan integrasi n8n apa pun yang sesuai dengan tumpukan Anda.
Opsi A — File JSON Lokal (Node Jalankan Perintah):
Gunakan dua node yang dirantai bersama:
Node 7a — Siapkan Data (Node Kode):
const item = $input.first().json;
const now = new Date();
const savedAt = now.toISOString();
const data = { pageText: item.pageText || '', savedAt };
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
const cmd = 'python3 /path/to/save-result.py ' + encoded;
return [{ json: { cmd, pageText: data.pageText, savedAt } }];
Node 7b — Simpan Hasil (Node Jalankan Perintah):
={{ $json.cmd }}Di mana save-result.py membaca argumen base64 dan menambahkannya ke file JSON lokal.
Opsi B — Penyimpanan Apa Pun yang Didukung n8n:
n8n memiliki node asli untuk hampir setiap sistem penyimpanan. Ganti Node 7 dengan salah satu dari ini:
| Penyimpanan | Node n8n |
|---|---|
| Google Sheets | Tambahkan baris dengan pageText + stempel waktu |
| Airtable | Buat catatan |
| Notion | Buat entri basis data |
| PostgreSQL / MySQL | INSERT ke dalam tabel |
| AWS S3 / Cloudflare R2 | Unggah file JSON |
| Slack / Telegram | Posting hasil ke saluran |
Cukup sambungkan node antara Edit Bidang dan Tanggapi Webhook, dan konfigurasikan untuk menyimpan $json.pageText dan stempel waktu.
={{ JSON.stringify($json) }}Aktifkan alur kerja setelah dibangun. Jalur webhook akan ditayangkan di:
POST http://127.0.0.1:3005/webhook/openclaw/scrape
Salin JSON di bawah ini dan impor ke n8n melalui Menu → Import from JSON. Setelah mengimpor, pilih kredensial CapSolver Anda di node Selesaikan CAPTCHA.
{
"nodes": [
{
"parameters": {
"content": "## OpenClaw CAPTCHA Automation Pipeline\n\n### How it works\n\n1. Initiates the process with a webhook trigger.\n2. Attempts to solve CAPTCHA using a specialized service.\n3. Submits the CAPTCHA token for validation.\n4. Evaluates whether the token submission was successful.\n5. Sets the result and responds back via the webhook.\n\n### Setup steps\n\n- [ ] Configure the webhook trigger with the desired endpoint URL.\n- [ ] Set up CAPTCHA solving service credentials.\n- [ ] Ensure HTTP request configurations are valid for token submission.\n- [ ] Customize the success and failure response messages.\n\n### Customization\n\nYou can customize the success and failure conditions and responses in the 'Success?' node.",
"width": 480,
"height": 656
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1312,
-352
],
"id": "de683912-ba9c-4879-9a8e-38190c4b236c",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Initialization and CAPTCHA solving\n\nStarts with a webhook trigger and solves the CAPTCHA using an external service.",
"width": 800,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-768,
-352
],
"id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
"name": "Sticky Note"
},
{
"parameters": {
"httpMethod": "POST",
"path": "openclaw/scrape",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
-704,
-256
],
"id": "b2c3d4e5-f6a7-8901-2345-6789abcdef01",
"name": "Webhook",
"webhookId": "c3d4e5f6-a7b8-9012-3456-789abcdef012"
},
{
"parameters": {
"taskType": "ReCaptchaV2TaskProxyless",
"websiteUrl": "https://example.com/protected-page",
"websiteKey": "YOUR_SITE_KEY"
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-480,
-256
],
"id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"name": "Solve CAPTCHA",
"credentials": {
"capSolverApi": {
"id": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://example.com/protected-page",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "g-recaptcha-response",
"value": "={{ $json.data.solution.gRecaptchaResponse }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
-256,
-256
],
"id": "f6a7b8c9-d0e1-2345-6789-abcdef012345",
"name": "Submit Token"
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.data }}",
"operation": "contains",
"value2": "recaptcha-success"
}
]
}
},
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
-32,
-256
],
"id": "a7b8c9d0-e1f2-3456-789a-bcdef0123456",
"name": "Success?"
},
{
"parameters": {
"values": {
"string": [
{
"name": "pageText",
"value": "={{ $json.data }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
192,
-352
],
"id": "b8c9d0e1-f2a3-4567-89ab-cdef01234567",
"name": "Extract Result"
},
{
"parameters": {
"values": {
"string": [
{
"name": "pageText",
"value": "={{ $json.data }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
192,
-160
],
"id": "c9d0e1f2-a3b4-5678-9abc-def012345678",
"name": "Mark Failed"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
416,
-352
],
"id": "d0e1f2a3-b4c5-6789-abcd-ef0123456789",
"name": "Respond to Webhook"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
416,
-160
],
"id": "e1f2a3b4-c5d6-789a-bcde-f0123456789a",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Solve CAPTCHA",
"type": "main",
"index": 0
}
]
]
},
"Solve CAPTCHA": {
"main": [
[
{
"node": "Submit Token",
"type": "main",
"index": 0
}
]
]
},
"Submit Token": {
"main": [
[
{
"node": "Success?",
"type": "main",
"index": 0
}
]
]
},
"Success?": {
"main": [
[
{
"node": "Extract Result",
"type": "main",
"index": 0
}
],
[
{
"node": "Mark Failed",
"type": "main",
"index": 0
}
]
]
},
"Extract Result": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Mark Failed": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
}
}
Untuk menghubungkan OpenClaw ke alur kerja ini, buat skrip pemicu dan daftarkan.
Buat skrip pemicu:
cat > ~/.openclaw/scripts/extract-data << 'EOF'
#!/usr/bin/env bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
EOF
chmod +x ~/.openclaw/scripts/extract-data
Ini adalah satu-satunya hal yang dijalankan OpenClaw. Tidak ada argumen, tidak ada kunci situs, tidak ada URL — alur kerja tahu apa yang harus dikikis.
Bagaimana OpenClaw mendapatkan data: Skrip menunggu n8n selesai (CapSolver menyelesaikan + pengiriman formulir), kemudian menerima
{ pageText, savedAt }langsung di respons Webhook. Tidak ada pembacaan file yang terlibat — data kembali secara sinkron melalui HTTP. Bentuk respons hanyalah apa yang dikembalikan alur kerja ini — jika Anda memerlukan bidang yang berbeda (misalnya, harga yang diurai, status login, objek JSON terstruktur), ubah node Edit Bidang dan Simpan Hasil untuk mengembalikan apa pun yang dibutuhkan kasus penggunaan Anda.
Daftarkan perintah di TOOLS.md:
Buka ~/.openclaw/workspace/TOOLS.md dan tambahkan entri berikut sehingga OpenClaw tahu tentang perintah tersebut:
### extract-data
Jalankan: `/root/.openclaw/scripts/extract-data`
Mengembalikan `{ pageText, savedAt }` baru dari alur langsung. Kembalikan bidang `pageText` dari respons JSON.
Picu dari OpenClaw — kirim perintah ini ke Agen AI Anda (melalui Discord, Telegram, WhatsApp, atau saluran apa pun):
extract data
OpenClaw menjalankan skrip extract-data, yang memicu webhook dan menunggu. n8n menyelesaikan CAPTCHA, mengirimkan formulir, dan mengembalikan { pageText, savedAt } langsung dalam respons HTTP. OpenClaw menerima dan merangkum hasilnya — biasanya dalam 10–40 detik.
Uji dari terminal:
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
Alur kerja panduan ini dibuat untuk situs demo tertentu. Untuk target aktual Anda, setiap bagian dari alur mungkin memerlukan penyesuaian. Inilah yang harus diperhatikan:
Tidak semua situs menggunakan reCAPTCHA v2. Ubah Jenis Tugas node CapSolver agar sesuai dengan apa yang digunakan target:
| Apa yang Anda lihat di situs | Operasi Node n8n |
|---|---|
| Kotak centang "Saya bukan robot" | reCAPTCHA v2 |
| reCAPTCHA tak terlihat (memicu otomatis) | reCAPTCHA v2 |
| Skor reCAPTCHA v3 | reCAPTCHA v3 |
| Widget Cloudflare Turnstile | Cloudflare Turnstile |
| Tantangan Cloudflare (halaman 5 detik) | Cloudflare Challenge |
| Teka-teki GeeTest (v3) | GeeTest V3 |
| Teka-teki GeeTest (v4) | GeeTest V4 |
| Perlindungan bot DataDome | DataDome |
| AWS WAF CAPTCHA | AWS WAF |
| MTCaptcha | MTCaptcha |
Perbarui juga URL Situs Web dan Kunci Situs Web agar sesuai dengan target Anda. Anda dapat menemukan kunci situs di sumber halaman (cari atribut data-sitekey, atau ekstensi browser CapSolver mendeteksinya secara otomatis).
Ini adalah bagian yang paling bervariasi antar situs. Situs demo menggunakan POST formulir sederhana dengan token di bidang badan. Target Anda mungkin berbeda:
Sebagai bidang formulir (paling umum)
POST /submit
Content-Type: application/x-www-form-urlencoded
g-recaptcha-response=TOKEN&other_field=value
Dalam badan JSON
POST /api/login
Content-Type: application/json
{ "username": "...", "password": "...", "captchaToken": "TOKEN" }
Dalam header
POST /api/action
X-Captcha-Token: TOKEN
Sebagai cookie
POST /submit
Cookie: cf_clearance=TOKEN
Di URL sebagai parameter kueri
GET /search?q=query&token=TOKEN
Periksa tab jaringan di alat pengembang browser Anda saat Anda menyelesaikan CAPTCHA secara manual di situs target Anda. Cari permintaan yang memicu segera setelah penyelesaian — itu menunjukkan kepada Anda dengan tepat ke mana token itu pergi.
Setelah Anda tahu bagaimana token dikirimkan, konfigurasikan node Permintaan HTTP yang sesuai:
Alur kerja saat ini meneruskan HTML lengkap dari respons sebagai pageText. Tergantung pada kasus penggunaan Anda, Anda mungkin ingin memprosesnya pasca:
Beberapa target memerlukan lebih dari satu permintaan:
Rantai beberapa node Permintaan HTTP di n8n untuk menangani ini. Lewati nilai antar node menggunakan ekspresi $json.
{"success": false, "error": "Failed to reach n8n scraper. Is the OpenClaw CAPTCHA Scraper workflow active?"}
Periksa: Apakah n8n berjalan? Apakah alur kerja diaktifkan? Buka n8n dan verifikasi alur kerja Aktif (sakelar hijau).
Kemungkinan penyebab:
~/.n8n/credentialspageText Kosong atau Berisi Halaman Kesalahang-recaptcha-response — beberapa situs menggunakan nama bidang yang berbedafullResponse: true di node Permintaan HTTP untuk melihat kode status| Node | Jenis | Konfigurasi Kunci |
|---|---|---|
| Webhook | n8n-nodes-base.webhook |
POST, jalur: openclaw/scrape, responseMode: responseNode |
| Kikis situs | n8n-nodes-capsolver.capSolver |
Tugas: ReCaptchaV2TaskProxyless |
| Permintaan HTTP | n8n-nodes-base.httpRequest |
POST ke URL target dengan token di badan |
| Jika | n8n-nodes-base.if |
Periksa $json.data berisi "recaptcha-success" |
| Edit Bidang | n8n-nodes-base.set |
pageText = $json.data |
| Simpan Hasil | n8n-nodes-base.executeCommand atau node penyimpanan apa pun |
Simpan hasil (file, DB, Sheets, dll.) |
| Tanggapi Webhook | n8n-nodes-base.respondToWebhook |
JSON, continueOnFail: true |
| CAPTCHA | Operasi Node n8n |
|---|---|
| reCAPTCHA v2 (kotak centang) | reCAPTCHA v2 |
| reCAPTCHA v2 (tak terlihat) | reCAPTCHA v2 |
| reCAPTCHA v3 | reCAPTCHA v3 |
| Cloudflare Turnstile | Cloudflare Turnstile |
| Tantangan Cloudflare | Cloudflare Challenge |
| GeeTest V3 | GeeTest V3 |
| GeeTest V4 | GeeTest V4 |
| DataDome | DataDome |
| AWS WAF | AWS WAF |
| MTCaptcha | MTCaptcha |
Alur OpenClaw + n8n + CapSolver menyediakan pengaturan ekstraksi data tingkat produksi yang:
Agen AI hanya mengeluarkan perintah "extract data" dan menerima konten halaman yang bersih. CapSolver menangani bagian yang sulit, n8n mengatur alur, dan OpenClaw berfungsi sebagai antarmuka.
Siap untuk memulai? Daftar ke CapSolver dan gunakan kode bonus OPENCLAW untuk bonus tambahan 6% pada isi ulang pertama Anda!
Tidak. OpenClaw hanya menjalankan skrip yang memicu permintaan HTTP. n8n menangani yang lainnya. Agen AI Anda tidak memiliki pengetahuan tentang CAPTCHA — ia hanya memicu pekerjaan dan membaca hasilnya.
Ya, tetapi Anda mungkin perlu menyesuaikan lebih dari sekadar URL. Setiap situs mengirimkan token CAPTCHA secara berbeda — beberapa menggunakan bidang formulir, beberapa badan JSON, beberapa header atau cookie. Lihat bagian "Menyesuaikan Alur Kerja ke Situs Target Anda" di atas untuk rincian lengkap tentang apa yang harus diperiksa dan diubah.
Ubah Jenis Tugas node CapSolver menjadi AntiTurnstileTaskProxyless. Kemudian periksa permintaan jaringan target Anda untuk menemukan di mana token Turnstile dikirimkan — sering kali di bidang formulir tersembunyi yang disebut cf-turnstile-response, tetapi beberapa implementasi meneruskannya dalam badan JSON, header, atau cookie sebagai gantinya.
Itu tergantung pada pilihan penyimpanan Anda. Dengan file JSON lokal, Anda dapat menyimpan sebanyak yang Anda suka. Dengan Google Sheets atau basis data, setiap proses menambahkan baris tanpa batas. Konfigurasikan node Simpan Hasil agar sesuai dengan kebutuhan retensi Anda.
Ya — titik akhir webhook hanyalah HTTP POST. Apa pun yang dapat membuat permintaan HTTP dapat memicunya:
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
Setiap proses berharga satu kredit CapSolver untuk penyelesaian CAPTCHA. reCAPTCHA v2 adalah salah satu jenis termurah. Periksa harga saat ini di capsolver.com.
OpenClaw adalah sumber terbuka dan gratis untuk di-host sendiri. Anda akan memerlukan kredit API untuk penyedia model AI Anda dan CapSolver untuk penyelesaian CAPTCHA.
Bangun API solver eCAPTCHA v2/v3 menggunakan CapSolver dan n8n. Pelajari cara mengotomatisasi penyelesaian token, mengirimkannya ke website, dan mengekstrak data yang dilindungi tanpa coding.

Buat API untuk menyelesaikan Cloudflare Turnstile menggunakan CapSolver dan n8n. Pelajari cara mengotomatisasi proses pengambilan token, mengirimkannya ke situs web, dan mengekstrak data yang dilindungi tanpa perlu coding.

Pelajari cara mengintegrasikan CapSolver dengan n8n untuk menyelesaikan CAPTCHAs dan membangun alur kerja otomasi yang andal dengan mudah.

Pelajari cara mengintegrasikan CapSolver dengan n8n untuk menyelesaikan GeeTest V3 dan membangun alur kerja otomatisasi yang andal.
