
Anh Tuan
Data Science Expert

/createTask để gửi CAPTCHA, sau đó kiểm tra định kỳ /getTaskResult cho đến khi status === 'ready'..env—không bao giờ mã hóa cứng nó.axios + vòng lặp kiểm tra định kỳ để tích hợp Node.js sạch sẽ và sẵn sàng cho sản xuất.Các dự án tự động hóa web và thu thập dữ liệu hiện đại thường gặp phải các thách thức CAPTCHA làm gián đoạn quy trình làm việc. Dù bạn đang xây dựng công cụ thu thập dữ liệu web, tự động hóa tác vụ trình duyệt, hay phát triển một đại diện AI, việc tích hợp một giải pháp giải CAPTCHA đáng tin cậy trở nên thiết yếu. CapSolver cung cấp một API được hỗ trợ bởi AI để xử lý các thách thức này theo chương trình, và hướng dẫn này sẽ hướng dẫn bạn cách triển khai nó trong JavaScript từ đầu.
Giao thông tự động hiện chiếm gần một nửa tổng lưu lượng internet, khiến việc phát hiện bot và các thách thức CAPTCHA ngày càng phổ biến trên các ứng dụng web. Đối với các nhà phát triển xây dựng các quy trình tự động hóa hợp pháp, việc có một giải pháp chương trình đáng tin cậy không còn là tùy chọn—nó là một yêu cầu cơ sở hạ tầng cốt lõi.
Trước khi bắt đầu viết mã, việc hiểu cách CapSolver xử lý các yêu cầu CAPTCHA giúp bạn thiết kế tích hợp đúng cách. Quy trình làm việc tuân theo một mô hình đơn giản: gửi một nhiệm vụ, kiểm tra định kỳ để hoàn tất, và nhận giải pháp.
Khi bạn gửi một thách thức CAPTCHA đến CapSolver, hệ thống sẽ gán cho nó một mã nhiệm vụ duy nhất. Ứng dụng của bạn sau đó kiểm tra dịch vụ định kỳ cho đến khi giải pháp sẵn sàng. Khi hoàn tất, bạn nhận được phản hồi chứa token hoặc dữ liệu cần thiết để tiếp tục quy trình tự động hóa của mình.
CapSolver hỗ trợ nhiều loại CAPTCHA bao gồm thách thức reCAPTCHA v2/v3, Cloudflare Turnstile, và chuyển đổi hình ảnh thành văn bản. Quy trình API giữ nguyên cho các loại thách thức, mặc dù tham số nhiệm vụ thay đổi tùy theo giải pháp cụ thể cần thiết. Để xem danh sách đầy đủ các loại nhiệm vụ được hỗ trợ, tham khảo tham chiếu loại nhiệm vụ CapSolver. Nếu bạn mới bắt đầu với nền tảng này, hướng dẫn bắt đầu bao gồm cài đặt tài khoản và lần gọi API đầu tiên. Để hiểu rõ hơn về cách CapSolver phù hợp với các luồng thu thập dữ liệu, xem cách tích hợp CapSolver vào quy trình tự động hóa của bạn.
Hướng dẫn này hướng dẫn bạn triển khai API giải CAPTCHA của CapSolver cụ thể cho các dự án JavaScript và Node.js. Đảm bảo bạn đã cài đặt Node.js 18+ và có sẵn khóa API CapSolver từ bảng điều khiển tài khoản của bạn.
Cấu trúc dự án:
capsolver-integration/
├── .env # Biến môi trường
├── capsolver-client.js # Client API cốt lõi
├── index.js # Ví dụ sử dụng
└── package.json
Khởi tạo dự án và cài đặt phụ thuộc:
mkdir capsolver-integration
cd capsolver-integration
npm init -y
npm install axios dotenv
axios là một trình khách HTTP phổ biến cho Node.js cung cấp cú pháp dựa trên promise sạch sẽ và xử lý thời gian chờ tích hợp—đều hữu ích khi kiểm tra API bên ngoài.
Tạo tệp .env để lưu khóa API một cách an toàn:
CAPSOLVER_API_KEY=khóa-api-của-bạn
Lưu ý bảo mật: Không bao giờ nộp tệp
.envvào kiểm soát phiên bản. Thêm nó vào.gitignorengay lập tức. Khóa API bị lộ có thể dẫn đến việc sử dụng không được phép và chi phí phát sinh. Xem Quản lý bí mật của OWASP để biết các phương pháp tốt nhất trong việc xử lý thông tin xác thực trong các dự án tự động hóa.
Nền tảng của tích hợp của bạn là một client tái sử dụng xử lý xác thực và định dạng yêu cầu. Client này bao bọc endpoint API và cung cấp các phương thức cho mỗi thao tác. Lưu tệp này dưới tên 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;
Lưu ý: Các ví dụ mã trong hướng dẫn này minh họa các mẫu triển khai dựa trên cấu trúc API được tài liệu hóa của CapSolver. Luôn kiểm tra các đường dẫn endpoint, tên loại nhiệm vụ và định dạng yêu cầu/phản hồi mới nhất đối chiếu với tài liệu API CapSolver chính thức, vì những chi tiết này có thể thay đổi.
Client này xử lý các khía cạnh lặp đi lặp lại trong giao tiếp API, bao gồm thiết lập tiêu đề và định dạng dữ liệu yêu cầu với khóa client của bạn.
Trước khi giải CAPTCHA quy mô lớn, xác minh tài khoản của bạn có đủ tín dụng. CapSolver hoạt động theo mô hình thanh toán theo giải pháp thành công, do đó kiểm tra số dư giúp tránh các thất bại không mong muốn trong quy trình.
// Thêm vào lớp CapSolverClient
async getBalance() {
const result = await this.request('/getBalance', {});
if (result.errorCode) {
throw new Error(`Kiểm tra số dư thất bại: ${result.errorCode} - ${result.errorDescription}`);
}
return {
balance: result.balance,
currency: result.currency || 'USD'
};
}
Nhiều nhà phát triển tích hợp kiểm tra số dư vào chuỗi khởi động để dừng lại nhanh nếu tín dụng hết trước khi bắt đầu quy trình tự động hóa dài.
reCAPTCHA v2 hiển thị thách thức hộp kiểm hoặc các nhiệm vụ chọn hình ảnh quen thuộc. Để giải các thách thức này, bạn cần URL trang đích và khóa trang được nhúng trong HTML của trang. Token đã giải được sau đó được gửi cùng với biểu mẫu hoặc yêu cầu.
// Thêm vào lớp CapSolverClient
async solveReCaptchaV2(websiteUrl, websiteKey) {
const task = {
type: 'RecaptchaV2Task',
websiteURL: websiteUrl,
websiteKey: websiteKey
};
return await this.submitAndWait(task);
}
async submitAndWait(task) {
// Bước 1: Gửi nhiệm vụ
const submitResult = await this.request('/createTask', { task });
if (submitResult.errorCode) {
throw new Error(`Tạo nhiệm vụ thất bại: ${submitResult.errorCode}`);
}
const taskId = submitResult.taskId;
// Bước 2: Kiểm tra định kỳ để nhận kết quả
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(`Giải CAPTCHA thất bại: ${result.errorDescription || 'Lỗi không xác định'}`);
}
// status === 'processing' → tiếp tục kiểm tra
}
}
Khoảng thời gian kiểm tra 1,5 giây cân bằng giữa tính phản hồi và giới hạn tốc độ API. Trường status sẽ là processing khi nhiệm vụ đang chạy, ready khi giải pháp sẵn sàng, hoặc failed nếu thách thức không thể giải. Để xem toàn bộ cấu trúc phản hồi, tham khảo tham chiếu API getTaskResult.
reCAPTCHA v3 hoạt động khác biệt—chạy ẩn phía sau và trả về điểm rủi ro thay vì thách thức trực quan. CapSolver có thể giải các thách thức v3 trong khi cho phép bạn xác định ngưỡng điểm rủi ro tối thiểu yêu cầu bởi trang đích.
// Thêm vào lớp 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);
}
Nhiệm vụ reCAPTCHA v3 thường hoàn thành nhanh hơn nhiệm vụ v2 vì không yêu cầu tương tác với thách thức trực quan. Tham số pageAction nên khớp với chuỗi hành động được định nghĩa trên trang đích.
Thách thức Cloudflare Turnstile thường xuất hiện trong các quy trình tự động hóa, đặc biệt khi thu thập dữ liệu từ các trang được bảo vệ bởi Cloudflare. CapSolver cung cấp hỗ trợ chuyên dụng cho các thách thức này:
// Thêm vào lớp 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);
}
Đối với các tình huống Cloudflare phức tạp hơn—bao gồm trang thách thức và nhận dạng trình duyệt—xem hướng dẫn tự động hóa giải CAPTCHA trong trình duyệt không đầu cuối.
Đây là tệp index.js đầy đủ minh họa cách sử dụng client trong một tình huống tự động hóa thực tế:
// index.js
const CapSolverClient = require('./capsolver-client');
require('dotenv').config();
async function main() {
const client = new CapSolverClient(process.env.CAPSOLVER_API_KEY);
try {
// Kiểm tra số dư trước khi bắt đầu
const { balance, currency } = await client.getBalance();
console.log(`Số dư tài khoản: ${balance} ${currency}`);
if (balance < 0.01) {
throw new Error('Số dư không đủ. Vui lòng nạp thêm vào tài khoản CapSolver của bạn.');
}
// Ví dụ: Giải reCAPTCHA v2
const solution = await client.solveReCaptchaV2(
'https://example.com/login',
'6Le-wvkAAAAAATBQbZDLjMjqTLV92vP6EXjs'
);
console.log('CAPTCHA được giải thành công');
console.log('Token:', solution.gRecaptchaResponse);
// Chèn token vào quy trình tự động hóa của bạn
// await page.evaluate(token => {
// document.getElementById('g-recaptcha-response').value = token;
// }, solution.gRecaptchaResponse);
} catch (error) {
console.error('Lỗi:', error.message);
process.exit(1);
}
}
main();
Các tích hợp sản xuất cần xử lý lỗi mạnh mẽ. Các vấn đề mạng, sự cố API tạm thời và lỗi CAPTCHA có thể xảy ra, vì vậy việc triển khai logic thử lại cải thiện đáng kể độ tin cậy:
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(`Lần thử ${attempt}/${maxAttempts} thất bại: ${error.message}`);
if (attempt < maxAttempts) {
await new Promise(resolve => setTimeout(resolve, delayMs * attempt));
}
}
}
throw lastError;
}
// Cách sử dụng
const solution = await withRetry(() =>
client.solveReCaptchaV2('https://example.com', 'khóa trang của bạn')
);
Độ trễ theo cấp số nhân (delayMs * attempt) ngăn API bị "đập" trong các sự cố tạm thời và cho phép dịch vụ thời gian để phục hồi.
Bảo mật khóa API của bạn. Luôn tải thông tin xác thực từ biến môi trường, không bao giờ mã hóa cứng chúng. Sử dụng tệp .env ở môi trường cục bộ và quản lý bí mật phù hợp trong các quy trình CI/CD.
Đặt thời gian chờ cho nhiệm vụ. Thêm thời gian chờ tối đa để ngăn quy trình tự động hóa của bạn treo vô thời hạn nếu nhiệm vụ bị treo. Một thời gian chờ 120 giây bao phủ hầu hết các tình huống giải CAPTCHA.
Theo dõi số dư của bạn một cách chương trình. Đối với các công việc tự động hóa kéo dài, kiểm tra số dư khi khởi động và tùy chọn kiểm tra định kỳ. Điều này ngăn các thất bại im lặng trong quá trình chạy.
Phù hợp loại nhiệm vụ với thách thức. Sử dụng loại nhiệm vụ sai là nguồn phổ biến của lỗi. Luôn kiểm tra HTML của trang đích để xác nhận loại CAPTCHA và trích xuất khóa trang đúng trước khi gửi nhiệm vụ.
Tôn trọng giới hạn tốc độ. Tránh gửi nhiệm vụ nhanh hơn khả năng xử lý của quy trình của bạn. Hàng đợi các nhiệm vụ và xử lý chúng ở tốc độ kiểm soát sẽ mang lại luồng ổn định hơn.
Để xem cái nhìn tổng quan hơn về việc tích hợp giải pháp CAPTCHA vào các luồng thu thập dữ liệu, xem cách tích hợp CapSolver vào quy trình tự động hóa hoặc thu thập dữ liệu của bạn, bao gồm các mẫu bổ sung như Puppeteer và Playwright. Nếu dự án của bạn liên quan đến trình duyệt không đầu cuối cụ thể, tự động hóa giải CAPTCHA trong trình duyệt không đầu cuối hướng dẫn toàn bộ quy trình từ đầu đến cuối.
Câu hỏi: Tôi có cần proxy để sử dụng API CapSolver không?
Trả lời: Không. Đối với hầu hết các loại nhiệm vụ, CapSolver xử lý giải CAPTCHA trên cơ sở hạ tầng của riêng nó và bạn chỉ cần truyền URL đích và khóa trang. Cấu hình proxy là tùy chọn và chỉ cần thiết cho một số biến thể nhiệm vụ cần mô phỏng phiên trình duyệt từ một IP cụ thể. Xem hướng dẫn sử dụng proxy để biết chi tiết.
Câu hỏi: Thời gian giải CAPTCHA là bao lâu?
Trả lời: Thời gian giải thay đổi tùy theo loại thách thức. reCAPTCHA v3 thường được giải trong dưới 5 giây. reCAPTCHA v2 và Cloudflare Turnstile có thể mất 10–30 giây tùy thuộc vào độ khó của thách thức và tải hàng đợi hiện tại. Vòng lặp kiểm tra trong hướng dẫn này xử lý thời gian giải thách thức biến đổi một cách tự động.
Câu hỏi: Điều gì xảy ra nếu số dư của tôi hết trong quá trình chạy?
Trả lời: API sẽ trả về mã lỗi trong lần gọi /createTask tiếp theo. Client trong hướng dẫn này sẽ ném lỗi trong trường hợp này, bạn có thể bắt và xử lý—ví dụ, gửi thông báo hoặc tạm dừng công việc. Việc kiểm tra số dư khi khởi động (như trong hướng dẫn) là cách đơn giản nhất để ngăn chặn điều này.
Câu hỏi: Tôi có thể sử dụng client này trong trình duyệt (JavaScript phía khách hàng) không?
Trả lời: Không. Khóa API của bạn phải luôn ở phía máy chủ. Việc tiết lộ nó trong mã phía khách hàng sẽ cho phép bất kỳ ai sử dụng tín dụng của bạn. Luôn gọi API CapSolver từ backend Node.js, hàm serverless, hoặc môi trường phía máy chủ khác.
Câu hỏi: Tôi nên làm gì nếu một nhiệm vụ trả về "failed"?
Trả lời: Nếu một nhiệm vụ trả về "failed", hãy kiểm tra lại thông tin đầu vào như URL trang và khóa trang để đảm bảo chúng chính xác. Bạn cũng có thể thử lại nhiệm vụ với các tham số khác nhau hoặc liên hệ với hỗ trợ CapSolver để được trợ giúp. Đảm bảo rằng bạn đã kiểm tra số dư tài khoản và không có vấn đề về cấu hình proxy nếu cần.
A: Trạng thái failed thường có nghĩa là tham số thử thách không chính xác (mã trang sai, loại nhiệm vụ không khớp, hoặc cấu hình trang không hỗ trợ). Kiểm tra trường errorDescription trong phản hồi, xác minh tham số nhiệm vụ của bạn theo tài liệu loại nhiệm vụ, sau đó thử lại với giá trị đã sửa. Bạn cũng có thể kiểm tra FAQ CapSolver để tìm các mẫu lỗi phổ biến.
Câu hỏi: Có phải SDK chính thức cho JavaScript/Node.js không?
A: CapSolver cung cấp SDK chính thức cho nhiều ngôn ngữ. Đối với các dự án JavaScript, bạn có thể sử dụng các mẫu trong hướng dẫn này trực tiếp, hoặc kiểm tra GitHub CapSolver để xem có gói npm nào được phát hành và ví dụ mã nguồn không.
Với việc triển khai này, bạn đã có nền tảng vững chắc để thêm khả năng giải CAPTCHA vào các dự án tự động hóa JavaScript của mình. Bạn có thể mở rộng khách hàng này với các loại nhiệm vụ khác, tích hợp nó với các công cụ tự động hóa trình duyệt như Puppeteer hoặc Playwright, hoặc kết hợp với một quy trình thu thập dữ liệu AI để tạo ra các luồng trích xuất dữ liệu phức tạp hơn.
Đối với các loại thách thức khác và các tham số cụ thể của chúng, tham khảo tài liệu loại nhiệm vụ chính thức.
Bắt đầu giải CAPTCHA trong các dự án JavaScript của bạn ngay hôm nay với CapSolver—tạo tài khoản của bạn, lấy khóa API, và chèn mã khách hàng ở trên vào dự án tự động hóa tiếp theo của bạn.
Khám phá CapSolver, giải pháp hàng đầu không cần lập trình để giải CAPTCHA cho tự động hóa AI vào năm 2026, để tối ưu quy trình làm việc và nâng cao thu thập dữ liệu mà không cần lập trình. Tìm hiểu về các tính năng chính, lợi ích và sử dụng có đạo đức của nó.

Hướng dẫn đầy đủ về cơ sở hạ tầng giải CAPTCHA cung cấp năng lượng cho Trình duyệt Agentic. Học tại sao CAPTCHA là rào cản chính đối với các đại diện AI và cách CapSolver cung cấp giải pháp thiết yếu cho tự động hóa web mượt mà.
