Cara Menyelesaikan Teka-Teki Visual di n8n dengan CapSolver

Emma Foster
Machine Learning Engineer
18-Mar-2026

Puzzle visual ada di mana-mana: CAPTCHA slider yang memerlukan menyeret bagian ke posisi yang benar, tantangan rotasi di mana Anda menyetel gambar, grid pemilihan objek, dan pengenalan teks GIF animasi. Ini bukan CAPTCHA berbasis teks tradisional dan bukan tantangan berbasis token (seperti reCAPTCHA atau Turnstile) yang mengembalikan string yang Anda kirimkan dengan formulir. Mereka adalah tantangan visual berbasis gambar di mana inputnya adalah gambar dan outputnya adalah pengukuran โ jarak dalam piksel, sudut dalam derajat, kumpulan koordinat, atau teks yang dikenali.
Itulah yang diselesaikan oleh CapSolver's Vision Engine. Ini menggunakan AI untuk menganalisis gambar puzzle visual dan mengembalikan jawaban yang tepat yang dibutuhkan otomatisasi Anda untuk melanjutkan.
Dalam panduan ini, Anda akan belajar cara menggunakan Vision Engine dalam n8n melalui node komunitas CapSolver. Panduan ini mencakup alur kerja API Solver inti dan solver puzzle slider praktis yang mengambil gambar puzzle, mengonversinya ke base64, menyelesaikan slider, dan mengembalikan jarak dalam piksel.
Penting: Vision Engine adalah operasi Pengenalan, bukan operasi Token. Artinya, hasilnya kembali secara instan dalam satu panggilan API โ tidak ada polling, tidak ada loop
getTaskResult, dan tidak ada menunggu timeout. Anda mengirimkan gambar, Anda mendapatkan jawabannya.
Cara Vision Engine Berbeda dari Operasi CapSolver Lainnya
Kebanyakan operasi CapSolver di n8n adalah tugas Token. Anda mengirimkan parameter situs (URL, situs kunci, proxy), CapSolver menyelesaikan tantangan di latar belakang, dan alur kerja Anda polling untuk hasilnya. Outputnya adalah string token yang kemudian Anda kirimkan ke situs target.
Vision Engine bekerja berbeda:
| Aspek | Operasi Token (reCAPTCHA, Turnstile, dll.) | Vision Engine (Pengenalan) |
|---|---|---|
| Sumber Daya | Token | Pengenalan |
| Input | URL situs, kunci situs, proxy | Gambar base64(s), nama modul |
| Pemrosesan | Async โ polling untuk hasil | Instan โ panggilan API tunggal |
| Output | String token | Piksel, derajat, koordinat, atau teks |
| Proxy | Sering kali diperlukan | Tidak diperlukan |
| Kasus penggunaan | Kirim token untuk melewati penghalang tantangan | Pahami puzzle visual untuk mengotomasi interaksi |
Vision Engine lebih dekat ke Gambar ke Teks (OCR) daripada menyelesaikan reCAPTCHA, tetapi melebihi pengenalan teks sederhana. Di mana OCR membaca karakter dari gambar statis, Vision Engine memahami hubungan spasial โ itu dapat menghitung seberapa jauh slider harus digeser, sudut apa yang harus diputar, area mana dari gambar yang cocok dengan pertanyaan, atau teks apa yang tersembunyi dalam GIF animasi.
Modul yang Tersedia
Vision Engine mendukung beberapa model AI, masing-masing dirancang untuk jenis puzzle visual tertentu:
| Modul | Tujuan | Input | Mengembalikan |
|---|---|---|---|
slider_1 |
Penyelesaian puzzle slider | image (potongan puzzle) + imageBackground (latar belakang dengan slot) |
Jarak dalam piksel |
rotate_1 |
Rotasi gambar tunggal | image + imageBackground |
Sudut dalam derajat |
rotate_2 |
Rotasi gambar multi (dalam + luar) | image (gambar dalam) |
Sudut dalam derajat |
shein |
Pemilihan objek/area | image + question (apa yang dipilih) |
Array rects โ kotak pembatas [{x1, y1, x2, y2}] |
ocr_gif |
Pengenalan teks GIF animasi | image (base64 dari GIF) |
String teks yang dikenali |
Kapan Menggunakan Setiap Modul
slider_1 โ Tipe CAPTCHA visual paling umum. Pengguna melihat gambar latar belakang dengan bagian yang hilang dan potongan puzzle terpisah. Tujuannya adalah menentukan seberapa banyak pixel ke kanan potongan harus digeser. Kedua image (potongan puzzle) dan imageBackground (lengkap latar belakang dengan slot) diperlukan.
rotate_1 โ Gambar tunggal yang harus diputar ke orientasi yang benar. Kedua image dan imageBackground diperlukan. Mesin mengembalikan sudut dalam derajat.
rotate_2 โ Dua gambar konsentris (gambar dalam dan cincin luar). Gambar dalam harus diputar untuk sejajar dengan luar. Hanya image yang diperlukan. Mesin mengembalikan sudut.
shein โ Digunakan untuk tantangan yang meminta "pilih item yang sesuai" atau "ketuk area yang benar." Membutuhkan image ditambah parameter question yang menggambarkan apa yang dicari. Mengembalikan koordinat kotak pembatas untuk setiap area yang cocok.
ocr_gif โ GIF animasi di mana teks muncul di frame, membuatnya tidak terbaca untuk OCR biasa. Mesin menganalisis animasi dan mengekstrak teks.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Instance n8n (self-hosted atau cloud)
- Akun CapSolver dengan API key dan saldo โ daftar di sini
- Node CapSolver community yang terinstal di n8n (
n8n-nodes-capsolver) - Kredensial CapSolver yang dikonfigurasi di n8n (Pengaturan > Kredensial > CapSolver API)
Tidak diperlukan proxy untuk tugas Vision Engine.
Pengaturan Node CapSolver untuk Vision Engine
Di node CapSolver n8n, konfigurasikan pengaturan berikut:
| Pengaturan | Nilai |
|---|---|
| Sumber Daya | Recognition |
| Operasi | Vision Engine |
| module | Nama model (misalnya, slider_1, rotate_1, ocr_gif) |
| image | String base64 dari gambar (tanpa awalan data:image/...;base64,) |
| imageBackground | String base64 dari gambar latar belakang (opsional โ diperlukan untuk slider_1 dan rotate_1) |
| question | Pertanyaan teks (opsional โ diperlukan hanya untuk modul shein) |
| websiteURL | URL halaman sumber (opsional โ dapat meningkatkan akurasi) |
Kolom type secara otomatis diatur ke VisionEngine ketika Anda memilih operasi Vision Engine.
Persyaratan Gambar Base64
Kolom image dan imageBackground harus berupa string base64 mentah โ tanpa awalan URI data, tanpa baris baru:
- Benar:
/9j/4AAQSkZJRgABA...(base64 mentah) - Salah:
data:image/jpeg;base64,/9j/4AAQSkZJRgABA...(memiliki awalan)
Jika gambar sumber adalah URL, Anda harus mengambilnya terlebih dahulu dan mengonversinya ke base64. Jika sudah memiliki awalan data:image/...;base64,, hapus awalan sebelum mengirimkannya ke node CapSolver.
Alur Kerja 1: Vision Engine โ Solver API
Alur kerja ini mengekspos Vision Engine sebagai endpoint REST sederhana. Kirim permintaan POST dengan nama modul dan gambar base64, dan dapatkan solusi kembali sebagai JSON.
Alur Node
Menerima Permintaan Solver (Webhook POST)
โ Validasi Input (Kode)
โ Menyelesaikan Puzzle Visual (CapSolver โ Recognition โ Vision Engine)
โ Kesalahan Vision Engine? (IF)
โ benar: Respons ke Webhook Kesalahan
โ salah: Respons ke Webhook (Sukses)
Cara Kerjanya
1. Menerima Permintaan Solver
Endpoint webhook menerima permintaan POST dengan badan JSON yang berisi:
json
{
"module": "slider_1",
"image": "/9j/4AAQSkZJRgABA...",
"imageBackground": "/9j/4AAQSkZJRgABA...",
"question": "",
"websiteURL": ""
}
2. Validasi Input
Node Kode memeriksa bahwa image ada dan module adalah salah satu nilai yang didukung (slider_1, rotate_1, rotate_2, shein, ocr_gif). Jika validasi gagal, ia mengatur field error.
3. Menyelesaikan Puzzle Visual
Node CapSolver dikonfigurasi dengan:
- Sumber Daya:
Recognition - Operasi:
Vision Engine - module: dari badan permintaan
- image: dari badan permintaan
- imageBackground: dari badan permintaan (string kosong jika tidak disediakan)
- question: dari badan permintaan (string kosong jika tidak disediakan)
Karena ini adalah tugas Recognition, hasilnya kembali secara instan.
4. Penanganan Kesalahan
Node IF memeriksa kesalahan. Jika node CapSolver mengembalikan kesalahan (modul salah, gambar tidak valid, dll.), webhook kesalahan berjalan. Jika tidak, respons sukses mengembalikan solusi.
Permintaan dan Respons yang Diharapkan
Permintaan puzzle slider:
bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "slider_1",
"image": "BASE64_PUZZLE_PIECE",
"imageBackground": "BASE64_BACKGROUND"
}'
Respons sukses:
json
{
"solution": {
"distance": 142,
"module": "slider_1"
}
}
Permintaan OCR GIF:
bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "ocr_gif",
"image": "BASE64_GIF_DATA"
}'
Respons sukses:
json
{
"solution": {
"text": "x7Km9",
"module": "ocr_gif"
}
}
Impor Alur Kerja Ini
Klik untuk memperluas JSON alur kerja
json
{
"name": "Vision Engine โ Solver API",
"nodes": [
{
"parameters": {
"content": "## Vision Engine โ Solver API\n\n**Yang ditujukan untuk:** Pengembang dan tim otomasi yang membutuhkan menyelesaikan puzzle visual (slider, rotasi, pemilihan objek, OCR GIF) melalui endpoint REST sederhana.\n\n**Apa yang dilakukannya:** Menerima gambar yang dienkripsi base64 dan nama modul, mengirimkannya ke Vision Engine CapSolver, dan mengembalikan solusi secara instan.\n\n**Cara kerjanya:**\n1. Webhook menerima POST dengan `module`, `image`, dan `imageBackground`/`question` opsional\n2. Node Kode memvalidasi input (gambar ada, modul valid)\n3. Node Recognition CapSolver menyelesaikan puzzle visual\n4. Mengembalikan solusi atau kesalahan sebagai JSON\n\n**Setup:**\n1. Tambahkan kunci API CapSolver Anda di bawah **Pengaturan โ Kredensial**\n2. Aktifkan alur kerja\n3. POST ke `/webhook/vision-engine-solver` dengan data gambar Anda",
"height": 560,
"width": 460,
"color": 1
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-920, -380],
"id": "sticky-ve-main-001",
"name": "Catatan Stik"
},
{
"parameters": {
"content": "### Validasi Input\nMemeriksa bahwa `image` ada dan `module` adalah salah satu: slider_1, rotate_1, rotate_2, shein, ocr_gif",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-100, -280],
"id": "sticky-ve-section-002",
"name": "Catatan Stik1"
},
{
"parameters": {
"content": "### Vision Engine CapSolver\nSumber daya Recognition โ hasil instan, tidak ada polling. Mengembalikan jarak, sudut, koordinat, atau teks tergantung modul.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [380, -280],
"id": "sticky-ve-section-003",
"name": "Catatan Stik2"
},
{
"parameters": {
"content": "### Penanganan Kesalahan\nMemeriksa kesalahan CapSolver (gambar tidak valid, modul tidak didukung, dll.) dan mengembalikan respons kesalahan yang terstruktur.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [860, -280],
"id": "sticky-ve-section-004",
"name": "Catatan Stik3"
},
{
"parameters": {
"content": "### Trigger Webhook\nPOST /webhook/vision-engine-solver dengan badan JSON yang berisi module, image, dan imageBackground / question opsional.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-580, -280],
"id": "sticky-ve-section-005",
"name": "Catatan Stik4"
},
{
"parameters": {
"content": "### Respons Sukses\nMengembalikan objek solusi lengkap dari CapSolver โ konten bervariasi tergantung jenis modul.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [1340, -280],
"id": "sticky-ve-section-006",
"name": "Catatan Stik5"
},
{
"parameters": {
"content": "### Respons Kesalahan\nMengembalikan pesan kesalahan dari CapSolver atau dari validasi input.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [1340, 240],
"id": "sticky-ve-section-007",
"name": "Catatan Stik6"
},
{
"parameters": {
"httpMethod": "POST",
"path": "vision-engine-solver",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-540, 0],
"id": "ve-api-11111111-1111-1111-1111-111111111101",
"name": "Menerima Permintaan Solver",
"webhookId": "ve-api-11111111-aaaa-bbbb-cccc-111111111101"
},
{
"parameters": {
"jsCode": "const body = $input.first().json.body || {};\nconst validModules = ['slider_1', 'rotate_1', 'rotate_2', 'shein', 'ocr_gif'];\n\nconst module = (body.module || '').trim();\nconst image = (body.image || '').trim();\nconst imageBackground = (body.imageBackground || '').trim();\nconst question = (body.question || '').trim();\nconst websiteURL = (body.websiteURL || '').trim();\n\n// Validasi field yang diperlukan\nif (!image) {\n return [{ json: { error: 'Field yang diperlukan hilang: image (base64 encoded)' } }];\n}\n\nif (!module) {\n return [{ json: { error: 'Field yang diperlukan hilang: module' } }];\n}\n\nif (!validModules.includes(module)) {\n return [{ json: { error: `Modul tidak valid: ${module}. Harus salah satu: ${validModules.join(', ')}` } }];\n}\n\n// Validasi modul khusus\nif ((module === 'slider_1' || module === 'rotate_2') && !imageBackground) {\n return [{ json: { error: `Modul ${module} memerlukan imageBackground` } }];\n}\n\nif (module === 'shein' && !question) {\n return [{ json: { error: 'Modul shein memerlukan parameter pertanyaan' } }];\n}\n\nreturn [{ json: {\n module,\n image,\n imageBackground,\n question,\n websiteURL,\n validated: true\n} }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [-60, 0],
"id": "ve-api-11111111-1111-1111-1111-111111111102",
"name": "Validasi Input"
},
{
"parameters": {
"resource": "Recognition",
"operation": "Vision Engine",
"module": "={{ $json.module }}",
"image": "={{ $json.image }}",
"imageBackground": "={{ $json.imageBackground || '' }}",
"question": "={{ $json.question || '' }}",
"websiteURL": "={{ $json.websiteURL || '' }}"
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [420, 0],
"id": "ve-api-11111111-1111-1111-1111-111111111103",
"name": "Menyelesaikan Puzzle Visual",
"onError": "continueRegularOutput",
"credentials": {
"capSolverApi": {
"id": "YOUR_CREDENTIAL_ID",
"name": "Akun CapSolver"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "longgar",
"version": 2
},
"conditions": [
{
"id": "ve-err-001",
"leftValue": "={{ $json.error }}",
"operator": {
"type": "string",
"operation": "tidak kosong",
"singleValue": true
}
}
],
"combinator": "dan"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [900, 0],
"id": "ve-api-11111111-1111-1111-1111-111111111104",
"name": "Kesalahan Mesin Visi?"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json.data) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [1380, -80],
"id": "ve-api-11111111-1111-1111-1111-111111111105",
"name": "Balas ke Webhook"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ error: $json.error }) }}",
"options": {
"responseCode": 400
}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [1380, 120],
"id": "ve-api-11111111-1111-1111-1111-111111111106",
"name": "Balas ke Webhook Kesalahan"
}
],
"connections": {
"Menerima Permintaan Solver": {
"main": [
[
{
"node": "Validasi Input",
"type": "main",
"index": 0
}
]
]
},
"Validasi Input": {
"main": [
[
{
"node": "Selesaikan Puzzle Visual",
"type": "main",
"index": 0
}
]
]
},
"Selesaikan Puzzle Visual": {
"main": [
[
{
"node": "Kesalahan Mesin Visi?",
"type": "main",
"index": 0
}
]
]
},
"Kesalahan Mesin Visi?": {
"main": [
[
{
"node": "Balas ke Webhook Kesalahan",
"type": "main",
"index": 0
}
],
[
{
"node": "Balas ke Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Workflow 2: Solver Puzzle Slider โ Unduh & Selesaikan
Workflow ini menunjukkan solusi puzzle slider yang praktis secara end-to-end. Ia mengunduh gambar potongan puzzle dan gambar latar belakang dari URL, mengonversinya ke base64, mengirimkannya ke Mesin Visi dengan modul slider_1, dan mengembalikan jarak pixel yang diperlukan untuk menyelesaikan slider.
Ini adalah pola yang akan Anda gunakan saat mengintegrasikan penyelesaian CAPTCHA slider ke dalam otomatisasi yang lebih besar โ jarak yang dikembalikan memberi tahu otomatisasi browser (Puppeteer, Playwright, Selenium) tepat seberapa jauh handle slider harus digeser.
Alur Node
Pemicu Jadwal (setiap 1 jam) โโ
โโ Atur Konfigurasi Puzzle โ Unduh Gambar Puzzle โ Unduh Gambar Latar Belakang
Pemicu Webhook (POST) โโโโโโโโโโโ โ Konversi Gambar ke Base64 โ Selesaikan Puzzle Slider
โ Kesalahan Slider? โ Format Solusi โ Kembalikan Hasil
โ Format Kesalahan โ Kembalikan Kesalahan
Cara Kerjanya
1. Dua Pemicu
- Pemicu Jadwal: berjalan setiap jam untuk pengujian otomatis atau penyelesaian puzzle berulang
- Pemicu Webhook: aktivasi on-demand dari workflow lain atau layanan eksternal
2. Atur Konfigurasi Puzzle
Menentukan URL untuk gambar potongan puzzle dan gambar latar belakang, serta URL website opsional untuk akurasi yang lebih baik. Dalam integrasi nyata, URL ini akan berasal dari respons tantangan CAPTCHA situs target.
3. Unduh Gambar Puzzle + Unduh Gambar Latar Belakang
Dua node HTTP Request mengunduh gambar potongan puzzle dan gambar latar belakang sebagai data biner.
4. Konversi Gambar ke Base64
Node Code mengonversi kedua gambar biner menjadi string base64 mentah, menghilangkan awalan data:image/...;base64,.
5. Selesaikan Puzzle Slider
Node CapSolver dengan:
- Sumber Daya:
Rekognisi - Operasi:
Mesin Visi - modul:
slider_1 - gambar: base64 potongan puzzle
- gambarLatarBelakang: base64 gambar latar belakang
Mengembalikan jarak dalam pixel secara instan.
6. Periksa Hasil dan Beri Tahu
Node IF memeriksa kesalahan. Jika berhasil, solusi diformat dan dikembalikan. Jika gagal, pesan kesalahan dikembalikan.
Respons yang Diharapkan
Berhasil:
json
{
"berhasil": true,
"modul": "slider_1",
"jarak": 142,
"satuan": "pixel",
"selesaikanPada": "2026-03-16T10:00:00.000Z"
}
Kesalahan:
json
{
"berhasil": false,
"kesalahan": "KESALAHAN_GAMBAR_TIDAK_SAHIH",
"selesaikanPada": "2026-03-16T10:00:00.000Z"
}
Impor Workflow Ini
Klik untuk memperluas JSON workflow
json
{
"name": "Solver Puzzle Slider โ Unduh & Selesaikan โ Mesin Visi",
"nodes": [
{
"parameters": {
"content": "## Solver Puzzle Slider โ Unduh & Selesaikan\n\n**Untuk siapa:** Tim otomatisasi yang menyelesaikan CAPTCHA slider sebagai bagian dari otomatisasi browser atau pipeline scraping.\n\n**Apa yang dilakukannya:** Mengunduh gambar puzzle slider dan gambar latar belakang dari URL, mengonversi keduanya ke base64, mengirimkannya ke Mesin Visi CapSolver (modul slider_1), dan mengembalikan jarak pixel yang tepat untuk menggeser handle slider.\n\n**Cara kerjanya:**\n1. Pemicu Jadwal (setiap 1 jam) atau Webhook โ keduanya memicu pipeline yang sama\n2. Node konfigurasi menetapkan URL gambar puzzle\n3. Dua node HTTP Request mengunduh gambar\n4. Node Code mengonversi gambar ke base64\n5. Mesin Visi CapSolver menyelesaikan puzzle slider\n6. Mengembalikan jarak dalam pixel untuk otomatisasi\n\n**Pengaturan:**\n1. Tambahkan kunci API CapSolver Anda di bawah **Pengaturan โ Kredensial**\n2. Ganti URL gambar placeholder di Atur Konfigurasi Puzzle\n3. Aktifkan dan uji",
"height": 560,
"width": 460,
"color": 1
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-1200, -380],
"id": "sticky-slider-main-001",
"name": "Catatan Lengket"
},
{
"parameters": {
"content": "### Pemicu\nJadwal (setiap jam) atau Webhook โ keduanya memasok pipeline yang sama untuk penyelesaian puzzle.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-860, -280],
"id": "sticky-slider-section-002",
"name": "Catatan Lengket1"
},
{
"parameters": {
"content": "### Konfigurasi Puzzle\nTetapkan URL untuk gambar potongan puzzle dan gambar latar belakang. Dalam produksi, ekstrak URL ini dari respons tantangan situs target.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [-380, -280],
"id": "sticky-slider-section-003",
"name": "Catatan Lengket2"
},
{
"parameters": {
"content": "### Pengunduhan Gambar\nUnduh kedua gambar sebagai data biner. Potongan puzzle masuk ke 'image', sedangkan gambar latar (dengan slot) masuk ke 'imageBackground'.",
"height": 480,
"width": 920,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [100, -280],
"id": "sticky-slider-section-004",
"name": "Catatan Lengket3"
},
{
"parameters": {
"content": "### Konversi ke Base64\nMengonversi data gambar biner menjadi string base64 mentah (tanpa awalan URI data). Kedua gambar harus base64 mentah untuk API CapSolver.",
"height": 480,
"width": 440,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [1060, -280],
"id": "sticky-slider-section-005",
"name": "Catatan Lengket4"
},
{
"parameters": {
"content": "### Penyelesaian Mesin Visi + Penanganan Hasil\nCapSolver mengembalikan jarak slider secara instan. Hasilnya diformat dan dikembalikan melalui webhook atau disimpan untuk penggunaan lanjutan.",
"height": 480,
"width": 1400,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [1540, -280],
"id": "sticky-slider-section-006",
"name": "Catatan Lengket5"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 1
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [-820, -60],
"id": "ve-slider-22222222-2222-2222-2222-222222222201",
"name": "Setiap 1 Jam"
},
{
"parameters": {
"httpMethod": "POST",
"path": "slider-puzzle-solver",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [-820, 140],
"id": "ve-slider-22222222-2222-2222-2222-222222222202",
"name": "Pemicu Webhook",
"webhookId": "ve-slider-22222222-aaaa-bbbb-cccc-222222222202",
"onError": "lanjutkanOutputBiasa"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cfg-001",
"name": "puzzleImageURL",
"value": "={{ $json.body?.puzzleImageURL || 'https://example.com/captcha/puzzle-piece.png' }}",
"type": "string"
},
{
"id": "cfg-002",
"name": "backgroundImageURL",
"value": "={{ $json.body?.backgroundImageURL || 'https://example.com/captcha/background.png' }}",
"type": "string"
},
{
"id": "cfg-003",
"name": "websiteURL",
"value": "={{ $json.body?.websiteURL || '' }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [-340, 0],
"id": "ve-slider-22222222-2222-2222-2222-222222222203",
"name": "Atur Konfigurasi Puzzle"
},
{
"parameters": {
"url": "={{ $json.puzzleImageURL }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [140, -60],
"id": "ve-slider-22222222-2222-2222-2222-222222222204",
"name": "Unduh Gambar Puzzle"
},
{
"parameters": {
"url": "={{ $('Atur Konfigurasi Puzzle').first().json.backgroundImageURL }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [540, -60],
"id": "ve-slider-22222222-2222-2222-2222-222222222205",
"name": "Unduh Gambar Latar Belakang"
},
{
"parameters": {
"jsCode": "// Dapatkan data biner dari kedua pengunduhan gambar\nconst puzzleBinary = $input.first().binary;\nconst config = $('Atur Konfigurasi Puzzle').first().json;\n\nif (!puzzleBinary || !puzzleBinary.data) {\n return [{ json: { error: 'Gagal mengunduh gambar puzzle โ tidak ada data biner yang dikembalikan' } }];\n}\n\n// Konversi potongan puzzle ke base64\nconst puzzleBuffer = await this.helpers.getBinaryDataBuffer(0, 'data');\nconst puzzleBase64 = puzzleBuffer.toString('base64');\n\n// Dapatkan data biner gambar latar belakang dari input node saat ini\n// Gambar latar belakang diunduh di node sebelumnya\nlet backgroundBase64 = '';\ntry {\n const bgBinary = $input.first().binary;\n if (bgBinary && bgBinary.data) {\n const bgBuffer = await this.helpers.getBinaryDataBuffer(0, 'data');\n backgroundBase64 = bgBuffer.toString('base64');\n }\n} catch (e) {\n // Gambar latar belakang mungkin tidak tersedia jika pengunduhan gagal\n}\n\nreturn [{ json: {\n image: puzzleBase64,\n imageBackground: backgroundBase64,\n websiteURL: config.websiteURL || '',\n module: 'slider_1'\n} }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [1100, 0],
"id": "ve-slider-22222222-2222-2222-2222-222222222206",
"name": "Konversi Gambar ke Base64"
},
{
"parameters": {
"resource": "Rekognisi",
"operation": "Mesin Visi",
"module": "={{ $json.module }}",
"image": "={{ $json.image }}",
"imageBackground": "={{ $json.imageBackground }}",
"websiteURL": "={{ $json.websiteURL || '' }}"
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [1580, 0],
"id": "ve-slider-22222222-2222-2222-2222-222222222207",
"name": "Selesaikan Puzzle Slider",
"onError": "lanjutkanOutputBiasa",
"credentials": {
"capSolverApi": {
"id": "ID_KREDENSIAL_ANDA",
"name": "Akun CapSolver"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "longgar",
"version": 2
},
"conditions": [
{
"id": "slider-err-001",
"leftValue": "={{ $json.error }}",
"operator": {
"type": "string",
"operation": "tidak kosong",
"singleValue": true
}
}
],
"combinator": "dan"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [1900, 0],
"id": "ve-slider-22222222-2222-2222-2222-222222222208",
"name": "Kesalahan Slider?"
},
{
"parameters": {
"jsCode": "const solution = $input.first().json.data?.solution || $input.first().json.data || {};\nconst distance = solution.distance || solution.slide_distance || null;\n\nreturn [{ json: {\n berhasil: true,\n modul: 'slider_1',\n jarak: distance,\n satuan: 'pixel',\n solusiMentah: solution,\n selesaikanPada: new Date().toISOString()\n} }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [2200, -80],
"id": "ve-slider-22222222-2222-2222-2222-222222222209",
"name": "Format Solusi"
},
{
"parameters": {
"jsCode": "return [{ json: {\n berhasil: false,\n kesalahan: $input.first().json.error || 'Kesalahan Mesin Visi tidak diketahui',\n selesaikanPada: new Date().toISOString()\n} }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [2200, 120],
"id": "ve-slider-22222222-2222-2222-2222-222222222210",
{
"name": "Kesalahan Format"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [2500, -80],
"id": "ve-slider-22222222-2222-2222-2222-222222222211",
"name": "Kembalikan Hasil"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {
"responseCode": 400
}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [2500, 120],
"id": "ve-slider-22222222-2222-2222-2222-222222222212",
"name": "Kembalikan Kesalahan"
}
],
"connections": {
"Every 1 Hour": {
"main": [
[
{
"node": "Set Puzzle Config",
"type": "main",
"index": 0
}
]
]
},
"Webhook Trigger": {
"main": [
[
{
"node": "Set Puzzle Config",
"type": "main",
"index": 0
}
]
]
},
"Set Puzzle Config": {
"main": [
[
{
"node": "Fetch Puzzle Image",
"type": "main",
"index": 0
}
]
]
},
"Fetch Puzzle Image": {
"main": [
[
{
"node": "Fetch Background Image",
"type": "main",
"index": 0
}
]
]
},
"Fetch Background Image": {
"main": [
[
{
"node": "Convert Images to Base64",
"type": "main",
"index": 0
}
]
]
},
"Convert Images to Base64": {
"main": [
[
{
"node": "Solve Slider Puzzle",
"type": "main",
"index": 0
}
]
]
},
"Solve Slider Puzzle": {
"main": [
[
{
"node": "Slider Error?",
"type": "main",
"index": 0
}
]
]
},
"Slider Error?": {
"main": [
[
{
"node": "Format Error",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Solution",
"type": "main",
"index": 0
}
]
]
},
"Format Solution": {
"main": [
[
{
"node": "Return Result",
"type": "main",
"index": 0
}
]
]
},
"Format Error": {
"main": [
[
{
"node": "Return Error",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
``
</details>
---
## Uji Coba
### Menguji API Solver
Setelah Anda mengkonfigurasi kredensial CapSolver dan mengaktifkan alur kerja, uji API Solver:
**Puzzle slider:**
```bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "slider_1",
"image": "BASE64_PUZZLE_PIECE_HERE",
"imageBackground": "BASE64_BACKGROUND_HERE"
}'
Puzzle rotasi:
bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "rotate_1",
"image": "BASE64_IMAGE_TO_ROTATE"
}'
Pemilihan objek (shein):
bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "shein",
"image": "BASE64_IMAGE",
"question": "Pilih semua sepatu"
}'
OCR GIF:
bash
curl -X POST https://your-n8n-instance.com/webhook/vision-engine-solver \
-H "Content-Type: application/json" \
-d '{
"module": "ocr_gif",
"image": "BASE64_GIF_DATA"
}'
Menguji Solver Puzzle Slider
bash
curl -X POST https://your-n8n-instance.com/webhook/slider-puzzle-solver \
-H "Content-Type: application/json" \
-d '{
"puzzleImageURL": "https://example.com/captcha/puzzle-piece.png",
"backgroundImageURL": "https://example.com/captcha/background.png",
"websiteURL": "https://example.com"
}'
Respons dengan nilai numerik distance memastikan seluruh pipeline berjalan dengan baik โ gambar diambil, dikonversi ke base64, Vision Engine menyelesaikan slider, dan jarak pixel dikembalikan.
Memahami Respons
Vision Engine mengembalikan bentuk solusi yang berbeda tergantung pada modul:
slider_1
json
{
"solution": {
"distance": 142
}
}
distance dalam piksel โ ini adalah seberapa jauh handle slider harus digeser ke kanan untuk menyelesaikan puzzle.
rotate_1 / rotate_2
json
{
"solution": {
"angle": 73
}
}
angle dalam derajat โ ini adalah seberapa banyak gambar harus diputar (searah jarum jam) untuk mencapai orientasi yang benar.
shein
json
{
"solution": {
"rects": [
{ "x1": 45, "y1": 120, "x2": 180, "y2": 250 },
{ "x1": 300, "y1": 90, "x2": 420, "y2": 210 }
]
}
}
Setiap rect dalam daftar adalah kotak pembatas (koordinat sudut kiri atas dan kanan bawah) untuk area yang cocok dalam gambar.
ocr_gif
json
{
"solution": {
"text": "x7Km9"
}
}
text adalah string yang dienkode dari GIF animasi.
Menyesuaikan untuk Tipe Modul Lain
Alur kerja Solver API sudah mendukung semua lima modul melalui body permintaan. Untuk membangun alur kerja khusus untuk modul lain โ misalnya, rotate_1 untuk puzzle rotasi โ perubahan minimal:
- Node konfigurasi: Ganti
puzzleImageURL/backgroundImageURLdengan hanya URL gambar rotasi - Node pengambilan: Hanya membutuhkan satu permintaan HTTP (tidak ada gambar latar belakang untuk
rotate_1) - Node CapSolver: Ubah
modulemenjadirotate_1 - Format Solusi: Ekstrak
anglealih-alihdistance
Untuk shein, Anda juga akan menambahkan parameter question ke konfigurasi dan meneruskannya ke node CapSolver.
Masalah Umum
"ERROR_INVALID_IMAGE"
String base64 rusak atau kosong. Periksa bahwa:
- Gambar diambil dengan sukses (HTTP 200)
- Konversi biner ke base64 menghasilkan string yang tidak kosong
- Awalan
data:image/...;base64,dihilangkan - String base64 tidak memiliki baris baru atau spasi
"ERROR_INVALID_MODULE"
Nilai module tidak cocok dengan model yang didukung. Gunakan tepat satu dari: slider_1, rotate_1, rotate_2, shein, ocr_gif.
Jarak Mengembalikan 0 atau Null
Gambar mungkin bukan pasangan puzzle slider yang valid. Periksa bahwa:
imageadalah bagian puzzle (fragmen kecil yang dapat digeser)imageBackgroundadalah latar belakang penuh dengan slot yang hilang terlihat- Kedua gambar dari instansi yang sama
- Gambar tidak rusak atau terlalu kecil
Node CapSolver Tidak Menunjukkan Opsi "Vision Engine"
Pastikan Anda memiliki versi n8n-nodes-capsolver 1.x atau lebih tinggi. Operasi Vision Engine ditambahkan dalam versi terbaru. Perbarui node komunitas jika diperlukan:
- Pergi ke Pengaturan > Node Komunitas
- Cari
n8n-nodes-capsolver - Perbarui ke versi terbaru
- Restart n8n
Webhook Mengembalikan 404
Alur kerja harus aktif agar webhook aktif. Impor alur kerja, konfigurasi kredensial, lalu aktifkan alur kerja di n8n.
Praktik Terbaik
-
Gunakan string base64 mentah โ selalu hilangkan awalan
data:image/...;base64,sebelum melewatkan gambar ke node CapSolver. -
cocokkan gambar dengan modul โ
slider_1membutuhkanimagedanimageBackground.rotate_1hanya membutuhkanimage.sheinmembutuhkanimageditambahquestion. Menggunakan kombinasi yang salah akan gagal atau mengembalikan hasil yang salah. -
Ambil gambar segar โ gambar puzzle visual biasanya hanya digunakan sekali dan kadaluarsa dengan cepat. Ambil mereka sedekat mungkin dengan waktu penyelesaian.
-
Vision Engine instan โ berbeda dengan operasi Token yang menunggu hasil, operasi Pengenalan mengembalikan hasil secara instan. Alur kerja Anda tidak memerlukan logika ulang atau penundaan polling.
-
Tidak perlu proxy โ Vision Engine menganalisis gambar di sisi server. Tidak ada interaksi browser dengan situs target, jadi tidak ada proxy yang diperlukan.
-
Validasi sebelum menyelesaikan โ periksa bahwa data gambar ada dan nama modul valid sebelum memanggil node CapSolver. Ini menghindari pemborosan kredit API untuk permintaan yang akan gagal.
-
Gunakan
websiteURLjika tersedia โ meskipun opsional, memberikan URL halaman sumber dapat meningkatkan akurasi untuk beberapa jenis puzzle. -
Tangani respons modul spesifik โ modul yang berbeda mengembalikan bidang yang berbeda (
distance,angle,rects,text). Logika downstream Anda harus memeriksa modul yang digunakan dan mengekstrak bidang yang benar.
Siap memulai? Daftar di CapSolver dan gunakan kode bonus n8n untuk bonus tambahan 8% pada recharge pertama Anda!

Kesimpulan
Vision Engine mengisi celah yang berbeda dari operasi Token CapSolver. Di mana reCAPTCHA, Turnstile, dan Cloudflare Challenge solving mengembalikan token yang Anda kirim untuk melewati gerbang, Vision Engine mengembalikan pengukuran yang digunakan otomasi Anda untuk berinteraksi dengan puzzle visual โ menggeser slider, memutar gambar, memilih objek, atau membaca teks dari GIF animasi.
Perbedaan kunci yang perlu diingat:
- Sumber pengenalan, bukan Token โ hasil instan, tidak ada polling
- Gambar base64 masuk, pengukuran keluar โ piksel, derajat, koordinat, atau teks
- Tidak perlu proxy โ AI menganalisis gambar di sisi server
- Lima modul โ masing-masing dirancang untuk jenis puzzle visual tertentu
Dua alur kerja dalam artikel ini menutupi dua pola integrasi paling umum:
- Solver API โ titik akhir webhook umum yang menerima setiap modul dan mengembalikan solusi
- Slider Puzzle Solver โ alur kerja lengkap untuk puzzle CAPTCHA slider
Kedua alur kerja diimpor sebagai tidak aktif. Konfigurasikan kredensial CapSolver Anda, ganti nilai placeholder, aktifkan alur kerja, dan uji.
Pertanyaan yang Sering Diajukan
Bagaimana Vision Engine berbeda dari Image To Text (OCR)?
Image To Text mengenali karakter dalam gambar statis โ OCR standar. Vision Engine pergi lebih jauh: ia memahami hubungan spasial dalam puzzle visual. Ia dapat menghitung jarak slider, sudut rotasi, kotak pembatas objek, dan bahkan membaca teks dari GIF animasi. Mereka keduanya adalah operasi Pengenalan (hasil instan, tidak ada polling), tetapi menyelesaikan jenis masalah yang berbeda.
Apakah saya membutuhkan proxy untuk Vision Engine?
Tidak. Vision Engine menganalisis gambar yang Anda berikan di sisi server. Tidak ada sesi browser, tidak ada cookie, dan tidak ada interaksi dengan situs target. Proxy tidak diperlukan dan node CapSolver tidak menerima parameter proxy untuk tugas Vision Engine.
Bisakah saya menyelesaikan beberapa puzzle dalam satu eksekusi alur kerja?
Ya. Node CapSolver memproses satu item pada satu waktu, tetapi eksekusi item berbasis n8n berarti Anda dapat melewatkan beberapa item melalui node. Setiap item mendapatkan panggilan Pengenalan dan mengembalikan solusi masing-masing. Gunakan node Split In Batches atau beri beberapa item dari node Code.
Format gambar apa yang didukung?
Bidang image dan imageBackground menerima string base64 JPEG, PNG, GIF, dan WebP. String base64 harus mentah โ tidak ada awalan data:image/...;base64,, tidak ada baris baru.
Bagaimana saya mendapatkan gambar puzzle dari situs nyata?
Dalam integrasi puzzle slider CAPTCHA nyata, situs target menyajikan gambar puzzle sebagai bagian dari respons tantangan. Secara umum Anda akan:
- Muat halaman (melalui HTTP Request atau otomatisasi browser)
- Ekstrak URL gambar dari DOM atau permintaan jaringan widget CAPTCHA
- Ambil gambar
- Konversi ke base64
- Kirim ke Vision Engine
Alur kerja Slider Puzzle Solver menunjukkan langkah 3-5. Langkah 1-2 tergantung pada situs target spesifik.
Apa yang dilakukan parameter question?
Parameter question hanya digunakan oleh modul shein. Ia memberi tahu AI apa yang dicari dalam gambar โ misalnya, "Pilih semua sepatu" atau "Klik item yang sesuai." Untuk modul lain, biarkan kosong.
Bisakah saya menggunakan Vision Engine untuk tantangan gambar hCaptcha?
Modul Vision Engine (slider_1, rotate_1, rotate_2, shein, ocr_gif) dirancang untuk jenis puzzle visual tertentu. Tantangan klasifikasi hCaptcha menggunakan pendekatan yang berbeda. Periksa dokumentasi CapSolver untuk solusi khusus hCaptcha.
Seberapa cepat Vision Engine?
Vision Engine adalah operasi Pengenalan, yang berarti hasilnya kembali dalam satu panggilan API โ biasanya kurang dari 2 detik. Tidak ada loop polling, tidak ada panggilan getTaskResult, dan tidak ada penundaan menunggu timeout. Ini membuatnya jauh lebih cepat daripada operasi Token, yang dapat memakan waktu 10-30 detik untuk menyelesaikan.
Apa yang terjadi jika gambar terlalu kecil atau terlalu besar?
Gambar yang terlalu kecil mungkin tidak memiliki cukup detail untuk analisis yang akurat. Gambar yang terlalu besar akan meningkatkan ukuran payload base64 dan mungkin memperlambat permintaan. Untuk hasil terbaik, gunakan resolusi asli yang disediakan oleh tantangan CAPTCHA โ jangan ubah ukuran gambar.
Bisakah saya menggabungkan Vision Engine dengan otomatisasi browser?
Ya, dan itu adalah penggunaan yang dimaksudkan untuk sebagian besar aplikasi dunia nyata. Alur kerja biasanya:
- Otomatisasi browser (Puppeteer/Playwright via n8n) memuat halaman
- Tantangan CAPTCHA muncul dengan gambar puzzle
- Alur kerja Anda mengekstrak URL gambar dan mengambilnya
- Vision Engine mengembalikan solusi (jarak, sudut, dll.)
- Otomatisasi browser menggunakan solusi untuk menyelesaikan tantangan (geser slider, putar gambar, klik koordinat)
Alur kerja Vision Engine menangani langkah 3-4. Langkah 1-2 dan 5 ditangani oleh node otomatisasi browser Anda.
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 Menyelesaikan Teka-Teki Visual di n8n dengan CapSolver
Menyelesaikan CAPTCHA visual dengan CapSolver Vision Engine di n8n. Menangani slider, rotasi, pemilihan objek, dan GIF OCR secara instan.

Emma Foster
18-Mar-2026

Cara Menyelesaikan Fingerprinting TLS di n8n dengan CapSolver
Selesaikan pemindaian sidik jari TLS di n8n dengan CapSolver. Buat permintaan terlihat seperti peramban nyata dan hindari blok deteksi bot.

Emma Foster
18-Mar-2026

