Dokumentasi API
Referensi untuk endpoint yang tersedia, format permintaan, parameter, dan contoh respons untuk mengintegrasikan API ke dalam aplikasi Anda.
Dokumentasi ini ditujukan untuk pengembang yang ingin mengintegrasikan CapSkip langsung ke skrip, aplikasi, atau sistem otomatisasi mereka sendiri. Pengguna perangkat lunak pihak ketiga sebaiknya mengikuti bagian Tutorials untuk instruksi penyiapan.
CapSkip mengemulasi API layanan pemecahan CAPTCHA yang banyak dipakai, sehingga dapat terhubung ke perangkat lunak pihak ketiga yang kompatibel tanpa memerlukan modifikasi apa pun. Integrasi biasanya hanya memerlukan CapSkip dalam keadaan berjalan.
Dokumentasi ini menjelaskan cara mengirimkan permintaan dan mengambil hasil. CapSkip mendukung beberapa keluarga API, termasuk API bergaya 2Captcha (in.php / res.php), API JSON createTask / getTaskResult yang dipakai AntiCaptcha, CapMonster, dan CapSolver, serta API REST DeathByCaptcha. Layanan dalam keluarga yang sama berbagi endpoint, format permintaan, dan format respons yang sama. Hanya base URL (host dan port) yang berbeda untuk setiap layanan.
| Keluarga API | Layanan |
|---|---|
| gaya 2captcha | 2captcha.com, rucaptcha.com, solvecaptcha.com, captchas.io |
| JSON (createTask / getTaskResult) | anti-captcha.com, capmonster.cloud, capsolver.com |
| DeathByCaptcha | deathbycaptcha.com |
CAPTCHA Gambar
CAPTCHA biasa adalah gambar berisi teks terdistorsi tetapi masih terbaca manusia. Untuk memecahkannya, pengguna harus mengetik teks yang tampak pada gambar.
Untuk memecahkan CAPTCHA biasa, kirim gambar melalui permintaan HTTP POST ke endpoint API. Kirim permintaan langsung ke instance CapSkip Anda menggunakan alamat dan port lokal yang telah dikonfigurasi, misalnya: http://127.0.0.1:PORT/in.php
CapSkip menerima gambar dalam format multipart/form-data atau berkode Base64.
Contoh formulir multipart
<form method="post" action="http://127.0.0.1:PORT/in.php" enctype="multipart/form-data"> <input type="hidden" name="method" value="post"> Your key: <input type="text" name="key" value="YOUR_APIKEY"> The CAPTCHA file: <input type="file" name="file"> <input type="submit" value="Upload and get the ID"> </form>
YOUR_APIKEY mewakili API key Anda jika validasi API key diaktifkan di CapSkip. Jika validasi API key dinonaktifkan, nilai string apa pun akan diterima.
Contoh formulir Base64
<form method="post" action="http://127.0.0.1:PORT/in.php"> <input type="hidden" name="method" value="base64"> Your key: <input type="text" name="key" value="YOUR_APIKEY"> The CAPTCHA file body in base64 format: <textarea name="body">BASE64_FILE</textarea> <input type="submit" value="Upload and get the ID"> </form>
YOUR_APIKEY mewakili API key Anda jika validasi API key diaktifkan di CapSkip. Jika validasi API key dinonaktifkan, nilai string apa pun akan diterima.
BASE64_FILE adalah data gambar yang dienkode Base64.
Daftar Parameter Permintaan POST
| Parameter POST | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| method | String | Ya |
post – kirim gambar menggunakan multipart/form-data base64 – kirim gambar sebagai string berenkode Base64 |
| file | File | Ya* |
File gambar CAPTCHA. * Wajib saat method=post. |
| body | String | Ya* |
Data gambar CAPTCHA berenkode Base64. * Wajib saat method=base64. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa 1 – respons dikembalikan dalam format JSON |
Kirim CAPTCHA (unggah file multipart):
curl -X POST -F "key=YOUR_API_KEY" -F "method=post" -F "[email protected]" http://127.0.0.1:8080/in.php
Kirim CAPTCHA (dienkode base64):
curl -X POST -d "key=YOUR_API_KEY&method=base64&body=BASE64_IMAGE_DATA" http://127.0.0.1:8080/in.php
Setelah mengirim permintaan, jika semuanya benar, CapSkip akan mengembalikan ID CAPTCHA sebagai teks biasa: OK|12345
Jika json=1 digunakan, respons akan dikembalikan dalam format JSON:
{
"status":1,
"request":"12345"
}Tunggu 1 detik, lalu kirim permintaan HTTP GET ke endpoint hasil (/res.php) dengan ID CAPTCHA yang dikembalikan.
Jika CAPTCHA sudah terpecahkan, CapSkip akan mengembalikan hasilnya sebagai teks biasa: OK|TEXT
Jika json=1 ditentukan, responsnya akan berupa:
{
"status":1,
"request":"TEXT"
}Jika CAPTCHA belum terpecahkan, CapSkip akan mengembalikan: CAPCHA_NOT_READY
Dalam kasus ini, tunggu 1 detik dan ulangi permintaan sampai hasil akhir diterima. Jika CapSkip mengembalikan body respons yang kosong, hasilnya sudah pernah diambil atau ID tersebut tidak ada. Setiap hasil hanya dapat dibaca satu kali.
Daftar parameter permintaan GET
| Parameter GET | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| action | String | Ya | get – ambil jawaban untuk CAPTCHA yang dikirimkan. |
| id | Integer | Ya |
ID CAPTCHA yang dikembalikan oleh in.php. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa 1 – respons dikembalikan dalam format JSON |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
reCAPTCHA V2
reCAPTCHA v2, yang juga dikenal sebagai reCAPTCHA “I’m not a robot”, adalah tipe CAPTCHA yang banyak digunakan dan tampak seperti berikut:
Untuk memecahkan reCAPTCHA v2, kirim googlekey dan pageurl parameter bersama dengan method=userrecaptcha dan kunci API CapSkip Anda.
Anda bisa mendapatkan googlekey menggunakan salah satu metode berikut:
Klik kanan pada widget reCAPTCHA dan pilih Periksa. Temukan URL yang diawali dengan:
www.google.com/recaptcha/api2/anchor
Salin nilai dari k parameter dari URL tersebut. Sebagai alternatif, temukan data-sitekey atribut di kode sumber halaman dan salin nilainya.

Setelah Anda memiliki site key, kirim permintaan HTTP GET atau POST ke http://127.0.0.1:PORT/in.php
Daftar Parameter Permintaan POST
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| method | String | Ya | userrecaptcha – menentukan permintaan reCAPTCHA v2. |
| googlekey | String | Ya | Nilai dari k atau data-sitekey parameter yang ditemukan di halaman target. |
| pageurl | String | Ya | URL lengkap halaman tempat reCAPTCHA berada. |
| enterprise | Integer Default: 0 | Tidak |
1 – menandakan reCAPTCHA Enterprise v2. 0 – reCAPTCHA v2 standar. |
| invisible | Integer Default: 0 | Tidak |
1 – menandakan Invisible reCAPTCHA. 0 – reCAPTCHA checkbox standar. |
| data-s | String | Tidak | Nilai dari data-s yang ditemukan pada halaman. Berlaku untuk Google Search dan layanan Google tertentu. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa. 1 – respons dikembalikan dalam format JSON. |
| proxy | String | Tidak | Alamat proxy. Format untuk autentikasi IP: IP:PORT (contoh: 123.123.123.123:3128). Format untuk autentikasi login/kata sandi: login:password@IP:PORT |
| proxytype | String | Tidak | Jenis proxy. Nilai yang didukung: HTTP, HTTPS, SOCKS5, SOCKS5H. Default: HTTP ketika proxy disediakan tetapi proxytype dihilangkan. |
Kirim reCAPTCHA v2 (Standard):
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com" http://127.0.0.1:8080/in.php
Kirim reCAPTCHA v2 (Invisible):
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&invisible=1" http://127.0.0.1:8080/in.php
Kirim Enterprise reCAPTCHA v2:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1" http://127.0.0.1:8080/in.php
Kirim Enterprise reCAPTCHA v2 (Invisible):
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1&invisible=1" http://127.0.0.1:8080/in.php
Jika permintaan berhasil, CapSkip akan mengembalikan ID CAPTCHA sebagai teks biasa: OK|12345
Jika json=1 digunakan, respons akan dikembalikan dalam format JSON:
{
"status":1,
"request":"12345"
}Jika permintaan gagal, CapSkip akan mengembalikan kode error.
Tunggu 15 hingga 20 detik, lalu kirim permintaan HTTP GET ke endpoint hasil untuk mengambil solusinya: http://127.0.0.1:PORT/res.php
Daftar parameter permintaan GET
| Parameter GET | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| action | String | Ya | get – ambil jawaban untuk CAPTCHA yang dikirimkan. |
| id | Integer | Ya |
ID CAPTCHA yang dikembalikan oleh in.php. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa 1 – respons dikembalikan dalam format JSON |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
Jika CAPTCHA telah dipecahkan, CapSkip akan merespons dalam teks biasa atau JSON dan mengembalikan token jawabannya. Token-nya akan terlihat seperti berikut:
03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB-50GQHPEBJUHNnhJyDzwRoRAkVzrf7UkV8wKCdTwrrWqiYDgbrzURfHc2ESsp020MicJTasSiXmNRgryt-gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3-egcplD1uLGh79wC34RF49Ui3eHwua4S9XHpH6YBe7gXzz6_mv-o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q
Jika CAPTCHA belum terpecahkan, CapSkip akan mengembalikan CAPCHA_NOT_READY. Dalam kasus ini, tunggu 5 detik dan ulangi permintaan. Jika CapSkip mengembalikan body respons yang kosong, hasilnya sudah pernah diambil atau ID tersebut tidak ada. Setiap hasil hanya dapat dibaca satu kali.
Temukan elemen dengan ID g-recaptcha-response dan buat terlihat dengan menghapus display: none gaya.

Harap diperhatikan: Dalam beberapa kasus, konten halaman dihasilkan secara dinamis, dan
g-recaptcha-responseelement may not appear in the static HTML source. In such situations, inspect the page structure using your browser’s developer tools to locate the dynamically generated element.
Sebagai alternatif, Anda dapat menggunakan JavaScript untuk mengatur nilai dari g-recaptcha-response kolom secara langsung:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN";Sebuah kolom input akan muncul di halaman. Tempelkan token jawaban ke kolom itu lalu kirim formulirnya.
reCAPTCHA V2 Callback
Dalam beberapa kasus, tidak ada tombol kirim dan sebagai gantinya digunakan fungsi callback. Fungsi callback dijalankan otomatis saat reCAPTCHA dipecahkan.
Daftar parameter permintaan POST dan GET tersedia di sini: Parameter permintaan POST dan GET reCAPTCHA V2
Fungsi callback biasanya didefinisikan di dalam data-callback atribut dari widget reCAPTCHA, misalnya:
data-callback="myCallbackFunction"
Dalam kasus lain, fungsi callback didefinisikan sebagai callback parameter dari grecaptcha.render() fungsi, misalnya:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});Cara lain untuk menemukan fungsi callback adalah membuka konsol JavaScript browser dan memeriksa objek konfigurasi reCAPTCHA:
___grecaptcha_cfg.clients[0].aa.l.callback
Perhatikan bahwa aa.l properti dapat bervariasi, dan mungkin ada beberapa client reCAPTCHA di halaman. Dalam kasus seperti itu, Anda juga harus memeriksa clients[1], clients[2], dan entri lain untuk menemukan objek konfigurasi yang benar.
Sebagai alternatif, Anda dapat menggunakan skrip berikut untuk mengekstrak parameter reCAPTCHA secara otomatis:
function findRecaptchaClients() {
if (typeof (___grecaptcha_cfg) !== 'undefined') {
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([_, value]) => value && typeof value === 'object');objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(([_, value]) => (
value && typeof value === 'object' && 'sitekey' in value && 'size' in value
));
if (typeof toplevel === 'object' && toplevel instanceof HTMLElement && toplevel['tagName'] === 'DIV'){
data.pageurl = toplevel.baseURI;
}
if (found) {
const [sublevelKey, sublevel] = found;data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
return [];
}Terakhir, panggil fungsi callback:
myCallbackFunction();
Atau sebagai alternatif:
___grecaptcha_cfg.clients[0].aa.l.callback();
Dalam beberapa kasus, fungsi callback memerlukan sebuah argumen. Pada sebagian besar situasi, Anda harus meneruskan token hasil pemecahan sebagai argumen itu. Contohnya:
myCallbackFunction('TOKEN');
reCAPTCHA V2 Invisible
reCAPTCHA v2 juga memiliki mode Invisible. Anda dapat melihat contohnya di sini:
https://www.google.com/recaptcha/api2/demo?invisible=true
Invisible reCAPTCHA tidak menampilkan kotak centang “I’m not a robot”. Sebaliknya, ia biasanya dilekatkan pada sebuah tombol atau dipicu secara otomatis saat halaman dimuat atau saat pengguna berinteraksi, misalnya mengklik tombol atau mengirimkan formulir.
Secara internal, widget Invisible reCAPTCHA dirender di dalam elemen <div> tersembunyi yang diposisikan di luar viewport yang terlihat, sehingga tidak tampak oleh pengguna.
Tergantung cookie dan skor risiko pengguna, reCAPTCHA bisa lolos otomatis tanpa menampilkan tantangan. Jika tidak, tantangan gambar standar akan muncul.
Pada sebagian besar kasus, setelah tantangan selesai, sebuah fungsi callback dijalankan. Lihat bagian callback di atas untuk detail lebih lanjut.
Daftar parameter permintaan POST dan GET tersedia di sini: Parameter permintaan POST dan GET reCAPTCHA V2
Cara Menentukan Apakah reCAPTCHA Bersifat Invisible?
Anda dapat mengenali Invisible reCAPTCHA melalui salah satu indikator berikut:
Checkbox “I’m not a robot” tidak terlihat, tetapi challenge muncul setelah interaksi pengguna.
URL iframe reCAPTCHA berisi parameter
size=invisible.Objek konfigurasi reCAPTCHA menyertakan
sizeproperti disetel keinvisible, misalnya:___grecaptcha_cfg.clients[0].aa.l.size === "invisible"
Saat memecahkan Invisible reCAPTCHA melalui API, sertakan parameter: invisible=1
Bagaimana Menangani Invisible reCAPTCHA di Browser?
Metode 1: Menggunakan JavaScript
Setel nilai dari g-recaptcha-response menjadi token yang dikembalikan CapSkip:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN";Setelah menyetel token, jalankan tindakan yang biasanya terjadi setelah verifikasi berhasil.
Dalam kebanyakan kasus, ini berarti mengirim sebuah formulir. Anda perlu mengenali formulir yang tepat melalui id, name, atau atribut lain, lalu picu pengirimannya. Berikut beberapa contohnya:
document.getElementById("recaptcha-demo-form").submit(); //by id "recaptcha-demo-form"
document.getElementsByName("myFormName")[0].submit(); //by element name "myFormName"
document.getElementsByClassName("example").submit(); //by class name "example"Dalam beberapa kasus, sebuah fungsi callback dijalankan otomatis ketika reCAPTCHA terpecahkan.
Fungsi callback biasanya didefinisikan di dalam data-callback atribut dari widget reCAPTCHA, misalnya:
data-callback="myCallbackFunction"
Dalam kasus lain, fungsi callback didefinisikan sebagai callback parameter dari grecaptcha.render() fungsi, misalnya:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});Yang perlu Anda lakukan hanyalah memanggil fungsi itu:
myCallbackFunction();
Metode 2: Mengubah HTML
Hapus <div> elemen yang berisi widget reCAPTCHA dari body halaman.
<div style="visibility: hidden; position: absolute; width:100%; top: -10000px; left: 0px; right: 0px; transition: visibility 0s linear 0.3s, opacity 0.3s linear; opacity: 0;"> <div style="width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 2000000000; background-color: #fff; opacity: 0.5; filter: alpha(opacity=50)"></div> <div style="margin: 0 auto; top: 0px; left: 0px; right: 0px; position: absolute; border: 1px solid #ccc; z-index: 2000000000; background-color: #fff; overflow: hidden;"> <iframe src="https://www.google.com/recaptcha/api2/bframe?hl=en&v=r20170213115309&k=6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs#zglq3yifgkmj" title="recaptcha challenge" style="width: 100%; height: 100%;" scrolling="no" name="zglq3yifgkmj" frameborder="0"></iframe> </div> </div>
Hapus seluruh blok reCAPTCHA dari halaman.
<div class="">
<!-- BEGIN: ReCAPTCHA implementation example. -->
<div
id="recaptcha-demo"
class="g-recaptcha"
data-sitekey="6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs"
data-callback="onSuccess"
data-bind="recaptcha-demo-submit"
>
<div
class="grecaptcha-badge"
style="width: 256px; height: 60px; transition: right 0.3s ease 0s; position: fixed; bottom: 14px; right: -186px; box-shadow: 0px 0px 5px gray;"
>
<div class="grecaptcha-logo">
<iframe
src="https://www.google.com/recaptcha/api2/anchor?k=6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs&co=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbTo0NDM.&hl=en&v=r20170213115309&size=invisible&cb=uror1hlow5a"
title="recaptcha widget"
scrolling="no"
name="undefined"
width="256"
height="60"
frameborder="0"
></iframe>
</div>
<div class="grecaptcha-error"></div>
<textarea
id="g-recaptcha-response"
name="g-recaptcha-response"
class="g-recaptcha-response"
style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; display: none; "
></textarea>
</div>
</div>
<script>
var onSuccess = function (response) {
var errorDivs = document.getElementsByClassName('recaptcha-error');
if (errorDivs.length) {
errorDivs[0].className = '';
}
var errorMsgs = document.getElementsByClassName('recaptcha-error-message');
if (errorMsgs.length) {
errorMsgs[0].parentNode.removeChild(errorMsgs[0]);
}
document.getElementById('recaptcha-demo-form').submit();
};
</script>
<!-- Optional noscript fallback. --><!-- END: ReCAPTCHA implementation example. -->
</div>Sisipkan kode berikut sebagai pengganti blok yang dihapus:
<input type="submit" /> <textarea name="g-recaptcha-response">%g-recaptcha-response%</textarea>
%g-recaptcha-response% mewakili token jawaban yang diterima dari CapSkip.
Setelah mengganti blok tersebut, tombol “Submit query” akan muncul. Klik tombol itu untuk mengirim formulir beserta g-recaptcha-response nilai dan semua data formulir lain yang diperlukan ke situs web.
reCAPTCHA V3
reCAPTCHA v3 adalah mekanisme CAPTCHA modern yang dikembangkan oleh Google. Ia tidak menampilkan tantangan yang terlihat dan tidak memerlukan interaksi pengguna. Sebagai gantinya, ia memberikan skor berdasarkan kemungkinan bahwa interaksi tersebut dilakukan manusia.
Secara teknis, reCAPTCHA v3 mirip dengan reCAPTCHA v2. Situs web menerima token dari API reCAPTCHA, yang kemudian dikirim dalam permintaan POST ke server target dan diverifikasi melalui API reCAPTCHA.
Perbedaan utamanya adalah reCAPTCHA v3 tidak menampilkan tantangan yang terlihat. Sebagai gantinya, ia mengembalikan penilaian yang memperkirakan apakah pengguna adalah manusia atau bot. Penilaian ini disebut score dan berkisar dari 0.0 hingga 1.0. Skor dikirim ke situs web, yang kemudian memutuskan cara menangani permintaan berdasarkan nilai tersebut.
Ada juga parameter tambahan bernama action, yang memungkinkan situs web membedakan antara berbagai interaksi pengguna. Setelah memverifikasi token, API reCAPTCHA mengembalikan nama action yang terkait dengan permintaan tersebut.
Cara Memecahkan reCAPTCHA v3 Menggunakan CapSkip?
Pertama, pastikan situs target menggunakan reCAPTCHA v3.
Indikator reCAPTCHA v3 meliputi:
Tanpa CAPTCHA terlihat atau challenge gambar
The
api.jsskrip dimuat denganrender=SITEKEYparameter, misalnya:https://www.google.com/recaptcha/api.js?render=SITEKEYThe
___grecaptcha_cfg.clientsarray berisi entri dengan indeks numerik yang tinggi, seperticlients[100000]
Untuk memecahkan reCAPTCHA v3, identifikasi parameter berikut:
- sitekey
Ini dapat ditemukan direnderparameter dariapi.jsURL skrip. Ia juga dapat muncul di URL iframe, di dalam kode JavaScript yang memanggilgrecaptcha.execute(), atau di dalam___grecaptcha_cfgobjek konfigurasi. - action
Temukan ini dengan memeriksa kode JavaScript untuk panggilan kegrecaptcha.execute(), misalnya:grecaptcha.execute('SITEKEY', {action: 'do_something'})Dalam beberapa kasus, menemukan action memerlukan pemeriksaan beberapa file JavaScript yang dimuat halaman. Jika Anda tidak dapat menentukan nilai action, Anda dapat memakai nilai bawaan"verify". - pageurl
URL lengkap halaman tempat reCAPTCHA v3 diterapkan.
Memahami Skor
Ambang skor yang dapat diterima berbeda-beda di tiap situs web dan hanya dapat ditentukan melalui pengujian. Skor berkisar dari:
0.0 → kemungkinan bot
1.0 → kemungkinan manusia
Sebagian besar situs web menggunakan ambang batas antara 0.3 dan 0.7, karena pengguna yang sah pun bisa mendapatkan skor lebih rendah.
Anda dapat meneruskan ambang batas yang diinginkan menggunakan min_score parameter, tetapi skor akhir selalu ditentukan oleh Google pada saat verifikasi dan tidak dapat dijamin oleh pemecah.
Daftar Parameter Permintaan POST
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| method | String | Ya | userrecaptcha – menentukan permintaan reCAPTCHA. |
| version | String | Ya | v3 – menunjukkan bahwa permintaan tersebut untuk reCAPTCHA v3. |
| googlekey | String | Ya | Nilai dari data-sitekey parameter yang ditemukan di halaman target. |
| pageurl | String | Ya | URL lengkap halaman tempat reCAPTCHA berada. |
| enterprise | Integer Default: 0 | Tidak |
1 – menandakan reCAPTCHA Enterprise v3. 0 – reCAPTCHA v3 standar. |
| action | String Default: verify | Tidak | Nilai dari action parameter yang didefinisikan di halaman. |
| min_score | Float | Tidak | Skor minimum yang diminta untuk token. Google menetapkan skor akhir saat server Anda memverifikasi token, jadi nilai ini hanyalah petunjuk dan tidak dijamin. CapSkip mengembalikan token yang diperolehnya terlepas dari skor yang kemudian ditetapkan Google. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa. 1 – respons dikembalikan dalam format JSON. |
| proxy | String | Tidak | Alamat proxy. Format untuk autentikasi IP: IP:PORT (contoh: 123.123.123.123:3128). Format untuk autentikasi login/kata sandi: login:password@IP:PORT |
| proxytype | String | Tidak | Jenis proxy. Nilai yang didukung: HTTP, HTTPS, SOCKS5, SOCKS5H. Default: HTTP ketika proxy disediakan tetapi proxytype dihilangkan. |
Kirim reCAPTCHA v3:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&version=v3&action=submit&min_score=0.7&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com" http://127.0.0.1:8080/in.php
Kirim Enterprise reCAPTCHA v3:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&version=v3&action=submit&min_score=0.7&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1" http://127.0.0.1:8080/in.php
Jika permintaan berhasil, CapSkip akan mengembalikan ID CAPTCHA sebagai teks biasa: OK|12345
Jika json=1 ditetapkan, respons akan dikembalikan dalam format JSON:
{
"status":1,
"request":"12345"
}Jika terjadi kesalahan, CapSkip akan mengembalikan kode error.
Tunggu 10 hingga 15 detik, lalu kirim permintaan HTTP GET ke endpoint hasil: http://127.0.0.1:PORT/res.php
Sertakan ID CAPTCHA yang dikembalikan dalam permintaan Anda. Daftar lengkap parameter yang tersedia ditampilkan pada tabel di bawah ini.
Jika CAPTCHA berhasil dipecahkan, CapSkip akan mengembalikan hasilnya dalam format teks biasa atau JSON. Nilai yang dikembalikan adalah token verifikasi seperti berikut:
03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB--gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3--o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q
Jika CAPTCHA belum terpecahkan, CapSkip akan mengembalikan CAPCHA_NOT_READY. Tunggu 5 detik dan ulangi permintaan. Jika CapSkip mengembalikan body respons yang kosong, hasilnya sudah pernah diambil atau ID tersebut tidak ada. Setiap hasil hanya dapat dibaca satu kali.
Daftar parameter permintaan GET
| Parameter GET | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| action | String | Ya | get – ambil jawaban untuk CAPTCHA yang dikirimkan. |
| id | Integer | Ya |
ID CAPTCHA yang dikembalikan oleh in.php. |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa 1 – respons dikembalikan dalam format JSON |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
Setelah menerima token dari CapSkip, Anda harus mengirimkannya dengan benar ke situs web target. Cara terbaik untuk memahami cara kerjanya adalah dengan mengamati permintaan yang dikirim saat menyelesaikan verifikasi sebagai pengguna biasa. Sebagian besar browser menyediakan alat pengembang dengan Network tab yang memungkinkan Anda memeriksa permintaan keluar.
Dalam kebanyakan kasus, token dikirim melalui permintaan POST. Nama parameternya mungkin g-recaptcha-response, mirip dengan reCAPTCHA v2, atau sesuatu seperti g-recaptcha-response-100000. Dalam beberapa implementasi, nama parameter yang berbeda mungkin digunakan.
Anda perlu memeriksa permintaan jaringan untuk menentukan bagaimana token dikirimkan lalu menyusun permintaan Anda sesuai dengan itu.
reCAPTCHA Enterprise
reCAPTCHA Enterprise adalah versi lanjutan dari sistem reCAPTCHA Google. Ia dapat beroperasi dalam mode v2 maupun v3 dan memberi administrator situs web kendali tambahan, termasuk kemampuan menilai dan melaporkan apakah suatu interaksi dilakukan manusia atau otomatis.
Cara Memecahkan reCAPTCHA Enterprise?
Langkah pertama adalah menentukan apakah situs tersebut menggunakan reCAPTCHA versi Enterprise.
Indikator utama reCAPTCHA Enterprise meliputi:
Halaman dimuat
enterprise.jsalih-alihapi.js, misalnya:<script src="https://recaptcha.net/recaptcha/enterprise.js" async defer></script>
Kode JavaScript situs memanggil
grecaptcha.enterprise.METHODalih-alihgrecaptcha.METHOD
Berikutnya, tentukan implementasi mana yang digunakan: v2, Invisible v2, atau v3. Hal ini biasanya dapat dikenali dengan menganalisis bagaimana widget dirender dan bagaimana perilakunya di halaman.
Ikuti diagram alur di bawah ini untuk menentukan implementasi yang tepat. Ini berlaku pada sebagian besar kasus.

Identifikasi parameter CAPTCHA dengan cara yang sama seperti dijelaskan untuk reCAPTCHA v2 atau v3.
Untuk implementasi v2 Enterprise, mungkin ada data opsional tambahan. Pada sebagian besar kasus, ini berupa string kustom yang didefinisikan di s atau data-s parameter. Jika ada, sertakan nilai ini dalam permintaan Anda menggunakan data-s parameter.
Daftar parameter permintaan POST dan GET tersedia di sini: Parameter permintaan POST dan GET reCAPTCHA V2
Untuk implementasi v3 Enterprise, Anda mungkin juga memerlukan action nilai. Untuk menemukannya, periksa kode JavaScript situs dan cari grecaptcha.enterprise.execute() panggilan. action biasanya diteruskan di dalam fungsi ini. Perlu diingat bahwa action bersifat opsional dan bisa jadi undefined dalam beberapa kasus.
Daftar parameter permintaan POST dan GET tersedia di sini: Parameter permintaan POST dan GET reCAPTCHA V3
Saat mengirim permintaan Anda ke /in.php endpoint, sertakan parameter tambahan: enterprise=1
Setelah itu, berinteraksilah dengan API CapSkip dengan cara yang sama seperti saat memecahkan reCAPTCHA v2 atau v3. Setelah token dikembalikan, kirimkan token tersebut ke situs web target sesuai implementasinya.
Cloudflare Turnstile
Cloudflare Turnstile adalah alternatif CAPTCHA modern yang dikembangkan oleh Cloudflare. Ia memverifikasi apakah seorang pengunjung adalah manusia tanpa mengandalkan tantangan visual tradisional. Turnstile dapat muncul sebagai widget mandiri atau sebagai bagian dari halaman tantangan, dan ia beroperasi dengan interaksi pengguna yang minimal atau tanpa interaksi sama sekali.
Ada dua implementasi Turnstile yang umum:
1. Widget Turnstile Mandiri
Widget Turnstile mandiri disematkan langsung pada halaman situs web, biasanya untuk melindungi formulir dari pengiriman otomatis. Dalam kasus ini:
Ekstrak
sitekeyfrom the page.Kirim ke CapSkip API bersama dengan seluruh
pageurl.Setelah menerima token, masukkan ke dalam
cf-turnstile-responsekolom.Dalam beberapa implementasi, token mungkin juga perlu ditempatkan di
g-recaptcha-responsekolom.Jika callback didefinisikan di
turnstile.render()konfigurasi, jalankan dengan token yang dikembalikan.
Lalu kirim formulir seperti biasa.
2. Turnstile pada Halaman Challenge Cloudflare
Ini terjadi ketika situs web diproksikan melalui Cloudflare dan menampilkan halaman tantangan Turnstile sebelum memberikan akses. Dalam kasus ini, Anda harus mengekstrak parameter berikut:
cDatachlPageDataaction
Nilai-nilai ini harus disertakan dalam permintaan API Anda. Selain itu, Anda harus menggunakan User-Agent nilai yang dikembalikan oleh CapSkip API saat mengirimkan token.
Cara Mengekstrak Parameter yang Diperlukan?
Untuk mengekstrak parameter yang diperlukan, Anda dapat menimpa turnstile.render metode itu dan mencegat argumen yang diteruskan saat metode tersebut dipanggil. Misalnya, suntikkan kode JavaScript berikut ke halaman. Skrip harus dieksekusi sebelum widget Turnstile dimuat agar parameternya berhasil ditangkap.
const i = setInterval(()=>{
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a,b) => {
let p = {
method: "turnstile",
key: "YOUR_API_KEY",
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
json: 1
}
console.log(JSON.stringify(p))
window.tsCallback = b.callback
return 'foo'
}
}
},50)Daftar Parameter Permintaan POST
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| method | String | Ya | turnstile – menentukan permintaan Cloudflare Turnstile. |
| sitekey | String | Ya | Nilai dari data-sitekey parameter yang ditemukan di halaman target. |
| pageurl | String | Ya | URL lengkap halaman tempat challenge Turnstile berada. |
| action | String | Tidak |
Nilai action opsional yang didefinisikan di data-action atribut atau diteruskan ke turnstile.render(). |
| data | String | Tidak |
Nilai dari cData yang diteruskan ke turnstile.render() atau didefinisikan di data-cdata atribut. |
| pagedata | String | Tidak |
Nilai dari chlPageData yang diteruskan ke turnstile.render(). |
| json | Integer Default: 0 | Tidak |
0 – respons dikembalikan sebagai teks biasa. 1 – respons dikembalikan dalam format JSON. |
| proxy | String | Tidak | Alamat proxy. Format untuk autentikasi IP: IP:PORT (contoh: 123.123.123.123:3128). Format untuk autentikasi login/kata sandi: login:password@IP:PORT |
| proxytype | String | Tidak | Jenis proxy. Nilai yang didukung: HTTP, HTTPS, SOCKS5, SOCKS5H. Default: HTTP ketika proxy disediakan tetapi proxytype dihilangkan. |
Kirim Turnstile (mandiri):
curl -X POST -d "key=YOUR_API_KEY&method=turnstile&sitekey=0x4AAAAAAABUYP0XeMJF0xoy&pageurl=https://example.com" http://127.0.0.1:8080/in.php
Kirim Turnstile (challenge – action, data, pagedata opsional):
curl -X POST -d "key=YOUR_API_KEY&method=turnstile&sitekey=0x4AAAAAAABUYP0XeMJF0xoy&pageurl=https://example.com&action=managed&data=...&pagedata=..." http://127.0.0.1:8080/in.php
Jika permintaan berhasil, CapSkip akan mengembalikan ID CAPTCHA sebagai teks biasa: OK|12345
Jika json=1 ditetapkan, respons akan dikembalikan dalam format JSON:
{
"status":1,
"request":"12345"
}Jika terjadi kesalahan, CapSkip akan mengembalikan kode error.
Gunakan ID yang dikembalikan untuk mengambil hasilnya dari /res.php endpoint dari API.
Daftar parameter permintaan GET
| Parameter GET | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya | Kunci API CapSkip Anda. |
| action | String | Ya | get – ambil jawaban untuk CAPTCHA yang dikirimkan. |
| id | Integer | Ya |
ID CAPTCHA yang dikembalikan oleh in.php. |
| json | Integer Default: 0 | Tidak |
0 - respons dikembalikan sebagai teks biasa. 1 - respons dikembalikan dalam format JSON, termasuk userAgent nilai. |
Untuk Cloudflare Turnstile, pemecah menggunakan User-Agent browser tertentu, dan Anda harus mengirim User-Agent yang sama saat mengirim token. Dengan json=1 responsnya menyertakan userAgent kolom. Dalam mode teks biasa, baca nilai yang sama dari X-Turnstile-User-Agent header respons.
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
GeeTest v3 Slider adalah CAPTCHA interaktif yang dikembangkan oleh GeeTest. CAPTCHA ini memverifikasi pengguna melalui tantangan penggeser untuk membedakan manusia dari bot sekaligus memberikan pengalaman verifikasi yang cepat dan mulus.
Untuk memecahkan CAPTCHA GeeTest v3 dengan CapSkip, Anda harus terlebih dahulu memperoleh parameter CAPTCHA yang diperlukan dari situs web target. Parameter yang diperlukan adalah:
- gt: Kunci publik situs web (statis)
- challenge: Nilai challenge dinamis
- api_server: domain server API GeeTest (opsional)
Nilai-nilai ini biasanya tersedia ketika situs menginisialisasi GeeTest.
Penting: Baru
challengeharus diperoleh untuk setiap permintaan pemecahan. Setelah CAPTCHA dimuat di halaman, nilai sebelumnyachallengemenjadi tidak valid. Anda perlu memeriksa permintaan jaringan situs web tersebut untuk mengidentifikasi permintaan yang menghasilkanchallengedan lakukan permintaan itu sebelum mengirim setiap permintaan pemecahan ke CapSkip.
Daftar Parameter Permintaan POST
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya* | Kunci API CapSkip Anda. Diperlukan hanya jika Validasi Kunci API diaktifkan. |
| method | String | Ya | Harus geetest. Menentukan bahwa Anda mengirimkan CAPTCHA GeeTest v3. |
| gt | String | Ya | The gt nilai yang diperoleh dari situs target. |
| challenge | String | Ya | The challenge yang diperoleh dari situs target. Nilai baru harus diperoleh untuk setiap permintaan pemecahan. |
| pageurl | String | Ya | URL lengkap halaman yang berisi CAPTCHA GeeTest. |
| api_server | String | Tidak | Domain server API GeeTest yang digunakan oleh situs target (misalnya api.geetest.com atau api-na.geetest.com). |
| json | Integer Default: 0 | Tidak | 0 mengembalikan respons sebagai teks biasa. 1 mengembalikan respons sebagai JSON. |
| proxy | String | Tidak | Alamat proxy. Format untuk autentikasi IP: IP:PORT (contoh: 123.123.123.123:3128). Format untuk autentikasi login/kata sandi: login:password@IP:PORT. |
| proxytype | String | Tidak | Jenis proxy. Nilai yang didukung: HTTP, HTTPS, SOCKS5, SOCKS5H. Default: HTTP ketika proxy disediakan tetapi proxytype dihilangkan. |
Kirim permintaan HTTP GET atau POST ke endpoint CapSkip API Anda (/in.php) dengan method=geetest. Sertakan parameter GeeTest yang diperlukan dari langkah sebelumnya beserta URL lengkap halaman yang memuat CAPTCHA.
curl -X POST \ -d "key=YOUR_API_KEY" \ -d "method=geetest" \ -d "gt=f1ab2cdefa3456789012345b6c78d90e" \ -d "challenge=12345678abc90123d45678ef90123a456b" \ -d "pageurl=https://www.example.com/" \ -d "api_server=api-na.geetest.com" \ http://127.0.0.1:8080/in.php
Jika semuanya berhasil, CapSkip akan mengembalikan ID CAPTCHA sebagai teks biasa: OK|212
Jika json=1 ditetapkan, respons akan dikembalikan dalam format JSON:
{
"status": 1,
"request": "212"
}Jika tidak, CapSkip akan mengembalikan kode error yang sesuai.
Tunggu sekitar 5 detik, lalu kirim permintaan HTTP GET ke res.php endpoint untuk mengambil hasilnya.
Daftar parameter permintaan GET
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| key | String | Ya* | Kunci API CapSkip Anda. Diperlukan hanya jika Validasi Kunci API diaktifkan. |
| action | String | Ya | Tentukan get untuk mengambil solusi CAPTCHA. |
| id | Integer | Ya | ID CAPTCHA yang dikembalikan oleh in.php permintaan. |
| json | Integer Default: 0 | Tidak | 0 mengembalikan respons sebagai teks biasa. 1 mengembalikan respons sebagai JSON. |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=212&json=1"
Jika CAPTCHA berhasil dipecahkan, CapSkip akan mengembalikan solusinya dalam format JSON:
{
"status": 1,
"request": "{\"geetest_challenge\":\"1a2b3456cd67890e12345fab678901c2de\",\"geetest_validate\":\"09fe8d7c6ba54f32e1dcb0a9fedc8765\",\"geetest_seccode\":\"12fe3d4c56789ba01f2e345d6789c012|jordan\"}"
}Jika CAPTCHA belum terpecahkan, CapSkip akan mengembalikan: CAPCHA_NOT_READY
Tunggu 5 detik dan ulangi permintaan. Jika terjadi kesalahan, CapSkip akan mengembalikan kode error yang sesuai. Gunakan nilai yang dikembalikan CapSkip saat mengirimkan permintaan Anda ke situs web target menggunakan kolom berikut:
geetest_challengegeetest_validategeetest_seccode
Menggunakan Proxy
Untuk reCAPTCHA v2, v3, Invisible, Enterprise, dan Cloudflare, Anda dapat mengirimkan proxy bersama setiap tugas. CapSkip akan memecahkan CAPTCHA melalui proxy tersebut alih-alih menggunakan kumpulan proxy yang dikonfigurasi di aplikasi CapSkip.
Ini berguna ketika situs web target memeriksa bahwa token CAPTCHA dihasilkan dari alamat IP yang sama dengan permintaan Anda sendiri, misalnya situs di balik Cloudflare, penilaian reCAPTCHA yang ketat, atau halaman yang dibatasi secara geografis.
Daftar Parameter Permintaan POST
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| proxy | String | Tidak | Alamat proxy. Format untuk autentikasi IP: IP:PORT (contoh: 123.123.123.123:3128). Format untuk autentikasi login/kata sandi: login:password@IP:PORT |
| proxytype | String | Tidak | Jenis proxy. Nilai yang didukung: HTTP, HTTPS, SOCKS5, SOCKS5H. Default: HTTP ketika proxy disediakan tetapi proxytype dihilangkan. |
Kode Kesalahan
| Kode | Arti |
|---|---|
ERROR_KEY_DOES_NOT_EXIST | Kunci API tidak valid. |
ERROR_WRONG_USER_KEY | Kunci API tidak ada atau kosong. |
ERROR_WRONG_METHOD | Metode HTTP tidak valid atau action parameter. |
ERROR_WRONG_ID_FORMAT | Format ID captcha tidak valid. |
ERROR_BAD_PARAMETERS | Parameter wajib hilang atau tidak valid. |
ERROR_UPLOAD | Tidak ada data gambar yang diberikan atau unggahan gagal. |
ERROR_INVALID_IMAGE | Format gambar tidak valid atau data gambar rusak. |
ERROR_INVALID_BASE64 | Pengodean base64 tidak valid. |
ERROR_TOO_BIG_CAPTCHA_FILESIZE | Ukuran gambar melebihi 600 kB atau dimensinya melebihi 1000px. |
ERROR_CAPTCHA_UNSOLVABLE | Gagal memecahkan captcha. Kirim tugas baru dan coba lagi. |
ERROR_GOOGLEKEY | Tidak valid googlekey parameter. |
ERROR_PAGEURL | Tidak valid pageurl parameter. |
CAPCHA_NOT_READY | Captcha masih diproses. Lanjutkan polling. |
| (respons kosong) | Hasilnya sudah diambil, atau ID tersebut tidak ada. |
