CAPSOLVER
Blog
Cara Menyelesaikan Teka-Teki Visual di n8n dengan CapSolver Vision Engine

Cara Menyelesaikan Teka-Teki Visual di n8n dengan CapSolver

Logo of 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:

  1. Instance n8n (self-hosted atau cloud)
  2. Akun CapSolver dengan API key dan saldo โ€” daftar di sini
  3. Node CapSolver community yang terinstal di n8n (n8n-nodes-capsolver)
  4. 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

Copy
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 Copy
{
  "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 Copy
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 Copy
{
  "solution": {
    "distance": 142,
    "module": "slider_1"
  }
}

Permintaan OCR GIF:

bash Copy
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 Copy
{
  "solution": {
    "text": "x7Km9",
    "module": "ocr_gif"
  }
}

Impor Alur Kerja Ini

Klik untuk memperluas JSON alur kerja
json Copy
{
  "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

Copy
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 Copy
{
  "berhasil": true,
  "modul": "slider_1",
  "jarak": 142,
  "satuan": "pixel",
  "selesaikanPada": "2026-03-16T10:00:00.000Z"
}

Kesalahan:

json Copy
{
  "berhasil": false,
  "kesalahan": "KESALAHAN_GAMBAR_TIDAK_SAHIH",
  "selesaikanPada": "2026-03-16T10:00:00.000Z"
}

Impor Workflow Ini

Klik untuk memperluas JSON workflow
json Copy
{
  "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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
{
  "solution": {
    "distance": 142
  }
}

distance dalam piksel โ€” ini adalah seberapa jauh handle slider harus digeser ke kanan untuk menyelesaikan puzzle.

rotate_1 / rotate_2

json Copy
{
  "solution": {
    "angle": 73
  }
}

angle dalam derajat โ€” ini adalah seberapa banyak gambar harus diputar (searah jarum jam) untuk mencapai orientasi yang benar.

shein

json Copy
{
  "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 Copy
{
  "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:

  1. Node konfigurasi: Ganti puzzleImageURL / backgroundImageURL dengan hanya URL gambar rotasi
  2. Node pengambilan: Hanya membutuhkan satu permintaan HTTP (tidak ada gambar latar belakang untuk rotate_1)
  3. Node CapSolver: Ubah module menjadi rotate_1
  4. Format Solusi: Ekstrak angle alih-alih distance

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:

  • image adalah bagian puzzle (fragmen kecil yang dapat digeser)
  • imageBackground adalah latar belakang penuh dengan slot yang hilang terlihat
  • Kedua gambar dari instansi yang sama
  • Gambar tidak rusak atau terlalu kecil

Pastikan Anda memiliki versi n8n-nodes-capsolver 1.x atau lebih tinggi. Operasi Vision Engine ditambahkan dalam versi terbaru. Perbarui node komunitas jika diperlukan:

  1. Pergi ke Pengaturan > Node Komunitas
  2. Cari n8n-nodes-capsolver
  3. Perbarui ke versi terbaru
  4. 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

  1. Gunakan string base64 mentah โ€” selalu hilangkan awalan data:image/...;base64, sebelum melewatkan gambar ke node CapSolver.

  2. cocokkan gambar dengan modul โ€” slider_1 membutuhkan image dan imageBackground. rotate_1 hanya membutuhkan image. shein membutuhkan image ditambah question. Menggunakan kombinasi yang salah akan gagal atau mengembalikan hasil yang salah.

  3. Ambil gambar segar โ€” gambar puzzle visual biasanya hanya digunakan sekali dan kadaluarsa dengan cepat. Ambil mereka sedekat mungkin dengan waktu penyelesaian.

  4. 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.

  5. Tidak perlu proxy โ€” Vision Engine menganalisis gambar di sisi server. Tidak ada interaksi browser dengan situs target, jadi tidak ada proxy yang diperlukan.

  6. 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.

  7. Gunakan websiteURL jika tersedia โ€” meskipun opsional, memberikan URL halaman sumber dapat meningkatkan akurasi untuk beberapa jenis puzzle.

  8. 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!

Banner kode bonus CapSolver

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:

  1. Solver API โ€” titik akhir webhook umum yang menerima setiap modul dan mengembalikan solusi
  2. 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:

  1. Muat halaman (melalui HTTP Request atau otomatisasi browser)
  2. Ekstrak URL gambar dari DOM atau permintaan jaringan widget CAPTCHA
  3. Ambil gambar
  4. Konversi ke base64
  5. 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:

  1. Otomatisasi browser (Puppeteer/Playwright via n8n) memuat halaman
  2. Tantangan CAPTCHA muncul dengan gambar puzzle
  3. Alur kerja Anda mengekstrak URL gambar dan mengambilnya
  4. Vision Engine mengembalikan solusi (jarak, sudut, dll.)
  5. 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