
Emma Foster
Machine Learning Engineer

/createTask untuk mengirim CAPTCHA, lalu polling /getTaskResult hingga status === 'ready'..env—jangan hardcode.axios + loop polling untuk integrasi Node.js yang bersih dan siap produksi.Proyek otomatisasi web dan pengumpulan data modern sering menghadapi tantangan CAPTCHA yang mengganggu alur kerja. Baik Anda membangun web scraper, mengotomasi tugas browser, atau mengembangkan agen AI, mengintegrasikan solusi penyelesaian CAPTCHA yang andal menjadi esensial. CapSolver menyediakan API yang didukung AI yang menangani tantangan ini secara programatik, dan panduan ini menjelaskan cara menerapkannya dalam JavaScript dari awal.
Lalu lintas otomatis kini menyumbang hampir separuh dari seluruh lalu lintas internet, membuat deteksi bot dan tantangan CAPTCHA semakin umum di aplikasi web. Bagi pengembang yang membangun alur kerja otomatisasi yang sah, memiliki solusi programatik yang andal kini bukan lagi pilihan—tapi kebutuhan infrastruktur inti.
Sebelum memasuki kode, memahami cara CapSolver memproses permintaan CAPTCHA membantu Anda merancang integrasi yang benar. Alur kerja mengikuti pola sederhana: kirim tugas, polling hingga selesai, dan terima solusi.
Ketika Anda mengirim tantangan CAPTCHA ke CapSolver, sistem akan memberinya identifikasi tugas unik. Aplikasi Anda kemudian polling layanan pada interval teratur hingga solusi siap. Setelah selesai, Anda menerima respons yang berisi token atau data yang diperlukan untuk melanjutkan alur kerja otomatisasi Anda.
CapSolver mendukung berbagai jenis CAPTCHA termasuk reCAPTCHA v2/v3, Cloudflare Turnstile, dan tantangan Image-to-Text. Alur API tetap konsisten untuk semua jenis tantangan, meskipun parameter tugas bervariasi tergantung pada solusi yang diperlukan. Untuk daftar lengkap jenis tugas yang didukung, lihat referensi jenis tugas CapSolver. Jika Anda baru mengenal platform ini, panduan mulai menggunakan menutupi setup akun dan panggilan API pertama. Untuk gambaran yang lebih luas tentang bagaimana CapSolver cocok dalam pipeline scraping, lihat cara mengintegrasikan CapSolver ke dalam alur kerja otomatisasi Anda.
Panduan ini menjelaskan cara menerapkan API penyelesaian CAPTCHA CapSolver khusus untuk proyek JavaScript dan Node.js. Pastikan Anda memiliki Node.js 18+ terinstal dan kunci API CapSolver siap dari dashboard akun Anda.
Struktur proyek:
capsolver-integration/
├── .env # Variabel lingkungan
├── capsolver-client.js # Klien API inti
├── index.js # Contoh penggunaan
└── package.json
Inisialisasi proyek dan instalasi dependensi:
mkdir capsolver-integration
cd capsolver-integration
npm init -y
npm install axios dotenv
axios adalah klien HTTP yang umum digunakan untuk Node.js yang menyediakan sintaks berbasis promise dan penanganan timeout terintegrasi—keduanya berguna saat polling API eksternal.
Buat file .env untuk menyimpan kunci API secara aman:
CAPSOLVER_API_KEY=your-api-key-here
Catatan keamanan: Jangan mengirim file
.envke kontrol versi. Tambahkan ke.gitignoresegera. Kunci API yang terbuka dapat menyebabkan penggunaan yang tidak sah dan biaya tak terduga. Lihat OWASP Secrets Management untuk praktik terbaik dalam menangani kredensial di proyek otomatisasi.
Dasar dari integrasi Anda adalah klien yang dapat digunakan kembali yang menangani otentikasi dan format permintaan. Klien ini mengemas endpoint API dan menyediakan metode untuk setiap operasi. Simpan ini sebagai capsolver-client.js:
// capsolver-client.js
const axios = require('axios');
class CapSolverClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://api.capsolver.com';
}
async request(endpoint, data) {
const response = await axios.post(`${this.baseUrl}${endpoint}`, {
...data,
clientKey: this.apiKey
}, {
headers: { 'Content-Type': 'application/json' },
timeout: 30000
});
return response.data;
}
delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
}
module.exports = CapSolverClient;
Catatan: Contoh kode dalam panduan ini menunjukkan pola implementasi berdasarkan struktur API yang didokumentasikan oleh CapSolver. Selalu periksa jalur endpoint terbaru, nama jenis tugas, dan format permintaan/respons terhadap dokumentasi API CapSolver resmi, karena detail ini mungkin berubah.
Klien ini menangani aspek repetitif komunikasi API, termasuk menyetel header dan memformat body permintaan dengan kunci klien Anda.
Sebelum menyelesaikan CAPTCHA dalam skala besar, pastikan akun Anda memiliki kredit yang cukup. CapSolver beroperasi dalam model bayar per solusi yang berhasil, jadi memeriksa saldo mencegah kegagalan tak terduga di tengah alur kerja.
// Tambahkan ke kelas CapSolverClient
async getBalance() {
const result = await this.request('/getBalance', {});
if (result.errorCode) {
throw new Error(`Pemeriksaan saldo gagal: ${result.errorCode} - ${result.errorDescription}`);
}
return {
balance: result.balance,
currency: result.currency || 'USD'
};
}
Banyak pengembang menyertakan pemeriksaan saldo dalam urutan inisialisasi untuk gagal secepat mungkin jika kredit habis sebelum menjalankan otomatisasi yang panjang.
reCAPTCHA v2 menampilkan tantangan kotak centang atau tugas pemilihan gambar yang dikenal. Untuk menyelesaikannya, Anda memerlukan URL halaman target dan kunci situs yang terdapat dalam HTML halaman. Token yang diselesaikan kemudian dikirim sebagai bagian dari formulir atau permintaan.
// Tambahkan ke kelas CapSolverClient
async solveReCaptchaV2(websiteUrl, websiteKey) {
const task = {
type: 'RecaptchaV2Task',
websiteURL: websiteUrl,
websiteKey: websiteKey
};
return await this.submitAndWait(task);
}
async submitAndWait(task) {
// Langkah 1: Kirim tugas
const submitResult = await this.request('/createTask', { task });
if (submitResult.errorCode) {
throw new Error(`Pembuatan tugas gagal: ${submitResult.errorCode}`);
}
const taskId = submitResult.taskId;
// Langkah 2: Polling hasil
while (true) {
await this.delay(1500);
const result = await this.request('/getTaskResult', { taskId });
if (result.status === 'ready') {
return result.solution;
}
if (result.status === 'failed') {
throw new Error(`Penyelesaian gagal: ${result.errorDescription || 'Kesalahan tidak diketahui'}`);
}
// status === 'processing' → lanjutkan polling
}
}
Interval polling 1,5 detik menyeimbangkan responsif dengan batas laju API. Kolom status akan menjadi processing saat tugas sedang berjalan, ready saat solusi tersedia, atau failed jika tantangan tidak dapat diselesaikan. Untuk skema respons lengkap, lihat referensi API getTaskResult.
reCAPTCHA v3 beroperasi berbeda—berjalan secara tersembunyi di latar belakang dan mengembalikan skor risiko daripada tantangan visual. CapSolver dapat menyelesaikan tantangan v3 sambil memungkinkan Anda menentukan ambang batas skor minimum yang diperlukan oleh situs target.
// Tambahkan ke kelas CapSolverClient
async solveReCaptchaV3(websiteUrl, websiteKey, options = {}) {
const {
pageAction = 'verify',
minScore = 0.9
} = options;
const task = {
type: 'RecaptchaV3Task',
websiteURL: websiteUrl,
websiteKey: websiteKey,
pageAction: pageAction,
minScore: minScore
};
return await this.submitAndWait(task);
}
Tugas reCAPTCHA v3 biasanya selesai lebih cepat daripada tugas v2 karena tidak memerlukan interaksi dengan tantangan visual. Parameter pageAction harus sesuai dengan string tindakan yang didefinisikan di halaman target.
Tantangan Cloudflare Turnstile sering muncul dalam alur kerja otomatisasi, terutama saat menycrap situs yang dilindungi Cloudflare. CapSolver menyediakan dukungan khusus untuk tantangan ini:
// Tambahkan ke kelas CapSolverClient
async solveTurnstile(websiteUrl, websiteKey, options = {}) {
const {
pageAction = 'managed',
metadata = {}
} = options;
const task = {
type: 'AntiCloudflareTask',
websiteURL: websiteUrl,
websiteKey: websiteKey,
pageAction: pageAction,
metadata: metadata
};
return await this.submitAndWait(task);
}
Untuk skenario Cloudflare yang lebih lanjut—termasuk halaman tantangan dan fingerprint browser—lihat panduan tentang mengotomatisasi penyelesaian CAPTCHA di browser headless.
Berikut adalah file index.js lengkap yang menunjukkan cara menggunakan klien dalam skenario otomatisasi nyata:
// index.js
const CapSolverClient = require('./capsolver-client');
require('dotenv').config();
async function main() {
const client = new CapSolverClient(process.env.CAPSOLVER_API_KEY);
try {
// Periksa saldo sebelum memulai
const { balance, currency } = await client.getBalance();
console.log(`Saldo akun: ${balance} ${currency}`);
if (balance < 0.01) {
throw new Error('Saldo tidak cukup. Silakan isi ulang akun CapSolver Anda.');
}
// Contoh: Selesaikan reCAPTCHA v2
const solution = await client.solveReCaptchaV2(
'https://example.com/login',
'6Le-wvkAAAAAATBQbZDLjMjqTLV92vP6EXjs'
);
console.log('CAPTCHA diselesaikan dengan sukses');
console.log('Token:', solution.gRecaptchaResponse);
// Sisipkan token ke dalam alur kerja otomatisasi Anda
// await page.evaluate(token => {
// document.getElementById('g-recaptcha-response').value = token;
// }, solution.gRecaptchaResponse);
} catch (error) {
console.error('Kesalahan:', error.message);
process.exit(1);
}
}
main();
Integrasi produksi membutuhkan penanganan kesalahan yang kuat. Masalah jaringan, gangguan API sementara, dan kegagalan CAPTCHA dapat terjadi, jadi implementasi logika pengulangan meningkatkan keandalan secara signifikan:
async function withRetry(operation, maxAttempts = 3, delayMs = 2000) {
let lastError;
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
return await operation();
} catch (error) {
lastError = error;
console.warn(`Percobaan ${attempt}/${maxAttempts} gagal: ${error.message}`);
if (attempt < maxAttempts) {
await new Promise(resolve => setTimeout(resolve, delayMs * attempt));
}
}
}
throw lastError;
}
// Penggunaan
const solution = await withRetry(() =>
client.solveReCaptchaV2('https://example.com', 'your-site-key')
);
Backoff eksponensial (delayMs * attempt) mencegah penyerangan API selama kegagalan sementara dan memberi layanan waktu untuk pulih.
Jaga kunci API Anda aman. Selalu muat kredensial dari variabel lingkungan, jangan hardcode. Gunakan file .env secara lokal dan manajemen kunci yang tepat dalam pipeline CI/CD.
Atur waktu habis tugas. Tambahkan durasi polling maksimum untuk mencegah otomatisasi Anda terjebak tak terbatas jika tugas macet. Timeout 120 detik mencakup sebagian besar skenario penyelesaian.
Pantau saldo Anda secara programatik. Untuk pekerjaan otomatisasi yang berjalan lama, periksa saldo saat startup dan secara opsional pada interval teratur. Ini mencegah kegagalan diam-diam di tengah run.
Sesuaikan jenis tugas dengan tantangan. Menggunakan jenis tugas yang salah adalah sumber umum kegagalan. Selalu periksa HTML halaman target untuk memastikan jenis CAPTCHA dan mengekstrak kunci situs yang benar sebelum mengirim tugas.
Hormati batas laju. Hindari mengirim tugas lebih cepat dari yang dapat dikonsumsi alur kerja Anda. Antrian tugas dan pemrosesan pada laju yang terkendali menghasilkan throughput yang lebih stabil.
Untuk gambaran yang lebih luas tentang mengintegrasikan penyelesaian CAPTCHA ke dalam pipeline scraping, lihat cara mengintegrasikan CapSolver ke dalam alur kerja otomatisasi atau scraping Anda, yang mencakup pola tambahan termasuk Puppeteer dan Playwright. Jika proyek Anda melibatkan browser headless secara khusus, mengotomatisasi penyelesaian CAPTCHA di browser headless menjelaskan setup lengkap dari awal hingga akhir.
P: Apakah saya memerlukan proxy untuk menggunakan API CapSolver?
J: Tidak. Untuk sebagian besar jenis tugas, CapSolver menangani penyelesaian di infrastruktur sendiri dan Anda hanya perlu melewati URL target dan kunci situs. Konfigurasi proxy opsional dan hanya diperlukan untuk varian tugas tertentu yang perlu meniru sesi browser dari IP tertentu. Lihat panduan penggunaan proxy untuk detail.
P: Berapa lama waktu yang dibutuhkan untuk menyelesaikan CAPTCHA?
J: Waktu penyelesaian bervariasi tergantung jenis tantangan. reCAPTCHA v3 biasanya selesai dalam kurang dari 5 detik. reCAPTCHA v2 dan Cloudflare Turnstile mungkin memakan waktu 10–30 detik tergantung tingkat kesulitan tantangan dan beban antrean saat ini. Loop polling dalam panduan ini menangani waktu penyelesaian yang bervariasi secara otomatis.
P: Apa yang terjadi jika saldo saya habis di tengah run?
J: API akan mengembalikan kode kesalahan pada panggilan /createTask berikutnya. Klien dalam panduan ini melemparkan kesalahan dalam kasus ini, yang dapat Anda tangani—misalnya, dengan mengirim pemberitahuan atau menunda pekerjaan. Menambahkan pemeriksaan saldo saat startup (seperti yang ditunjukkan dalam panduan) adalah cara paling sederhana untuk mencegah ini.
P: Bisakah saya menggunakan klien ini di browser (JavaScript frontend)?
J: Tidak. Kunci API Anda harus tetap di sisi server. Menyembunyikannya dalam kode frontend memungkinkan siapa pun menggunakan kredit Anda. Selalu panggil API CapSolver dari backend Node.js, fungsi serverless, atau lingkungan sisi server lainnya.
P: Apa yang harus saya lakukan jika tugas mengembalikan failed?
A: Status gagal biasanya berarti parameter tantangan salah (kunci situs yang salah, tipe tugas yang tidak sesuai, atau konfigurasi halaman yang tidak didukung). Periksa bidang errorDescription dalam respons, verifikasi parameter tugas Anda terhadap dokumentasi tipe tugas, lalu coba lagi dengan nilai yang benar. Anda juga dapat memeriksa FAQ CapSolver untuk pola kesalahan umum.
P: Apakah ada SDK JavaScript/Node.js resmi?
A: CapSolver menyediakan SDK resmi untuk berbagai bahasa. Untuk proyek JavaScript, Anda dapat menggunakan pola dalam panduan ini secara langsung, atau periksa GitHub CapSolver untuk paket npm yang telah diterbitkan dan contoh kode.
Dengan implementasi ini, Anda memiliki dasar yang kuat untuk menambahkan kemampuan menyelesaikan CAPTCHA ke proyek otomasi JavaScript Anda. Anda dapat memperluas klien ini dengan tipe tugas tambahan, mengintegrasikannya dengan alat otomatisasi browser seperti Puppeteer atau Playwright, atau menggabungkannya dengan alur kerja scraping AI untuk pipeline ekstraksi data yang lebih canggih.
Untuk jenis tantangan lain dan parameter spesifiknya, rujuk ke dokumentasi tipe tugas resmi.
Mulai menyelesaikan CAPTCHA dalam proyek JavaScript Anda hari ini dengan CapSolver—buat akun Anda, ambil kunci API Anda, dan tempatkan kode klien di atas ke proyek otomasi berikutnya Anda.
Temukan CapSolver, solusi pemecah CAPTCHA tanpa kode terkemuka untuk otomatisasi AI pada tahun 2026, untuk menyederhanakan alur kerja dan meningkatkan pengumpulan data tanpa coding. Pelajari fitur utama, manfaat, dan penggunaan yang etis.

Panduan lengkap tentang infrastruktur penyelesaian CAPTCHA yang mendorong Agentic Browsers. Pelajari mengapa CAPTCHA adalah hambatan utama bagi agen AI dan bagaimana CapSolver menyediakan solusi esensial untuk otomatisasi web yang lancar.
