Puppeteer
Agent Browser cung cấp một nền tảng serverless hiệu năng cao được thiết kế để đơn giản hóa quá trình trích xuất dữ liệu từ các trang web động. Thông qua việc tích hợp liền mạch với Puppeteer, các nhà phát triển có thể chạy, quản lý và giám sát các trình duyệt headless mà không cần một máy chủ riêng, cho phép tự động hóa web và thu thập dữ liệu hiệu quả.
Cài đặt các thư viện cần thiết
Trước tiên, hãy cài đặt puppeteer-core, một phiên bản nhẹ của Puppeteer được thiết kế để kết nối với các phiên bản trình duyệt hiện có:
npm install puppeteer-core
Viết mã để kết nối với Agent Browser
Trong mã Puppeteer của bạn, hãy kết nối với Agent Browser bằng cách sau:
const { Puppeteer } = require('@scrapeless-ai/sdk');
(async () => {
const browser = await Puppeteer.connect({
apiKey: 'Your API key',
sessionName: 'sdk_test',
sessionTTL: 180,
proxyCountry: 'US',
sessionRecording: true,
defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://www.scrapeless.com');
console.log(await page.title());
await browser.close();
})();Điều này cho phép bạn tận dụng hạ tầng của Agent Browser, bao gồm khả năng mở rộng, xoay vòng IP và truy cập toàn cầu.
Ví dụ thực tế
Dưới đây là một số thao tác Puppeteer phổ biến sau khi tích hợp Agent Browser:
- Điều hướng và trích xuất nội dung trang
const page = await browser.newPage();
await page.goto('https://www.example.com');
console.log(await page.title());
const html = await page.content();
console.log(html);
await browser.close();
- Chụp ảnh màn hình
const page = await browser.newPage();
await page.goto('https://www.example.com');
await page.screenshot({ path: 'example.png' });
console.log('Screenshot saved as example.png');
await browser.close();
- Chạy mã tùy chỉnh
const page = await browser.newPage();
await page.goto('https://www.example.com');
const result = await page.evaluate(() => document.title);
console.log('Page title:', result);
await browser.close();
- Mô phỏng một cú nhấp chuột.
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.realClick('button[type="submit"]');- Mô phỏng nhập liệu từ bàn phím.
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.realFill('#login-email', 'scrapeless@gmail.com');- Lấy URL của trang hiện tại bằng Scrapeless Agent
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
const { error, liveURL } = await cdpSession.liveURL();- Giải CAPTCHA hình ảnh
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.imageToText({
imageSelector: '.captcha__image',
inputSelector: 'input[name="captcha"]',
timeout: 30000,
});- Tắt tính năng tự động giải CAPTCHA
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.disableCaptchaAutoSolve();- Giải CAPTCHA thủ công với các tùy chọn được chỉ định
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.solveCaptcha();- Chờ phát hiện CAPTCHA trên trang
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.waitCaptchaDetected({ timeout: 30000 });- Chờ CAPTCHA được giải (thành công hoặc thất bại)
const { createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
// ... connect to Agent Browser as shown above
const cdpSession = await createPuppeteerCDPSession(page);
await cdpSession.waitCaptchaSolved({ timeout: 30000 });