Cara Memperbaiki ERROR_KEY_DOES_NOT_EXIST dan Wrong User Key

error_key_does_not_exist - How to Fix ERROR_KEY_DOES_NOT_EXIST and Wrong User Key

Jawaban singkat: ERROR_KEY_DOES_NOT_EXIST berarti kunci API dalam permintaan Anda bukan kunci yang dikenali pemecah. Tidak ada yang salah dengan CAPTCHA, sitekey, atau URL halamannya. Permintaan itu bahkan tidak pernah sampai ke tahap dipecahkan. Panduan ini membahas tiga hal yang benar-benar menyebabkannya, perbaikannya di keempat SDK, dan mengapa Anda terkadang mendapat ERROR_WRONG_USER_KEY sebagai gantinya.

Apa arti ERROR_KEY_DOES_NOT_EXIST

Ini kembali dari /in.php, pada saat pengiriman, sebelum pemecahan apa pun dimulai. API membandingkan key dalam permintaan Anda dengan kunci yang dikonfigurasi untuk diterima, dan tidak menemukan kecocokan.

# Submitting with a key the app does not know:
curl "http://127.0.0.1:8080/in.php?key=WRONG&method=userrecaptcha&googlekey=YOUR_SITEKEY&pageurl=https://example.com"

ERROR_KEY_DOES_NOT_EXIST

Karena ia dikembalikan pada saat pengiriman, Anda tidak pernah mendapat captcha ID, sehingga tidak ada yang bisa di-polling di /res.php. Jika kode Anda terus berulang dan menunggu, ia menunggu ID yang tidak pernah diterbitkan.

Satu hal yang membingungkan orang yang datang dari layanan hosted: CapSkip adalah API yang kompatibel dengan 2captcha dan berjalan di komputer Anda sendiri, jadi kuncinya bukan kredensial akun dan tidak terkait dengan saldo. Ini adalah pemeriksaan akses lokal pada server API. Hal itu mengubah arti dari “kunci salah” itu sendiri, dan itulah sebabnya perbaikan di bawah ini singkat.

Pertama, periksa apakah validasi kunci memang aktif

CapSkip hadir dengan validasi key yang bersifat opsional. Saat dimatikan, string apa pun yang tidak kosong akan bekerja dan Anda tidak akan pernah melihat error ini. Saat dinyalakan, key harus cocok persis.

Buka aplikasi CapSkip, masuk ke Settings, dan lihat bagian server API. Dua hal penting di sana: apakah validasi kunci diaktifkan, dan string kunci yang persis jika memang aktif. Salin kunci dari layar itu alih-alih mengetiknya ulang. Sebagian besar laporan tentang ERROR_KEY_DOES_NOT_EXIST berakhir di sini.

Selagi Anda berada di Settings, periksa juga port-nya. Port yang salah menghasilkan error koneksi, bukan error yang ini, tetapi ada baiknya memeriksa keduanya sekaligus. panduan penyiapan membahas seluruh layar tersebut.

Meneruskan kunci dengan benar di setiap SDK

Keempat SDK menggunakan nama opsi yang sama, dan keempatnya membaca variabel lingkungan yang sama, CAPSKIP_API_KEY. Setel secara eksplisit saat Anda melakukan debugging agar tidak ada keraguan tentang apa yang dikirim.

# pip install capskip
from capskip import CapSkip

# apiKey defaults to "capskip", which only works when
# key validation is turned off in the app.
solver = CapSkip(
    apiKey="YOUR_API_KEY",
    host="127.0.0.1",
    port=8080,
)
// npm install capskip
const { CapSkip } = require('capskip');

const solver = new CapSkip({
  apiKey: 'YOUR_API_KEY',
  host: '127.0.0.1',
  port: 8080,
});
// composer require capskip/capskip
use CapSkip\CapSkip;

$solver = new CapSkip([
    'apiKey' => 'YOUR_API_KEY',
    'host'   => '127.0.0.1',
    'port'   => 8080,
]);
// dotnet add package CapSkip
using CapSkip;

var solver = new CapSkipClient(
    apiKey: "YOUR_API_KEY",
    host:   "127.0.0.1",
    port:   8080);

Signature lengkap setiap metode ada di halaman SDK pemecahan CAPTCHA halaman.

Tiga penyebab yang layak diperiksa

1. Kunci tidak pernah meninggalkan kode Anda

Anda menyetel CAPSKIP_API_KEY dalam .env file, tetapi tidak ada yang memuat .env saat runtime. Atau Anda meng-export-nya di satu shell lalu menjalankan skripnya di shell lain. SDK jatuh ke nilai bawaannya, nilai bawaan itu bukan key Anda, dan Anda mendapat error tersebut.

Cetak apa yang akan Anda kirim. Satu baris, dan pertanyaannya terjawab:

import os

# Never print the whole key in a shared log.
key = os.environ.get("CAPSKIP_API_KEY", "<unset>")
print(len(key), repr(key[:4]))

Mencetak panjangnya menangkap kasus yang disembunyikan nilai bertopeng: key yang ada tetapi kosong, atau yang membawa newline di akhir dari cat key.txt.

2. Kuncinya benar tetapi rusak di dalam URL

Ini hanya menimpa orang yang memanggil API mentah. Jika key Anda mengandung karakter yang punya makna dalam query string, karakter itu harus di-percent-encode. Sebuah + menjadi spasi, sedangkan & mengakhiri parameter lebih awal, dan # memotong semua yang ada setelahnya.

# Wrong: curl sends this raw and the key gets cut at the &
curl "http://127.0.0.1:8080/in.php?key=ab&cd&method=userrecaptcha"

# Right: let curl encode the parameter for you
curl -G http://127.0.0.1:8080/in.php \
  --data-urlencode "key=ab&cd" \
  --data-urlencode "method=userrecaptcha"

Atau kirim parameter sebagai body formulir lewat POST, yang menghindari seluruh kelas masalah ini. MDN punya referensi singkat tentang pengodean persen jika Anda ingin daftar karakternya secara persis. SDK melakukan encoding untuk Anda, jadi penyebab ini hilang begitu Anda beralih ke SDK.

3. Anda mengubah kuncinya dan sesuatu masih memegang kunci yang lama

Sebuah worker yang berjalan lama, kontainer Docker yang dibangun dengan kuncinya tertanam di dalam, sebuah secret CI, ekstensi browser yang dikonfigurasi terpisah. Aplikasi memiliki kunci baru, satu pemanggil masih memakai yang lama, dan hanya pemanggil itu yang gagal. Jika sebagian permintaan Anda berhasil dan sebagian lagi tidak, hampir selalu inilah penyebabnya.

ERROR_KEY_DOES_NOT_EXIST vs ERROR_WRONG_USER_KEY

Dua string error, satu keluarga yang sama. Perlakukan keduanya sebagai satu masalah dengan dua bentuk.

KesalahanApa yang ditunjuknyaHal pertama yang harus diperiksa
ERROR_KEY_DOES_NOT_EXISTKunci terbaca dan tidak cocok dengan kunci mana pun yang dikenalString kunci itu sendiri, disalin dari Settings
ERROR_WRONG_USER_KEYValidasi kunci aktif dan kunci yang dikirim salahApakah validasi memang aktif, lalu string

Di SDK, keduanya muncul sebagai ApiException, jadi tangkap satu tipe itu dan baca pesannya alih-alih bercabang berdasarkan stringnya.

from capskip import CapSkip, ApiException, NetworkException

solver = CapSkip(apiKey="YOUR_API_KEY")

try:
    result = solver.recaptcha(
        sitekey="YOUR_SITEKEY",
        url="https://example.com/page-with-recaptcha",
    )
except ApiException as e:
    # Key problems land here, with the raw code in the message.
    print("api rejected the request:", e)
except NetworkException as e:
    # The app is not running, or the port is wrong.
    print("cannot reach capskip:", e)

Kode error di sekitarnya

Jika key-nya sudah benar, beberapa kegagalan berikutnya saat pengiriman terlihat serupa tetapi artinya sama sekali berbeda.

KodePenyebabPerbaiki
ERROR_WRONG_METHODThe method parameter hilang atau salah ejaGunakan userrecaptcha, turnstile, geetest, post atau base64
ERROR_BAD_PARAMETERSParameter wajib untuk metode tersebut tidak adaPeriksa daftar parameter metode tersebut sebelum mengirim ulang
ERROR_GOOGLEKEYsitekey ditolakBaca ulang dari halaman langsung, bukan dari sumber yang di-cache
ERROR_PAGEURLURL halaman hilang atau formatnya salahKirim URL lengkap termasuk skemanya
Connection refusedAplikasi tidak berjalan atau portnya berbedaJalankan CapSkip, pastikan API server aktif

Setiap kode yang dapat dikembalikan API tercantum di dokumentasi API.

Pertanyaan yang sering diajukan

Apakah saya benar-benar butuh kunci API?

Hanya jika validasi key diaktifkan di aplikasi. Jika dimatikan, string apa pun yang tidak kosong akan diterima dan nilai bawaan SDK berupa capskip berfungsi dengan baik. Kuncinya adalah pemeriksaan akses lokal, bukan sebuah akun.

Bisakah ERROR_KEY_DOES_NOT_EXIST berarti kredit saya habis?

Tidak. Tidak ada saldo yang bisa habis. Pemecahan terjadi di komputer Anda sendiri, jadi error key selalu berarti ketidakcocokan antara apa yang Anda kirim dan apa yang diharapkan aplikasi.

Apakah kunci juga disertakan dalam permintaan polling?

Ya. /res.php menerima key parameter yang sama dengan /in.php. Jika Anda hanya memperbaiki panggilan pengiriman, polling masih bisa gagal pada nilai yang lama.

Mengapa kunci 2captcha lama saya tidak berfungsi di sini?

Karena key itu diterbitkan oleh layanan mereka dan tidak berarti apa-apa bagi pemecah yang berjalan di komputer Anda. Bentuk API-nya sama, kredensialnya tidak. Arahkan client Anda ke 127.0.0.1 dan gunakan kunci dari CapSkip Settings.

Ringkasan

Periksa apakah validasi kunci aktif, salin kunci dari Settings alih-alih mengetiknya ulang, pastikan nilainya benar-benar sampai ke proses Anda, dan enkode dengan benar jika Anda menyusun URL secara manual. Itu praktis mencakup setiap kemunculan error_key_does_not_exist.

Seluruh kelas masalah ini mengecil ketika solver-nya adalah pemecah captcha lokal yang Anda kendalikan: tidak ada akun, tidak ada saldo, tidak ada kredensial yang berotasi, dan satu key yang bisa Anda baca langsung di layar di depan Anda.