API CDP
Trình duyệt Scrapeless Scraping mở rộng chức năng CDP (Giao thức Chrome DevTools) tiêu chuẩn, thêm một loạt các hàm tùy chỉnh mạnh mẽ để nâng cao khả năng tự động hóa trình duyệt. Tài liệu này chủ yếu đề cập đến các hàm CDP liên quan đến xử lý CAPTCHA.
Tính năng giải quyết CAPTCHA
Tổng quan về tính năng
Trình duyệt Scraping bao gồm các khả năng giải quyết CAPTCHA nâng cao, tự động xử lý các loại CAPTCHA phổ biến được tìm thấy trên các trang web.
Các loại CAPTCHA được hỗ trợ
- reCaptcha
- Cloudflare Turnstile
- Cloudflare 5s Challenge
- AWS WAF
Cơ chế giám sát sự kiện
Các sự kiện cốt lõi
Trình duyệt Scraping cung cấp ba sự kiện cốt lõi để theo dõi quá trình giải quyết CAPTCHA:
Tên sự kiện | Mô tả |
---|---|
Captcha.detected | Phát hiện CAPTCHA |
Captcha.solveFinished | Hoàn tất giải quyết CAPTCHA |
Captcha.solveFailed | Giải quyết CAPTCHA thất bại |
Cấu trúc dữ liệu phản hồi sự kiện
Trường | Kiểu dữ liệu | Mô tả |
---|---|---|
type | string | Loại CAPTCHA: recaptcha turnstile |
success | boolean | Kết quả giải quyết |
message | string | Thông báo trạng thái: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID" |
token? | string | Token được trả về khi thành công (tùy chọn) |
Ví dụ triển khai
// Lắng nghe các sự kiện giải quyết CAPTCHA
const client = await page.createCDPSession();
client.on('Captcha.detected', (result) => {
console.log('Captcha detected:', result);
});
await new Promise((resolve, reject) => {
client.on('Captcha.solveFinished', (result) => {
if (result.success) resolve();
});
client.on('Captcha.solveFailed', () =>
reject(new Error('Captcha solve failed'))
);
setTimeout(() =>
reject(new Error('Captcha solve timeout')),
5 * 60 * 1000
);
});
API cấu hình nâng cao
Trình duyệt Scraping cung cấp một loạt các API nâng cao để kiểm soát chi tiết hành vi của trình giải quyết CAPTCHA. Các API sau được hỗ trợ:
Tên API | Mô tả |
---|---|
Captcha.setAutoSolve | Điều khiển hành vi tự động giải quyết CAPTCHA |
Captcha.setToken | Thiết lập token xác thực cho dịch vụ CAPTCHA |
Captcha.setConfig | Cấu hình tất cả các tham số của trình giải quyết CAPTCHA |
Captcha.solve | Kích hoạt thủ công quá trình giải quyết CAPTCHA |
Agent.click | Mô phỏng một cú nhấp chuột chuột |
Agent.liveURL | Lấy URL trực tiếp của trang phiên hiện tại |
Mô tả chi tiết API
1. Captcha.setAutoSolve
Giao diện cấu hình để điều khiển hành vi tự động giải quyết CAPTCHA.
const client = await page.createCDPSession();
await client.send('Captcha.setAutoSolve', {
autoSolve: false,
options: [{
type: 'recaptcha', // Options: recaptcha | turnstile
disabled: false,
}]
});
2. Captcha.setToken
Thiết lập token xác thực cho dịch vụ giải quyết CAPTCHA.
await client.send('Captcha.setToken', {
apiKey: 'your-token'
});
3. Captcha.setConfig
Cấu hình tất cả các tham số cho trình giải quyết CAPTCHA.
await client.send('Captcha.setConfig', {
config: JSON.stringify(
{
apiKey: "your-token",
autoSolve: true,
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
enabledForTurnstile: true
}
)
});
4. Captcha.solve
Kích hoạt thủ công quá trình giải quyết CAPTCHA.
const result = await client.send('Captcha.solve', {
detectTimeout: 10 * 1000,
options: JSON.stringify([{
type: 'rcaptcha',
disabled: true, // Tắt giải quyết rCaptcha
}])
});
console.log(result); // { type: 'recaptcha', success: true, message: 'solve_finished', token: 'xxx' }
5. Agent.click
Mô phỏng một cú nhấp chuột chuột.
const { Puppeteer } = require('@scrapeless-ai/sdk');
(async () => {
const browser = await Puppeteer.connect({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: true,
defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://www.scrapeless.com');
await page.realClick('button');
})();
6. Agent.type
Mô phỏng đầu vào bàn phím.
const { Puppeteer } = require('@scrapeless-ai/sdk');
(async () => {
const browser = await Puppeteer.connect({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: true,
defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://www.scrapeless.com');
await page.realFill('input', 'Hello, Scrapeless!');
})();
7. Agent.liveURL
Lấy URL trực tiếp của trang phiên hiện tại.
const { Puppeteer, log as Log } = require('@scrapeless-ai/sdk');
const logger = Log.withPrefix('puppeteer-example');
(async () => {
const browser = await Puppeteer.connect({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: true,
defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://www.scrapeless.com');
const { error, liveURL } = await page.liveURL();
if (error) {
logger.error('Failed to get current page URL:', error);
} else {
logger.info('Current page URL:', liveURL);
}
await browser.close();
})();