ProdukIntegrasiSumber DayaDokumentasiHarga
Mulai Sekarang

© 2026 CapSolver. All rights reserved.

Hubungi Kami

Slack: lola@capsolver.com

Produk

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Ekstensi Browser
  • Lebih banyak jenis CAPTCHA

Integrasi

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Mitra
  • Lihat semua integrasi

Sumber Daya

  • Program Referensi
  • Dokumentasi
  • Referensi API
  • Blog
  • FAQ
  • Glosarium
  • Status

Legal

  • Ketentuan Layanan
  • Kebijakan Privasi
  • Kebijakan Pengembalian Dana
  • Jangan jual informasi pribadi saya
Blog/n8n/Cara Menyelesaikan GeeTest V4 di n8n dengan CapSolver: Panduan Integrasi Lengkap
Mar12, 2026

Cara Menyelesaikan GeeTest V4 di n8n dengan CapSolver: Panduan Integrasi Lengkap

Sora Fujimoto

Sora Fujimoto

AI Solutions Architect

GeeTest V4 adalah generasi terbaru dari sistem CAPTCHA perilaku GeeTest, yang digunakan oleh semakin banyak situs web untuk melindungi formulir login, halaman pendaftaran, dan titik akhir data. Tidak seperti sistem CAPTCHA lama yang mengandalkan teka-teki gambar, GeeTest V4 menggunakan tantangan adaptif dan analisis perilaku — menjadikannya salah satu perlindungan yang lebih canggih yang akan Anda temui dalam alur kerja otomatisasi.

Bagaimana jika Anda dapat menyelesaikan GeeTest V4 secara otomatis di dalam alur kerja n8n Anda — baik Anda sedang membangun API solusi yang dapat digunakan kembali, mengikis situs yang dilindungi captcha, atau mengotomatiskan formulir login — semuanya tanpa menulis satu baris kode tradisional pun?

Dalam panduan ini, Anda akan mempelajari cara menggabungkan n8n (alat otomatisasi alur kerja visual) dengan CapSolver (layanan penyelesaian captcha yang didukung AI) untuk menyelesaikan tantangan GeeTest V4 sesuai permintaan — baik sebagai titik akhir API mandiri atau sebagai langkah dalam alur kerja otomatisasi apa pun.

Apa yang akan Anda bangun:

API Solusi — titik akhir yang dapat digunakan kembali yang dapat dipanggil oleh alat Anda yang lain:

  • API solusi GeeTest V4

Alur Kerja Penggunaan Langsung — CapSolver disematkan sebagai langkah dalam otomatisasi yang lebih besar:

  • Pengikis harga dan produk yang menyelesaikan GeeTest V4, mengambil halaman yang dilindungi, dan memperingatkan tentang perubahan harga
  • Otomatisasi login akun yang menyelesaikan GeeTest V4 sebelum mengirimkan kredensial

Apa itu GeeTest V4?

GeeTest V4 adalah versi terbaru dari platform CAPTCHA GeeTest. Ini menggantikan sistem V3 yang lebih lama dengan model integrasi yang disederhanakan dan deteksi perilaku yang ditingkatkan. Dari perspektif penyelesaian, V4 secara struktural lebih sederhana daripada V3 — ini hanya memerlukan parameter statis (captchaId) daripada aliran tantangan dinamis yang dibutuhkan V3.

Perbedaan Utama dari GeeTest V3:

Fitur GeeTest V3 GeeTest V4
Parameter Utama gt + challenge dinamis captchaId (statis)
Pengambilan Tantangan Diperlukan — harus memanggil API GeeTest terlebih dahulu Tidak diperlukan — captchaId bersifat statis
Bidang Solusi 3 (challenge, validate, seccode) 5 (captcha_id, lot_number, pass_token, gen_time, captcha_output)
Skrip Widget gt.js gcaptcha4.js
Jenis Tugas GeeTestTask / GeeTestTaskProxyLess Hanya GeeTestTaskProxyLess

Keuntungan Utama V4: captchaId disematkan dalam kode sumber halaman dan tidak pernah berubah — temukan sekali, gunakan selamanya. Tidak ada pengambilan tantangan dinamis berarti lebih sedikit node dalam alur kerja Anda.


Prasyarat

Sebelum kita mulai, pastikan Anda memiliki yang berikut ini:

  1. Instans n8n — Baik Dihosting Sendiri atau n8n Cloud
  2. Akun CapSolver — Daftar di sini dan dapatkan kunci API Anda
  3. Node CapSolver n8n — Sudah tersedia sebagai node resmi di n8n (tidak perlu instalasi)

Penting: Pastikan Anda memiliki saldo yang cukup di akun CapSolver Anda. Tugas penyelesaian GeeTest V4 menghabiskan kredit berdasarkan penggunaan.


Menyiapkan CapSolver di n8n

CapSolver tersedia sebagai integrasi resmi di n8n — tidak diperlukan instalasi node komunitas. Anda dapat menemukannya langsung di panel node saat membangun alur kerja Anda.

Karena ini adalah integrasi resmi, Anda perlu membuat kredensial di n8n agar node CapSolver dapat mengautentikasi dengan akun Anda.

Langkah 1: Buka Halaman Kredensial

Navigasikan ke instans n8n Anda dan buka Settings > Credentials. Anda akan melihat semua kredensial yang Anda konfigurasikan di sini.

Halaman kredensial n8n yang menunjukkan akun CapSolver

Langkah 2: Buat Kredensial CapSolver

  1. Klik Create credential (kanan atas)
  2. Cari "CapSolver" dan pilih CapSolver API
  3. Masukkan Kunci API Anda — salin langsung dari Dasbor CapSolver
  4. Biarkan Allowed HTTP Request Domains diatur ke All (default)
  5. Klik Save

n8n akan secara otomatis menguji koneksi. Anda akan melihat spanduk hijau "Connection tested successfully" yang mengonfirmasi bahwa kunci API Anda valid.

Konfigurasi kredensial CapSolver dengan uji koneksi yang berhasil

Penting: Setiap node CapSolver dalam alur kerja Anda akan merujuk kredensial ini. Anda hanya perlu membuatnya sekali — semua alur kerja solusi Anda akan berbagi kredensial yang sama.

Sekarang Anda siap untuk membangun alur kerja solusi GeeTest V4 Anda!


Cara Mengidentifikasi Parameter GeeTest V4

Sebelum Anda dapat menyelesaikan CAPTCHA GeeTest V4, Anda perlu menemukan captchaId-nya — satu-satunya parameter yang diperlukan. Tidak seperti GeeTest V3 (yang memerlukan pengambilan challenge dinamis), captchaId V4 bersifat statis dan disematkan langsung ke dalam kode sumber halaman.

Metode 1: Periksa Kode Sumber Halaman

  1. Buka Lihat Sumber (Ctrl+U) atau gunakan tab Elements DevTools
  2. Cari captcha_id atau captchaId di kode sumber halaman
  3. Cari referensi ke gcaptcha4.js — skrip widget GeeTest V4
  4. captchaId biasanya diteruskan sebagai parameter konfigurasi saat menginisialisasi widget
html Copy
<!-- Contoh: Inisialisasi GeeTest V4 dalam kode sumber halaman -->
<script>
  initGeetest4({
    captchaId: 'e392e1d7fd421dc63325744d5a2b9c73',
    product: 'bind'
  });
</script>

Metode 2: Tab Jaringan DevTools

  1. Buka DevTools (F12) > tab Network
  2. Filter permintaan dengan gcaptcha4 atau geetest
  3. Cari permintaan ke gcaptcha4.geetest.com — parameter captcha_id akan berada dalam string kueri

Keuntungan Utama V4: captchaId bersifat statis — setelah Anda menemukannya, Anda dapat menggunakannya tanpa batas waktu tanpa perlu mengambil tantangan baru setiap saat. Ini membuat alur kerja V4 secara struktural identik dengan alur kerja Turnstile.


Alur Kerja: API Solusi GeeTest V4

Alur kerja ini membuat titik akhir API POST yang menerima parameter GeeTest V4 dan mengembalikan sekumpulan token yang diselesaikan.

Cara Kerjanya

Alur kerja terdiri dari empat node:

  1. Webhook — Menerima permintaan POST masuk dengan parameter GeeTest V4
  2. GeeTest V4 — Mengirimkan tantangan ke CapSolver dan menunggu solusi
  3. Kesalahan CapSolver? — Node IF yang bercabang berdasarkan apakah penyelesaian gagal (yaitu, $json.error tidak kosong)
  4. Tanggapi Webhook — Mengembalikan solusi jika berhasil, atau {"error": "..."} jika gagal

Konfigurasi Node

1. Node Webhook

Pengaturan Nilai
Metode HTTP POST
Jalur solver-geetest-v4
Tanggapi Response Node

Ini membuat titik akhir di: https://your-n8n-instance.com/webhook/solver-geetest-v4

2. Node CapSolver GeeTest V4

Parameter Nilai Deskripsi
Operasi GeeTest V4 Harus diatur ke GeeTest V4
Jenis GeeTestTaskProxyLess Ini adalah satu-satunya jenis tugas yang tersedia (tidak ada varian proxy)
URL Situs Web {{ $json.body.websiteURL }} URL halaman dengan widget GeeTest V4
ID Captcha {{ $json.body.captchaId }} ID captcha GeeTest V4 statis
Subdomain Server API GeeTest (Opsional) Server API GeeTest kustom jika situs menggunakannya

Pilih kredensial CapSolver Anda di node ini. Parameter geetestApiServerSubdomain opsional jarang diperlukan — hanya tambahkan jika server GeeTest default tidak berfungsi untuk situs target Anda.

3. Node Kesalahan CapSolver? (IF)

Pengaturan Nilai
Kondisi ={{ $json.error }} tidak kosong
Cabang Benar Merutekan ke node Webhook Tanggapan Kesalahan
Cabang Salah Merutekan ke node Webhook Tanggapan Berhasil

4. Node Tanggapan Webhook

Cabang Berhasil (Keluaran salah dari Kesalahan CapSolver?):

Pengaturan Nilai
Tanggapi Dengan JSON
Badan Tanggapan ={{ JSON.stringify($json.data) }}

Cobalah

Kirim permintaan POST ke titik akhir Webhook Anda:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-geetest-v4 \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/login",
    "captchaId": "e392e1d7fd421dc63325744d5a2b9c73"
  }'

Tanggapan yang Diharapkan:

json Copy
{
  "taskId": "abc123...",
  "solution": {
    "captcha_id": "e392e1d7fd421dc63325744d5a2b9c73",
    "lot_number": "7c18c041a6ed4e...",
    "pass_token": "d88ce40c0a5c5a18...",
    "gen_time": "1709123456",
    "captcha_output": "dGVzdF9jYXB0Y2hh..."
  },
  "status": "ready"
}

Impor Alur Kerja Ini

Salin JSON di bawah ini dan impor ke n8n melalui Menu > Import from JSON:

Klik untuk memperluas JSON alur kerja
json Copy
{
  "name": "GeeTest V4 — Solver API",
  "nodes": [
    {
      "parameters": {
        "content": "## GeeTest V4 — API Solusi\n\n**Untuk siapa ini:** Pengembang yang perlu menyelesaikan tantangan GeeTest V4 melalui titik akhir POST sederhana.\n\n**Apa yang dilakukannya:** Mengekspos webhook yang menerima parameter captcha, menyelesaikan tantangan dengan CapSolver, dan mengembalikan token atau kesalahan sebagai JSON.\n\n**Cara kerjanya:**\n1. Webhook menerima POST dengan URL target, kunci situs, dan parameter opsional\n2. Node CapSolver menyelesaikan tantangan GeeTest V4\n3. Node IF memeriksa kesalahan → mengembalikan token keberhasilan atau JSON kesalahan\n\n**Pengaturan:**\n1. Tambahkan kunci API CapSolver Anda di **Settings → Credentials → CapSolver API**\n2. Aktifkan alur kerja\n3. POST ke URL webhook dengan parameter captcha Anda",
        "height": 494,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -712,
        -400
      ],
      "id": "sticky-blog-main-1773678228112-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "solver-geetest-v4",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        -192,
        0
      ],
      "id": "a1b2c3d4-0001-0001-0001-a1b2c3d40001",
      "name": "Webhook Trigger",
      "webhookId": "a1b2c3d4-aaaa-bbbb-cccc-a1b2c3d40001",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "GeeTest V4",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "captchaId": "={{ $json.body.captchaId }}",
        "geetestApiServerSubdomain": "={{ $json.body.geetestApiServerSubdomain }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        104,
        0
      ],
      "id": "a1b2c3d4-0001-0001-0001-a1b2c3d40002",
      "name": "Solve GeeTest V4",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "geetest-if-001",
              "leftValue": "={{ $json.error }}",
              "operator": {
                "type": "string",
                "operation": "isEmpty",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        408,
        0
      ],
      "id": "a1b2c3d4-0001-0001-0001-a1b2c3d40003",
      "name": "CapSolver Error?"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json.data) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        712,
        -80
      ],
      "id": "a1b2c3d4-0001-0001-0001-a1b2c3d40004",
      "name": "Respond to Webhook (Success)"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ error: $json.error }) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        712,
        128
      ],
      "id": "a1b2c3d4-0001-0001-0001-a1b2c3d40005",
      "name": "Respond to Webhook (Error)"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Solve GeeTest V4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V4": {
      "main": [
        [
          {
            "node": "CapSolver Error?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapSolver Error?": {
      "main": [
        [
          {
            "node": "Respond to Webhook (Success)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond to Webhook (Error)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}

Alur Kerja: Pengikisan GeeTest V4 — Detail Harga & Produk — CapSolver + Jadwal + Webhook

Alur kerja ini mengikis halaman produk setiap 6 jam (jadwal) atau sesuai permintaan (webhook), mengekstrak harga menggunakan node HTML, dan membandingkannya dengan nilai yang disimpan sebelumnya.

Jalur Jadwal:

Copy
Setiap 6 Jam -> Selesaikan GeeTest V4 -> Ambil Halaman Produk -> Ekstrak Data
  -> Bandingkan Data -> Data Berubah? -> Bangun Peringatan / Tidak Ada Perubahan

Perilaku Utama:

  • Bidang solusi captcha dikirim sebagai bidang formulir (ini adalah cara yang benar untuk mengirimkan token GeeTest V4)
  • Node HTML mengekstrak harga dan nama produk melalui pemilih CSS (.product-price, h1)
  • $workflow.staticData.lastPrice mempertahankan harga sebelumnya di antara eksekusi
  • Perbandingan harga mendeteksi penurunan (keparahan: deal) dan kenaikan (keparahan: info)
Klik untuk memperluas JSON alur kerja lengkap (17 node)
json Copy
{
  "name": "GeeTest V4 Scraping — Price & Product Details — CapSolver + Schedule + Webhook",
  "nodes": [
    {
      "parameters": {
        "content": "## Pengikisan GeeTest V4 — Monitor Harga & Produk\n\n**Untuk siapa ini:** Tim yang perlu memantau harga atau data produk di situs yang dilindungi GeeTest V4.\n\n**Apa yang dilakukannya:** Menyelesaikan GeeTest V4, mengambil halaman produk, mengekstrak harga dan nama melalui pemilih CSS, membandingkan dengan nilai yang disimpan, dan memperingatkan tentang perubahan jika ada.\n\n**Cara kerjanya:**\n1. Jadwal (setiap 6 jam) atau Webhook memicu aliran.\n2. CapSolver menyelesaikan tantangan GeeTest V4.\n3. Permintaan HTTP mengambil halaman produk dengan token yang diselesaikan.\n4. Node HTML mengekstrak harga dan nama produk.\n5. Node kode membandingkan harga saat ini dengan harga yang disimpan → memperingatkan tentang perubahan jika ada.\n\n**Pengaturan:**\n1. Tambahkan kunci API CapSolver Anda di **Settings → Credentials**.\n2. Ganti URL placeholder dan kunci situs.\n3. Perbarui pemilih CSS di \"Ekstrak Data\" agar sesuai dengan halaman target Anda.\n4. Hubungkan keluaran \"Bangun Peringatan\" ke saluran pemberitahuan Anda.",
        "height": 560,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -920,
        -380
      ],
      "id": "sticky-blog-main-1773678228112-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "### Jalur Jadwal\nBerjalan secara otomatis setiap 6 jam.\nHasil disimpan dalam data statis alur kerja untuk perbandingan antar eksekusi.",
        "height": 480,
        "width": 1900,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        -280
      ],
      "id": "sticky-blog-section-1773678228112-2",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "### Jalur Webhook\nPemicu sesuai permintaan — logika yang sama, mengembalikan hasil sebagai respons JSON.",
        "height": 480,
        "width": 1900,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -440,
        140
      ],
      "id": "sticky-blog-section-1773678228112-3",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -400,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999901",
      "name": "Every 6 Hours"
    },
    {
      "parameters": {
        "operation": "GeeTest V4",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "captchaId": "YOUR_CAPTCHA_ID_HERE",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999902",
      "name": "Solve GeeTest V4",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://YOUR-TARGET-SITE.com/product-page",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "captcha_id",
              "value": "={{ $json.data.solution.captcha_id }}"
            },
            {
              "name": "lot_number",
              "value": "={{ $json.data.solution.lot_number }}"
            },
            {
              "name": "pass_token",
              "value": "={{ $json.data.solution.pass_token }}"
            },
            {
              "name": "gen_time",
              "value": "={{ $json.data.solution.gen_time }}"
            },
            {
              "name": "captcha_output",
              "value": "={{ $json.data.solution.captcha_output }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999903",
      "name": "Fetch Product Page"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "sourceData": "json",
        "dataPropertyName": "data",
        "extractionValues": {
          "values": [
            {
              "key": "price",
              "cssSelector": ".product-price, [data-price], .price",
              "returnValue": "text",
              "returnArray": false
            },
            {
              "key": "productName",
              "cssSelector": "h1, .product-title",
              "returnValue": "text",
              "returnArray": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        512,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999904",
      "name": "Extract Data"
    },
    {
      "parameters": {
        "jsCode": "// Dapatkan harga saat ini dan sebelumnya dari data statis alur kerja\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// Uraikan nilai numerik untuk perbandingan\nconst parsePrice = (str) => {\n  if (!str) return null;\n  const match = str.match(/[\\d,]+\\.?\\d*/);\n  return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// Perbarui harga yang disimpan\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n  json: {\n    productName,\n    currentPrice,\n    previousPrice: previousPrice || 'first check',\n    changed,\n    direction,\n    diff: changed ? `$${diff}` : null,\n    checkedAt: new Date().toISOString()\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999905",
      "name": "Compare Data"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "price-if-001",
              "leftValue": "={{ $json.changed }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1104,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999906",
      "name": "Data Changed?"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-001",
              "name": "alert",
              "value": "=Harga {{ $json.direction }} untuk {{ $json.productName }}: {{ $json.previousPrice }} → {{ $json.currentPrice }} ({{ $json.direction === 'dropped' ? '-' : '+' }}{{ $json.diff }})",
              "type": "string"
            },
            {
              "id": "alert-002",
              "name": "severity",
              "value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
              "type": "string"
            },
            {
              "id": "alert-003",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1408,
        -80
      ],
      "id": "99999999-9999-9999-9999-999999999907",
      "name": "Build Alert"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "nc-001",
              "name": "status",
              "value": "no_change",
              "type": "string"
            },
            {
              "id": "nc-002",
              "name": "currentPrice",
              "value": "={{ $json.currentPrice }}",
              "type": "string"
            },
            {
              "id": "nc-003",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1408,
        128
      ],
      "id": "99999999-9999-9999-9999-999999999908",
      "name": "No Change"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "price-monitor-geetest-v4",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -400,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999909",
      "name": "Webhook Trigger",
      "webhookId": "99999999-aaaa-bbbb-cccc-999999999909",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "GeeTest V4",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "captchaId": "YOUR_CAPTCHA_ID_HERE",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999910",
      "name": "Solve GeeTest V4 [Webhook]",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://YOUR-TARGET-SITE.com/product-page",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "captcha_id",
              "value": "={{ $json.data.solution.captcha_id }}"
            },
            {
              "name": "lot_number",
              "value": "={{ $json.data.solution.lot_number }}"
            },
            {
              "name": "pass_token",
              "value": "={{ $json.data.solution.pass_token }}"
            },
            {
              "name": "gen_time",
              "value": "={{ $json.data.solution.gen_time }}"
            },
            {
              "name": "captcha_output",
              "value": "={{ $json.data.solution.captcha_output }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999911",
      "name": "Fetch Product Page [Webhook]"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "sourceData": "json",
        "dataPropertyName": "data",
        "extractionValues": {
          "values": [
            {
              "key": "price",
              "cssSelector": ".product-price, [data-price], .price",
              "returnValue": "text",
              "returnArray": false
            },
            {
              "key": "productName",
              "cssSelector": "h1, .product-title",
              "returnValue": "text",
              "returnArray": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        512,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999912",
      "name": "Extract Data [Webhook]"
    },
    {
      "parameters": {
        "jsCode": "// Dapatkan harga saat ini dan sebelumnya dari data statis alur kerja\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// Uraikan nilai numerik untuk perbandingan\nconst parsePrice = (str) => {\n  if (!str) return null;\n  const match = str.match(/[\\d,]+\\.?\\d*/);\n  return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// Perbarui harga yang disimpan\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n  json: {\n    productName,\n    currentPrice,\n    previousPrice: previousPrice || 'first check',\n    changed,\n    direction,\n    diff: changed ? `$${diff}` : null,\n    checkedAt: new Date().toISOString()\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999913",
      "name": "Compare Data [Webhook]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "price-if-002",
              "leftValue": "={{ $json.changed }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1104,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999914",
      "name": "Data Changed? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-004",
              "name": "alert",
              "value": "=Harga {{ $json.direction }} untuk {{ $json.productName }}: {{ $json.previousPrice }} → {{ $json.currentPrice }} ({{ $json.direction === 'dropped' ? '-' : '+' }}{{ $json.diff }})",
              "type": "string"
            },
            {
              "id": "alert-005",
              "name": "severity",
              "value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
              "type": "string"
            },
            {
              "id": "alert-006",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1408,
        340
      ],
      "id": "99999999-9999-9999-9999-999999999915",
      "name": "Build Alert [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "nc-004",
              "name": "status",
              "value": "no_change",
              "type": "string"
            },
            {
              "id": "nc-005",
              "name": "currentPrice",
              "value": "={{ $json.currentPrice }}",
              "type": "string"
            },
            {
              "id": "nc-006",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1408,
        548
      ],
      "id": "99999999-9999-9999-9999-999999999916",
      "name": "No Change [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1712,
        420
      ],
      "id": "99999999-9999-9999-9999-999999999917",
      "name": "Respond to Webhook [Webhook]"
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "Solve GeeTest V4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V4": {
      "main": [
        [
          {
            "node": "Fetch Product Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Product Page": {
      "main": [
        [
          {
            "node": "Extract Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data": {
      "main": [
        [
          {
            "node": "Compare Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compare Data": {
      "main": [
        [
          {
            "node": "Data Changed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Data Changed?": {
      "main": [
        [
          {
            "node": "Build Alert",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Change",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Solve GeeTest V4 [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V4 [Webhook]": {
      "main": [
        [
          {
            "node": "Fetch Product Page [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Product Page [Webhook]": {
      "main": [
        [
          {
            "node": "Extract Data [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data [Webhook]": {
      "main": [
        [
          {
            "node": "Compare Data [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compare Data [Webhook]": {
      "main": [
        [
          {
            "node": "Data Changed? [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Data Changed? [Webhook]": {
      "main": [
        [
          {
            "node": "Build Alert [Webhook]",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Change [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Alert [Webhook]": {
      "main": [
        [
          {
            "node": "Respond to Webhook [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Change [Webhook]": {
      "main": [
        [
          {
            "node": "Respond to Webhook [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}

Alur Kerja: Otomatisasi Login Akun GeeTest V4 — CapSolver + Jadwal + Webhook

Alur kerja ini mengotomatiskan pengiriman formulir login yang dilindungi GeeTest V4 dari awal hingga akhir. Ini menyelesaikan tantangan GeeTest V4 sebelum mengirimkan kredensial.

Cara Kerjanya

Alur kerja ini terdiri dari lima node:

  1. Webhook — Menerima permintaan POST masuk yang memicu otomatisasi login
  2. Selesaikan GeeTest V4 — Mengirimkan tantangan ke CapSolver dan menunggu solusi
  3. Kirim Formulir Login — Mengeluarkan permintaan HTTP POST ke situs web target dengan kredensial dan token GeeTest V4 yang diselesaikan
  4. Tanggapi Webhook — Mengembalikan hasil login

Konfigurasi Node

1. Node Webhook

Pengaturan Nilai
Metode HTTP POST
Jalur login-geetest-v4
Tanggapi Response Node

Ini membuat titik akhir di: https://your-n8n-instance.com/webhook/login-geetest-v4

2. Selesaikan GeeTest V4 (CapSolver)

Parameter Nilai
Operasi GeeTest V4
URL Situs Web https://YOUR-TARGET-SITE.com/login
ID Captcha YOUR_CAPTCHA_ID_HERE

Pastikan Anda juga memilih kredensial CapSolver Anda.

3. Kirim Formulir Login (Permintaan HTTP)

Pengaturan Nilai
Metode POST
URL https://YOUR-TARGET-SITE.com/login
Jenis Konten form-urlencoded
Parameter Badan username=YOUR_USERNAME, password=YOUR_PASSWORD, captcha_id={{ $('Solve GeeTest V4').item.json.data.solution.captcha_id }}, lot_number={{ $('Solve GeeTest V4').item.json.data.solution.lot_number }}, pass_token={{ $('Solve GeeTest V4').item.json.data.solution.pass_token }}, gen_time={{ $('Solve GeeTest V4').item.json.data.solution.gen_time }}, captcha_output={{ $('Solve GeeTest V4').item.json.data.solution.captcha_output }}

Penting: Ganti YOUR_USERNAME dan YOUR_PASSWORD dengan kredensial Anda yang sebenarnya. Selain itu, Anda mungkin perlu menyesuaikan nama bidang formulir agar sesuai dengan HTML situs target Anda.

4. Tanggapi Webhook (Berhasil/Gagal)

Pengaturan Nilai
Tanggapi Dengan JSON
Badan Tanggapan ={{ JSON.stringify($json) }}

Cobalah

Kirim permintaan POST ke titik akhir Webhook Anda:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/login-geetest-v4 \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/login",
    "captchaId": "e392e1d7fd421dc63325744d5a2b9c73",
    "username": "testuser",
    "password": "testpass"
  }'

Tanggapan yang Diharapkan (Berhasil):

json Copy
{
  "status": "success",
  "message": "Login successful",
  "solution": {
    "captcha_id": "e392e1d7fd421dc63325744d5a2b9c73",
    "lot_number": "7c18c041a6ed4e...",
    "pass_token": "d88ce40c0a5c5a18...",
    "gen_time": "1709123456",
    "captcha_output": "dGVzdF9jYXB0Y2hh..."
  }
}

Tanggapan yang Diharapkan (Gagal):

json Copy
{
  "status": "failed",
  "message": "Login failed: Invalid credentials or captcha",
  "error": "..."
}

Impor Alur Kerja Ini

Salin JSON di bawah ini dan impor ke n8n melalui Menu > Import from JSON:

Klik untuk memperluas JSON alur kerja lengkap
json Copy
{
  "name": "GeeTest V4 Account Login — CapSolver + Schedule + Webhook",
  "nodes": [
    {
      "parameters": {
        "content": "## Otomatisasi Login Akun GeeTest V4 — CapSolver + Jadwal + Webhook\n\n**Untuk siapa ini:** Tim yang perlu mengotomatiskan login ke akun yang dilindungi GeeTest V4.\n\n**Apa yang dilakukannya:** Menyelesaikan tantangan GeeTest V4 dan mengirimkan formulir login dengan token yang diselesaikan dan kredensial pengguna.\n\n**Cara kerjanya:**\n1. Webhook memicu aliran.\n2. CapSolver menyelesaikan tantangan GeeTest V4.\n3. Permintaan HTTP mengirimkan formulir login dengan token yang diselesaikan dan kredensial pengguna.\n4. Webhook mengembalikan hasil login.\n\n**Pengaturan:**\n1. Tambahkan kunci API CapSolver Anda di **Settings → Credentials**.\n2. Ganti URL placeholder dan kredensial.\n3. Sesuaikan nama bidang formulir agar sesuai dengan situs target Anda.\n4. Aktifkan alur kerja.",
        "height": 480,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -728,
        -400
      ],
      "id": "sticky-blog-main-1773678228112-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "login-geetest-v4",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -400,
        0
      ],
      "id": "a2b3c4d5-0001-0001-0001-a2b3c4d50001",
      "name": "Webhook Trigger",
      "webhookId": "a2b3c4d5-aaaa-bbbb-cccc-a2b3c4d50001",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "GeeTest V4",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "captchaId": "={{ $json.body.captchaId }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "a2b3c4d5-0001-0001-0001-a2b3c4d50002",
      "name": "Solve GeeTest V4",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $json.body.websiteURL }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
            },
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "username",
              "value": "={{ $json.body.username }}"
            },
            {
              "name": "password",
              "value": "={{ $json.body.password }}"
            },
            {
              "name": "captcha_id",
              "value": "={{ $('Solve GeeTest V4').item.json.data.solution.captcha_id }}"
            },
            {
              "name": "lot_number",
              "value": "={{ $('Solve GeeTest V4').item.json.data.solution.lot_number }}"
            },
            {
              "name": "pass_token",
              "value": "={{ $('Solve GeeTest V4').item.json.data.solution.pass_token }}"
            },
            {
              "name": "gen_time",
              "value": "={{ $('Solve GeeTest V4').item.json.data.solution.gen_time }}"
            },
            {
              "name": "captcha_output",
              "value": "={{ $('Solve GeeTest V4').item.json.data.solution.captcha_output }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "a2b3c4d5-0001-0001-0001-a2b3c4d50003",
      "name": "Submit Login Form"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        512,
        0
      ],
      "id": "a2b3c4d5-0001-0001-0001-a2b3c4d50004",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Solve GeeTest V4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V4": {
      "main": [
        [
          {
            "node": "Submit Login Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Login Form": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}

Pemecahan Masalah

"Akses GeeTest V4 tidak ditemukan"

Kesalahan ini menunjukkan bahwa akun atau paket CapSolver Anda tidak menyertakan akses ke GeeTest V4. Periksa Dasbor CapSolver Anda untuk mengonfirmasi apakah layanan ini disertakan dalam paket Anda.

"URL Situs Web Tidak Valid"

Kesalahan ini menunjukkan bahwa parameter websiteURL yang Anda berikan di node CapSolver salah. Periksa kembali tab jaringan alat pengembang situs target Anda untuk memastikan Anda menggunakan nilai yang benar.

"Login gagal meskipun GeeTest V4 diselesaikan"

Jika login gagal meskipun GeeTest V4 berhasil diselesaikan, masalahnya mungkin terletak pada poin-titik berikut:

  • Kredensial salah: Periksa kembali nama pengguna dan kata sandi yang Anda kirimkan dalam formulir login.
  • Ketidakcocokan sesi: Jika proses login melibatkan sesi atau cookie, pastikan Anda mempertahankan sesi yang sama antara mengambil tantangan GeeTest V4 dan mengirimkan formulir login.
  • Bidang formulir lainnya: Situs target mungkin memerlukan bidang tersembunyi tambahan, token CSRF, atau parameter lain agar login berhasil. Periksa HTML formulir untuk mengidentifikasi bidang lain yang diperlukan.
  • User-Agent: Beberapa situs mungkin menolak permintaan berdasarkan string user-agent. Coba atur user-agent browser umum dalam permintaan HTTP Anda.

"Kredensial CapSolver Tidak Valid"

Kesalahan ini menunjukkan bahwa kunci API CapSolver yang Anda konfigurasikan di n8n salah atau telah kedaluwarsa. Periksa Dasbor CapSolver Anda dan perbarui kredensial di n8n.


Praktik Terbaik

  1. Pertahankan Sesi: Jika situs target menggunakan sesi atau cookie, pastikan Anda mempertahankan sesi yang sama antara mengambil tantangan dan mengirimkan formulir. Di n8n, Anda dapat menangani cookie menggunakan node Permintaan HTTP.
  2. Validasi Parameter: Periksa kembali apakah websiteURL dan parameter opsional apa pun seperti captchaId dan geetestApiServerSubdomain sudah benar. Ini sangat penting untuk keberhasilan penyelesaian GeeTest V4.
  3. Tangani Kesalahan: Sertakan logika penanganan kesalahan dalam alur kerja Anda untuk menangani kegagalan penyelesaian atau login dengan baik. Ini dapat mencakup mekanisme percobaan ulang atau pemberitahuan.
  4. Gunakan User-Agent yang Sesuai: Atur string user-agent browser umum di semua permintaan HTTP Anda untuk menghindari pemblokiran oleh situs.
  5. Uji dan Ulangi: Implementasi GeeTest V4 dapat bervariasi antar situs. Mulailah dari yang kecil, uji alur kerja Anda, dan ulangi sesuai kebutuhan untuk memastikannya berfungsi dengan andal pada target spesifik Anda.
  6. Tidak Perlu Proxy: Tidak seperti jenis CAPTCHA lainnya, penyelesaian GeeTest V4 umumnya tidak mengharuskan Anda menyediakan proxy. CapSolver menangani persyaratan proxy secara internal.

Siap untuk memulai? Daftar ke CapSolver dan gunakan kode bonus n8n untuk mendapatkan bonus tambahan 8% pada pengisian ulang pertama Anda!

Spanduk kode bonus CapSolver

Pertanyaan yang Sering Diajukan

Apa itu GeeTest V4?

GeeTest V4 adalah generasi terbaru dari sistem CAPTCHA perilaku GeeTest, yang menggunakan tantangan adaptif dan analisis perilaku untuk melindungi situs web.

Bagaimana GeeTest V4 berbeda dari GeeTest V3?

GeeTest V4 secara struktural lebih sederhana daripada V3, hanya memerlukan parameter captchaId statis daripada aliran tantangan dinamis yang dibutuhkan V3. Ini juga menggunakan skrip gcaptcha4.js dan mengembalikan 5 bidang solusi.

Berapa biaya untuk menyelesaikan tantangan GeeTest V4?

Harga bervariasi berdasarkan penggunaan. Periksa halaman harga CapSolver untuk harga GeeTest V4 saat ini. Tugas penyelesaian GeeTest V4 lebih mahal daripada pengenalan gambar-ke-teks sederhana, tetapi lebih murah daripada jenis CAPTCHA kompleks lainnya.

Berapa lama waktu yang dibutuhkan untuk menyelesaikan tantangan GeeTest V4?

Tugas penyelesaian GeeTest V4 biasanya memakan waktu antara 10 hingga 30 detik, tergantung pada kompleksitas tantangan dan beban server CapSolver. Tidak seperti ImageToTextTask, penyelesaian GeeTest V4 melibatkan pembuatan dan polling tugas, sehingga tidak instan.

Apakah saya memerlukan proxy untuk GeeTest V4?

Layanan penyelesaian GeeTest V4 CapSolver umumnya tidak mengharuskan Anda menyediakan proxy. CapSolver menangani persyaratan proxy secara internal. Anda hanya perlu memberikan websiteURL dan captchaId.

Mengapa token GeeTest V4 saya tidak diterima?

Jika token GeeTest V4 Anda tidak diterima, periksa hal berikut:

  • Ketidakcocokan sesi: Pastikan Anda mempertahankan sesi dan cookie yang sama antara mengambil tantangan GeeTest V4 dan mengirimkan formulir.
  • Bidang formulir lainnya: Periksa HTML formulir untuk melihat apakah ada bidang tersembunyi tambahan atau token CSRF yang perlu Anda kirimkan.
  • User-Agent: Coba atur user-agent browser umum dalam permintaan HTTP Anda.
  • Parameter: Pastikan parameter websiteURL dan captchaId sudah benar.

Mengapa login gagal meskipun GeeTest V4 diselesaikan?

Jika login gagal meskipun GeeTest V4 berhasil diselesaikan, periksa hal berikut:

  • Kredensial: Pastikan Anda mengirimkan nama pengguna dan kata sandi yang benar.
  • Sesi/Cookie: Pastikan Anda mempertahankan sesi dan cookie yang sama antara mengambil tantangan dan mengirimkan formulir login.
  • Bidang formulir lainnya: Periksa HTML formulir untuk melihat apakah ada bidang tersembunyi tambahan atau token CSRF yang perlu Anda kirimkan.
  • User-Agent: Coba atur user-agent browser umum dalam permintaan HTTP Anda.

Bisakah alur kerja ini digunakan dengan n8n Cloud?

Ya. Alur kerja ini berfungsi dengan n8n yang dihosting sendiri dan n8n Cloud. Node CapSolver sudah tersedia sebagai integrasi resmi. Anda hanya perlu menambahkan kredensial API Anda.

Lihat Lebih Banyak

n8nMar 09, 2026

Cara Menyelesaikan reCAPTCHA v2/v3 Menggunakan CapSolver dan n8n

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.

Emma Foster
Emma Foster
n8nMar 09, 2026

Cara Mengatasi Cloudflare Turnstile Menggunakan CapSolver dan n8n

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.

Daftar Isi

Emma Foster
Emma Foster
n8nMar 17, 2026

Cara Menggunakan CapSolver di n8n: Panduan Lengkap untuk Menyelesaikan CAPTCHA dalam Alur Kerja Anda

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

Emma Foster
Emma Foster
n8nMar 12, 2026

Cara Menyelesaikan GeeTest V3 di n8n dengan CapSolver: Panduan Integrasi Lengkap

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

Ethan Collins
Ethan Collins