Tài liệuTrình duyệt và CrawlAgent BrowserCDP API

CDP API

Agent Browser của Scrapeless mở rộng chức năng CDP (Chrome DevTools Protocol) tiêu chuẩn, bổ sung một loạt các hàm tùy chỉnh mạ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 việc xử lý CAPTCHA.

Tính năng CAPTCHA Solver

Tổng quan tính năng

Agent Browser bao gồm khả năng giải CAPTCHA nâng cao, tự động xử lý các loại CAPTCHA phổ biến xuất hiện 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

Agent Browser cung cấp ba sự kiện cốt lõi để giám sát quá trình giải CAPTCHA:

Event NameMô tả
Captcha.detectedĐã phát hiện CAPTCHA
Captcha.solveFinishedĐã hoàn thành giải CAPTCHA
Captcha.solveFailedGiải CAPTCHA thất bại

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

TrườngKiểuMô tả
typestringLoại CAPTCHA: recaptcha turnstile
successbooleanKết quả giải
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

// Listen for CAPTCHA solving events
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

Agent Browser 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 CAPTCHA solver. Các API sau đây được hỗ trợ:

Tên APIMô tả
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 CAPTCHA solver
Captcha.solveKích hoạt thủ công quá trình giải CAPTCHA
Agent.clickMô phỏng một cú nhấp chuột
Agent.liveURLLấy live url 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 CAPTCHA solver.

await client.send('Captcha.setConfig', {
    config: JSON.stringify(
        {
            apiKey: "your-token",
            autoSolve: true,
            enabledForRecaptcha: true,
            enabledForRecaptchaV3: true,
            enabledForTurnstile: true
        }
    )
});

2. Captcha.solve

Kích hoạt thủ công quá trình giải CAPTCHA.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: 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 một cú nhấp chuột.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: 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 từ bàn phím.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: 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 live url 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({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: 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 Image Captcha

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
const browser = await Puppeteer.connect({
  sessionName: 'sdk_test',
  sessionTTL: 180,
  proxyCountry: 'US',
  sessionRecording: 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,
})