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 V3 di n8n dengan CapSolver: Panduan Integrasi Lengkap
Mar12, 2026

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

Ethan Collins

Ethan Collins

Pattern Recognition Specialist

GeeTest V3 adalah salah satu CAPTCHA perilaku yang paling banyak digunakan di web. Tidak seperti tantangan kotak centang sederhana, GeeTest V3 menggunakan teka-teki interaktif — geser untuk memverifikasi, pemilihan ikon, dan pencocokan kata — untuk membedakan manusia dari bot. Ini umumnya ditemukan di halaman login, formulir pendaftaran, dan situs padat data di Asia dan semakin banyak di seluruh dunia.

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

Dalam panduan ini, Anda akan belajar cara menggabungkan n8n (alat otomatisasi alur kerja visual) dengan CapSolver (layanan pemecahan captcha bertenaga AI) untuk menyelesaikan tantangan GeeTest V3 sesuai permintaan — baik sebagai titik akhir API mandiri atau sebagai langkah dalam alur kerja otomatisasi yang lebih besar.

Apa yang akan Anda bangun:

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

  • API pemecahan GeeTest V3

Alur kerja penggunaan langsung — CapSolver disematkan sebagai langkah dalam otomatisasi yang lebih besar:

  • Scraper harga & produk yang memecahkan GeeTest V3, mengambil halaman yang dilindungi, dan memperingatkan tentang perubahan harga
  • Otomatisasi login akun yang memecahkan GeeTest V3 sebelum mengirimkan kredensial

Apa itu GeeTest V3?

GeeTest V3 adalah sistem CAPTCHA tantangan-respons yang memverifikasi pengguna melalui tugas interaktif. Tidak seperti reCAPTCHA (yang menggunakan satu token) atau Cloudflare Turnstile (yang berjalan secara tak terlihat), GeeTest V3 menyajikan teka-teki yang terlihat yang memerlukan interaksi pengguna:

  • Teka-teki geser — Seret penggeser untuk melengkapi potongan teka-teki
  • Klik ikon — Klik ikon tertentu dalam urutan yang benar
  • Pencocokan kata — Pilih karakter yang cocok dengan prompt

Dari perspektif pemecahan, GeeTest V3 memiliki dua parameter penting:

  • gt — Pengidentifikasi per situs (seperti kunci situs). Ini statis — tidak berubah antar sesi.
  • challenge — Token per sesi. Ini dinamis — berubah setiap kali dan kedaluwarsa dalam waktu sekitar 60-120 detik.

Parameter challenge dinamis ini adalah perbedaan utama dari jenis CAPTCHA lainnya. Setiap alur kerja yang memecahkan GeeTest V3 memerlukan langkah tambahan untuk mengambil tantangan baru sebelum mengirimkannya ke CapSolver.

Format Solusi: Tidak seperti reCAPTCHA atau Turnstile yang mengembalikan satu token, GeeTest V3 mengembalikan tiga nilai terpisah:

  • challenge — String tantangan yang dipecahkan
  • validate — Hash validasi
  • seccode — Kode keamanan

Ini dikirim sebagai tiga bidang formulir: geetest_challenge, geetest_validate, dan geetest_seccode.

GeeTest V3 vs V4: GeeTest V4 menggunakan struktur API yang berbeda (captcha_id alih-alih gt, tanpa pengambilan challenge terpisah). Panduan ini secara khusus mencakup V3. Jika Anda melihat captcha_id di kode sumber halaman, Anda berurusan dengan V4.


Prasyarat

Sebelum Anda mulai, pastikan Anda memiliki yang berikut:

  1. Instans n8n — Dihost 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 pemecahan GeeTest V3 mengonsumsi kredit berdasarkan penggunaan.


Menyiapkan CapSolver di n8n

CapSolver tersedia sebagai integrasi resmi di n8n — tidak perlu 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

Buka instans n8n Anda dan navigasikan ke Settings -> Credentials. Anda akan melihat semua kredensial yang dikonfigurasi di sini.

Halaman kredensial n8n yang menampilkan 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 pengujian koneksi berhasil

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

Sekarang Anda siap untuk membangun alur kerja pemecahan GeeTest V3 Anda!


Cara Mengidentifikasi Parameter GeeTest V3

Sebelum Anda dapat menyelesaikan tantangan GeeTest V3, Anda perlu menemukan tiga hal: parameter gt, titik akhir API tantangan, dan memahami bagaimana nilai challenge diambil secara dinamis.

Metode 1: Tab Jaringan Alat Pengembang

  1. Buka Alat Pengembang (F12) -> tab Jaringan
  2. Picu tantangan GeeTest di halaman
  3. Cari permintaan yang berisi gt= di URL atau respons yang berisi bidang "gt" dan "challenge"
  4. Pola titik akhir umum:
    • /api/geetest/register
    • /gt/register-slide
    • /captcha?gt=...
  5. Respons biasanya terlihat seperti ini:
json Copy
{
  "gt": "81dc9bdb52d04dc20036dbd8313ed055",
  "challenge": "4a8a08f09d37b73795649038408b5f33ab",
  "success": 1,
  "new_captcha": true
}

Memahami Tantangan Dinamis

Ini adalah konsep terpenting untuk otomatisasi GeeTest V3:

  • Nilai gt statis per situs — tetap sama di semua sesi
  • Nilai challenge dinamis — berubah setiap kali dan kedaluwarsa dalam ~60-120 detik
  • Anda harus mengambil challenge baru segera sebelum mengirim permintaan pemecahan ke CapSolver
  • Titik akhir API tantangan bersifat spesifik situs (misalnya, https://example.com/api/geetest/register)

Ini berarti setiap alur kerja GeeTest V3 memerlukan node Permintaan HTTP tambahan sebelum node CapSolver untuk mengambil tantangan baru. Ini adalah perbedaan struktural utama dari alur kerja reCAPTCHA atau Turnstile.

Tip: Tambahkan ?t={{ Date.now() }} ke URL API tantangan sebagai parameter anti-cache untuk memastikan Anda selalu mendapatkan tantangan baru.

Untuk panduan terperinci tentang cara mengidentifikasi parameter captcha, lihat dokumentasi resmi CapSolver.


Alur Kerja: API Pemecahan GeeTest V3

Alur kerja ini membuat titik akhir POST yang menerima parameter GeeTest V3 dan mengembalikan tantangan yang dipecahkan. Tidak seperti pemecah reCAPTCHA atau Turnstile, pemanggil harus menyediakan nilai challenge (yang baru diambil) bersama dengan gt dan websiteURL.

Alur kerja pemecahan GeeTest V3 di n8n

Cara Kerjanya

Alur kerja terdiri dari empat node:

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

Konfigurasi Node

1. Node Webhook

Pengaturan Nilai
Metode HTTP POST
Jalur solver-geetest-v3
Respons Response Node

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

2. Node CapSolver GeeTest V3

Parameter Nilai Deskripsi
Operasi GeeTest V3 Harus diatur ke GeeTest V3
Tipe GeeTestTaskProxyLess Satu-satunya opsi yang tersedia — varian tanpa proxy
URL Situs Web ={{ $json.body.websiteURL }} URL halaman dengan tantangan GeeTest
GT ={{ $json.body.gt }} Pengidentifikasi GeeTest per situs
Tantangan ={{ $json.body.challenge }} Tantangan dinamis per sesi (harus baru)
Subdomain Server API GeeTest (Opsional) Server API GeeTest kustom jika situs menggunakannya

Juga pilih kredensial CapSolver Anda di node.

3. Node Kesalahan CapSolver? (IF)

Pengaturan Nilai
Kondisi ={{ $json.error }} tidak kosong
Cabang True Mengarahkan ke node Kesalahan Respons Webhook
Cabang False Mengarahkan ke node Berhasil Respons Webhook

Ini membuat jalur kesalahan eksplisit di kanvas. Node CapSolver berlanjut saat terjadi kesalahan (onError: continueRegularOutput), sehingga kegagalan tiba di sini sebagai { "error": "..." } alih-alih menghentikan alur kerja.

4. Node Respons Webhook

Cabang Berhasil (output False dari Kesalahan CapSolver?):

Pengaturan Nilai
Respons dengan JSON
Isi Respons ={{ JSON.stringify($json.data) }}

Uji Coba

Kirim permintaan POST ke titik akhir webhook Anda:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-geetest-v3 \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/login",
    "gt": "81dc9bdb52d04dc20036dbd8313ed055",
    "challenge": "4a8a08f09d37b73795649038408b5f33ab"
  }'

Respons yang diharapkan:

json Copy
{
  "taskId": "abc123...",
  "solution": {
    "challenge": "4a8a08f09d37b73795649038408b5f33",
    "validate": "68f0c05d0c8a8b2b1e2f3a4b5c6d7e8f",
    "seccode": "68f0c05d0c8a8b2b1e2f3a4b5c6d7e8f|jordan"
  },
  "status": "ready"
}

Penting: challenge dalam isi permintaan harus baru diambil. Jika Anda mengirim tantangan yang kedaluwarsa, CapSolver tidak akan dapat menyelesaikannya. Tantangan biasanya kedaluwarsa dalam 60-120 detik.

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 V3 Scraping — Price & Product Details — CapSolver + Schedule + Webhook",
  "nodes": [
    {
      "parameters": {
        "content": "## Scraping GeeTest V3 — Pemantau Harga & Produk — CapSolver + Jadwal + Webhook\n\n**Untuk siapa:** Tim yang memantau harga atau data produk di situs yang dilindungi GeeTest V3.\n\n**Apa yang dilakukannya:** Memecahkan GeeTest V3, mengambil halaman produk, mengekstrak harga & nama melalui pemilih CSS, membandingkan dengan nilai yang disimpan, dan memperingatkan tentang perubahan.\n\n**Cara kerjanya:**\n1. Penjadwal (setiap 6 jam) atau Webhook memicu alur\n2. CapSolver memecahkan tantangan GeeTest V3\n3. Permintaan HTTP mengambil halaman produk dengan token yang dipecahkan\n4. Node HTML mengekstrak harga dan nama produk\n5. Node kode membandingkan harga saat ini dengan yang disimpan → memperingatkan tentang perubahan\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 output Build Alert ke saluran notifikasi Anda",
        "height": 560,
        "width": 460,
        "color": 1
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1220,
        -380
      ],
      "id": "sticky-blog-main-1773678228108-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": 2200,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -740,
        -280
      ],
      "id": "sticky-blog-section-1773678228108-2",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "### Jalur Webhook\nPemicu sesuai permintaan — logika yang sama, mengembalikan hasil sebagai respons JSON.",
        "height": 480,
        "width": 2200,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -740,
        140
      ],
      "id": "sticky-blog-section-1773678228108-3",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -700,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888801",
      "name": "Every 6 Hours"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888802",
      "name": "Fetch GeeTest Challenge"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888803",
      "name": "Solve GeeTest V3",
      "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"
            },
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "88888888-8888-8888-8888-888888888804",
      "name": "Fetch Product Page"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "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": "88888888-8888-8888-8888-888888888805",
      "name": "Extract Data"
    },
    {
      "parameters": {
        "jsCode": "// Get current and previous price from workflow static data\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || \'Product\';\n\n// Parse numeric values for comparison\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// Update stored price\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": "88888888-8888-8888-8888-888888888806",
      "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": "88888888-8888-8888-8888-888888888807",
      "name": "Data Changed?"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-001",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $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": "88888888-8888-8888-8888-888888888808",
      "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": "88888888-8888-8888-8888-888888888809",
      "name": "No Change"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "price-monitor-geetest-v3",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -700,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888810",
      "name": "Webhook Trigger",
      "webhookId": "88888888-aaaa-bbbb-cccc-888888888810",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888811",
      "name": "Fetch GeeTest Challenge [Webhook]"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888812",
      "name": "Solve GeeTest V3 [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"
            },
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3 [Webhook]\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888813",
      "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": "88888888-8888-8888-8888-888888888814",
      "name": "Extract Data [Webhook]"
    },
    {
      "parameters": {
        "jsCode": "// Get current and previous price from workflow static data\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || \'Product\';\n\n// Parse numeric values for comparison\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// Update stored price\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": "88888888-8888-8888-8888-888888888815",
      "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": "88888888-8888-8888-8888-888888888816",
      "name": "Data Changed? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-004",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $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": "88888888-8888-8888-8888-888888888817",
      "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": "88888888-8888-8888-8888-888888888818",
      "name": "No Change [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1712,
        420
      ],
      "id": "88888888-8888-8888-8888-888888888819",
      "name": "Respond to Webhook [Webhook]"
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "Fetch GeeTest Challenge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3": {
      "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": "Fetch GeeTest Challenge [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge [Webhook]": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3 [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3 [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 — Pecahkan GeeTest V3 & Kirim Kredensial

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

Cara Kerjanya

Alur kerja ini terdiri dari lima node:

  1. Webhook — Menerima permintaan POST masuk yang memicu otomatisasi login
  2. Ambil Tantangan GeeTest — Melakukan permintaan HTTP ke situs target untuk mengambil nilai challenge baru
  3. Pecahkan GeeTest V3 — Mengirim gt, challenge, dan websiteURL ke CapSolver
  4. Kirim Formulir Login — Melakukan permintaan HTTP POST ke situs target, yang berisi kredensial dan token GeeTest V3 yang dipecahkan
  5. Respons Webhook — Mengembalikan hasil login

Konfigurasi Node

1. Node Webhook

Pengaturan Nilai
Metode HTTP POST
Jalur login-geetest-v3
Respons Response Node

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

2. Ambil Tantangan GeeTest (Permintaan HTTP)

Pengaturan Nilai
URL https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}
Opsi Full Response = false

Ini akan mengembalikan respons JSON yang berisi nilai gt dan challenge.

3. Pecahkan GeeTest V3 (CapSolver)

Parameter Nilai
Operasi GeeTest V3
URL Situs Web https://YOUR-TARGET-SITE.com/login
GT ={{ $json.gt }}
Tantangan ={{ $json.challenge }}

Juga pilih kredensial CapSolver Anda.

4. Kirim Formulir Login (Permintaan HTTP)

Pengaturan Nilai
Metode POST
URL https://YOUR-TARGET-SITE.com/login
Tipe Konten form-urlencoded
Parameter Isi username=YOUR_USERNAME, password=YOUR_PASSWORD, geetest_challenge={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}, geetest_validate={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}, geetest_seccode={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}

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

5. Respons Webhook (Berhasil/Gagal)

Pengaturan Nilai
Respons dengan JSON
Isi Respons ={{ JSON.stringify($json) }}

Uji Coba

Kirim permintaan POST ke titik akhir webhook Anda:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/login-geetest-v3 \
  -H "Content-Type: application/json" \
  -d ''

Respons yang diharapkan (berhasil):

json Copy
{
  "status": "success",
  "message": "Login successful",
  "solution": {
    "challenge": "...",
    "validate": "...",
    "seccode": "..."
  }
}

Respons 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
json Copy
{
  "name": "Account Login Automation — Solve GeeTest V3 & Submit Credentials",
  "nodes": [
    {
      "parameters": {
        "content": "## Otomatisasi Login Akun — Pecahkan GeeTest V3 & Kirim Kredensial\n\n**Untuk siapa:** Tim yang perlu mengotomatiskan login ke akun yang dilindungi GeeTest V3.\n\n**Apa yang dilakukannya:** Mengambil tantangan GeeTest V3, memecahkannya dengan CapSolver, lalu mengirimkan formulir login dengan token yang dipecahkan dan kredensial pengguna.\n\n**Cara kerjanya:**\n1. Webhook memicu alur\n2. Permintaan HTTP mengambil tantangan GeeTest V3 baru\n3. CapSolver memecahkan tantangan\n4. Permintaan HTTP mengirimkan formulir login, yang berisi token GeeTest V3 yang dipecahkan dan kredensial pengguna\n5. Webhook merespons dengan 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": [
        -1020,
        -280
      ],
      "id": "sticky-login-main-1773678228108-1",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "login-geetest-v3",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -700,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999901",
      "name": "Webhook Trigger",
      "webhookId": "99999999-aaaa-bbbb-cccc-999999999901",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "url": "https://YOUR-TARGET-SITE.com/api/geetest/register?t={{ Date.now() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -400,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999902",
      "name": "Fetch GeeTest Challenge"
    },
    {
      "parameters": {
        "operation": "GeeTest V3",
        "websiteURL": "https://YOUR-TARGET-SITE.com/login",
        "gt": "={{ $json.gt }}",
        "challenge": "={{ $json.challenge }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999903",
      "name": "Solve GeeTest V3",
      "credentials": {
        "capSolverApi": {
          "id": "YOUR_CREDENTIAL_ID",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://YOUR-TARGET-SITE.com/login",
        "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": "YOUR_USERNAME"
            },
            {
              "name": "password",
              "value": "YOUR_PASSWORD"
            },
            {
              "name": "geetest_challenge",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.challenge }}"
            },
            {
              "name": "geetest_validate",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.validate }}"
            },
            {
              "name": "geetest_seccode",
              "value": "={{ $(\'Solve GeeTest V3\').item.json.data.solution.seccode }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": false
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999904",
      "name": "Submit Login Form"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        512,
        0
      ],
      "id": "99999999-9999-9999-9999-999999999905",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Fetch GeeTest Challenge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch GeeTest Challenge": {
      "main": [
        [
          {
            "node": "Solve GeeTest V3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve GeeTest V3": {
      "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 V3 Tidak Ditemukan"

Kesalahan ini berarti akun atau paket CapSolver Anda tidak menyertakan akses GeeTest V3. Harap periksa dasbor CapSolver Anda untuk memverifikasi apakah paket Anda menyertakan layanan ini.

"Tantangan Kedaluwarsa" atau "Tantangan Tidak Valid"

Nilai challenge GeeTest V3 bersifat dinamis dan kedaluwarsa dengan cepat (biasanya dalam 60-120 detik). Anda harus mengambil challenge baru segera sebelum mengirim permintaan pemecahan ke CapSolver. Pastikan alur kerja Anda mengambil challenge terbaru sebelum setiap upaya pemecahan.

"URL Situs Web Tidak Valid" atau "Parameter GT Tidak Valid"

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

Login Gagal, Meskipun GeeTest V3 Telah Dipecahkan

Jika GeeTest V3 berhasil dipecahkan, tetapi login masih gagal, mungkin ada masalah dengan:

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

"Kredensial CapSolver Tidak Valid"

Kesalahan ini menunjukkan bahwa kunci API CapSolver Anda yang dikonfigurasi di n8n salah atau telah kedaluwarsa. Harap periksa dasbor CapSolver Anda dan perbarui kredensial di n8n.


Praktik Terbaik

  1. Selalu ambil tantangan baru: Sebelum setiap upaya pemecahan GeeTest V3, selalu lakukan permintaan HTTP ke situs target untuk mengambil nilai challenge terbaru. Tantangan kedaluwarsa dengan cepat.
  2. Pertahankan sesi: Jika situs target menggunakan sesi atau cookie, pastikan Anda mempertahankan sesi yang sama antara pengambilan tantangan dan pengiriman formulir. Di n8n, Anda dapat menggunakan node permintaan HTTP untuk menangani cookie.
  3. Validasi parameter: Periksa kembali bahwa parameter gt, websiteURL, dan challenge sudah benar. Ini adalah kunci keberhasilan pemecahan GeeTest V3.
  4. Tangani kesalahan: Sertakan logika penanganan kesalahan dalam alur kerja Anda untuk menangani kegagalan pemecahan atau login dengan anggun. Ini mungkin termasuk mekanisme coba lagi atau notifikasi.
  5. Gunakan agen pengguna yang sesuai: Atur string agen pengguna browser umum di semua permintaan HTTP Anda untuk menghindari diblokir oleh situs.
  6. Uji dan ulangi: Implementasi GeeTest V3 dapat bervariasi dari satu situs ke situs lainnya. Mulailah dari yang kecil, uji alur kerja Anda, dan ulangi sesuai kebutuhan untuk memastikan alur kerja berfungsi dengan andal pada target spesifik Anda.
  7. Tidak perlu proxy: Tidak seperti beberapa jenis captcha lainnya, pemecahan GeeTest V3 umumnya tidak memerlukan proxy. CapSolver menangani persyaratan proxy secara internal.

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

Spanduk kode bonus CapSolver

Kesimpulan

Anda telah belajar cara membangun API pemecahan GeeTest V3 dan alur kerja otomatisasi login akun menggunakan n8n dan CapSolver.

Ringkasan:

  • Cara kerja GeeTest V3 — Ini menggunakan teka-teki interaktif dan bergantung pada parameter gt statis dan parameter challenge dinamis.
  • Cara mengidentifikasi parameter GeeTest V3 — Gunakan tab jaringan alat pengembang untuk menemukan gt dan titik akhir API tantangan.
  • Pentingnya tantangan dinamis — Nilai challenge baru harus diambil sebelum setiap upaya pemecahan.
  • Titik akhir API pemecahan — Menerima parameter GeeTest V3 dan mengembalikan tantangan yang dipecahkan.
  • Alur kerja otomatisasi login akun — Memecahkan GeeTest V3 sebelum mengirimkan kredensial.
  • Tips pemecahan masalah — Tangani kesalahan umum seperti tantangan kedaluwarsa, parameter tidak valid, dan login gagal.
  • Praktik terbaik — Selalu ambil tantangan baru, pertahankan sesi, validasi parameter, dan tangani kesalahan.

Kompleksitas utama GeeTest V3 terletak pada parameter challenge dinamis dan format solusi tiga bagiannya. Dengan menambahkan node permintaan HTTP sebelum node CapSolver untuk mengambil tantangan baru, Anda dapat secara efektif mengotomatiskan pemecahan GeeTest V3. Anda kemudian dapat dengan mulus mengintegrasikan token yang dipecahkan ini ke dalam alur kerja login atau scraping Anda.

Tip: Alur kerja ini menggunakan pemicu Webhook, tetapi Anda dapat menukar node pemicu dengan pemicu n8n lainnya — manual, peristiwa aplikasi, pengiriman formulir, dll. Setelah GeeTest V3 dipecahkan, gunakan node bawaan n8n untuk menyimpan hasil ke Google Sheets, database, penyimpanan cloud, atau mengirim peringatan melalui Telegram/Slack/Email.


Pertanyaan yang Sering Diajukan

Apa itu GeeTest V3?

GeeTest V3 adalah sistem CAPTCHA perilaku yang memverifikasi pengguna melalui teka-teki interaktif (seperti teka-teki geser, klik ikon, dan pencocokan kata). Ini menggunakan parameter gt statis dan parameter challenge dinamis yang kedaluwarsa dengan cepat.

Bagaimana GeeTest V3 berbeda dari GeeTest V4?

GeeTest V4 menggunakan struktur API yang berbeda, seperti captcha_id alih-alih gt, dan tidak memerlukan pengambilan challenge terpisah. Panduan ini secara khusus berfokus pada GeeTest V3. Jika Anda melihat captcha_id di kode sumber halaman, Anda berurusan dengan V4.

Berapa biaya untuk memecahkan tantangan GeeTest V3?

Harga bervariasi berdasarkan penggunaan. Harap periksa halaman harga CapSolver untuk harga GeeTest V3 saat ini. Tugas pemecahan GeeTest V3 umumnya lebih mahal daripada pengenalan gambar-ke-teks sederhana, tetapi lebih murah daripada beberapa jenis captcha kompleks lainnya.

Berapa lama waktu yang dibutuhkan untuk memecahkan tantangan GeeTest V3?

Tugas pemecahan GeeTest V3 biasanya membutuhkan waktu 10-30 detik, tergantung pada kompleksitas tantangan dan beban server CapSolver. Tidak seperti ImageToTextTask, pemecahan GeeTest V3 melibatkan pembuatan dan polling tugas, jadi tidak instan.

Apakah saya memerlukan proxy untuk GeeTest V3?

Layanan pemecahan GeeTest V3 CapSolver umumnya tidak mengharuskan Anda untuk menyediakan proxy. CapSolver menangani persyaratan proxy secara internal. Anda hanya perlu menyediakan parameter websiteURL, gt, dan challenge.

Mengapa nilai challenge saya selalu kedaluwarsa?

Nilai challenge GeeTest V3 bersifat dinamis dan kedaluwarsa dengan cepat (biasanya dalam 60-120 detik). Anda harus mengambil challenge baru segera sebelum mengirim permintaan pemecahan ke CapSolver. Pastikan alur kerja Anda menyertakan node permintaan HTTP untuk mengambil challenge terbaru sebelum setiap upaya pemecahan.

Bagaimana jika GeeTest V3 berhasil dipecahkan tetapi login masih gagal?

Jika GeeTest V3 berhasil dipecahkan tetapi login masih gagal, periksa hal-hal berikut:

  • Kredensial: Pastikan Anda telah mengirimkan nama pengguna dan kata sandi yang benar.
  • Sesi/Cookie: Pastikan Anda mempertahankan sesi dan cookie yang sama antara pengambilan tantangan dan pengiriman formulir login.
  • Bidang formulir lainnya: Periksa formulir HTML untuk melihat apakah ada bidang tersembunyi atau token CSRF lain yang diperlukan.
  • Agen pengguna: Coba atur string agen pengguna browser umum di permintaan HTTP Anda.

Bisakah saya menggunakan alur kerja ini 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 16, 2026

Cara Menyelesaikan Konversi Gambar ke Teks Menggunakan CapSolver dan n8n

Konversi gambar ke teks, pemecah captcha, captcha OCR, capsolver, n8n, alur kerja n8n, otomatisasi, API OCR, otomatisasi captcha, gambar base64, pengenalan gambar, OCR AI, webhook, alur kerja terjadwal, otomatisasi formulir, bypass captcha, penanganan sesi, captcha tanpa proxy, OCR instan, pengenalan teks

Aloísio Vítor
Aloísio Vítor