API CDP

Trình duyệt Scrapeless Scraping mở rộng chức năng CDP (Chrome DevTools Protocol) tiêu chuẩn, thêm một loạt các hàm tùy chỉnh mạnh mẽ để tăng cường 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 để giám sát quá trình giải quyết CAPTCHA:

Tên sự kiệnMô tả
Captcha.detectedPhát hiện CAPTCHA
Captcha.solveFinishedHoàn thành giải quyết CAPTCHA
Captcha.solveFailedGiải quyết CAPTCHA thất bại

Cấu trúc dữ liệu phản hồi sự kiện

TrườngKiểu dữ liệuMô tả
typestringLoại CAPTCHA: recaptcha turnstile
successbooleanKết quả giải quyết
messagestringThông báo trạng thái: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID"
token?stringToken đượ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 đây được hỗ trợ:

Tên APIMô tả
Captcha.setAutoSolveĐiều khiển hành vi tự động giải quyết CAPTCHA
Captcha.setTokenĐặt token xác thực cho dịch vụ CAPTCHA
Captcha.setConfigCấu hình tất cả các tham số của trình giải quyết CAPTCHA
Captcha.solveThủ công kích hoạt quá trình giải quyết CAPTCHA
Agent.clickMô phỏng nhấp chuột
Agent.liveURLLấy URL trực tiếp của trang phiên hiện tại

Mô tả chi tiết API

1. 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
        }
    )
});

2. Captcha.solve

Thủ công kích hoạt quá trình giải quyết CAPTCHA.

const { Puppeteer, createPuppeteerCDPSession } = 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');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.solveCaptcha({ timeout: 30000 });
})();

3. Agent.click

Mô phỏng nhấp chuột.

const { Puppeteer, createPuppeteerCDPSession } = 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');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.realClick('button');
})();

4. Agent.type

Mô phỏng nhập liệu bàn phím.

const { Puppeteer, createPuppeteerCDPSession } = 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');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.realFill('input', 'Hello, Scrapeless!');
})();

5. Agent.liveURL

Lấy URL trực tiếp của trang phiên hiện tại.

const { Puppeteer, log as Log, createPuppeteerCDPSession } = 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 cdpSession = await createPuppeteerCDPSession(page);
 
    const { error, liveURL } = await cdpSession.liveURL();
    if (error) {
      logger.error('Failed to get current page URL:', error);
    } else {
      logger.info('Current page URL:', liveURL);
    }
    await browser.close();
})();

6. Captcha.imageToText

Giải quyết CAPTCHA hình ảnh

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
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.example.com');
const cdpSession = await createPuppeteerCDPSession(page);
 
await cdpSession.imageToText({
  imageSelector: '.captcha__image',
  inputSelector: 'input[name="captcha"]',
  timeout: 30000,
})