Nstbrowser hiện hỗ trợ giải CAPTCHA, với 5 loại CAPTCHA.

Tìm hiểu thêm

🚀

Platform Proxy đã hoạt động trong Nstbrowser — proxy tích hợp sẵn từ$0.4/GB.

Bắt đầu ngay

  • Định giá
  • Tài liệu
VI
Liên hệ

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Sản phẩm

Trình duyệt chống vân tay
Nstbrowser RPA
AI Agent Skills
Proxy
Vượt qua đám mây
Trình mở khóa web

Giải pháp

Trình duyệt chống vân tay dựa trên đám mây
Quản lý nhiều tài khoản
Rút trích nội dung trang web
Giải pháp chống bot
Cách ly dữ liệu để bảo mật doanh nghiệp
Trình kiểm tra IP Claude AI

Nguồn

Định giá
Tải xuống
Thị trường RPA
Chương trình liên kết
Đối tác
Blog
Ghi chú phát hành

Ủng hộ

Liên hệ

Tài liệu

Hợp pháp

Điều kiện
Chính sách bảo mật
Chính sách cookie

Sản phẩmGiải phápNguồnỦng hộHợp pháp

Sản phẩmGiải phápNguồn

Ủng hộHợp pháp

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Quay lại Blog
docker image
Browserless

Puppeteer Web Scraping: trong Docker của Browserless

Chạy Puppeteer trong Docker là một bước ngoặt! Docker image là gì? Làm thế nào để tối ưu hóa Puppeteer? Tìm hiểu trong blog này.
Aug 22, 2024Triệu Lệ Chi

Giới thiệu về Docker Image

Docker image là một tệp dùng để thực thi mã trong một container Docker. Nó hoạt động như một tập hợp các hướng dẫn để xây dựng một container Docker, tương tự như một mẫu. Nói cách khác, chúng tương đương với các snapshot trong một môi trường máy ảo.

Docker image chứa tất cả các thư viện, dependencies và tệp cần thiết để chạy một container, khiến nó trở thành một tệp thực thi độc lập cho container. Những hình ảnh này có thể được chia sẻ và triển khai ở nhiều vị trí khác nhau để chúng có tính di động cao.

Browserless là gì?

Browserless của Nstbrowser là một dịch vụ headlesschrome trên nền tảng đám mây, cho phép vận hành các ứng dụng trực tuyến và tự động hóa các tập lệnh mà không cần giao diện đồ họa người dùng. Nó đặc biệt hữu ích cho các công việc như thu thập dữ liệu web và các hoạt động tự động khác.

Bạn có ý tưởng tuyệt vời nào và nghi ngờ gì về việc thu thập dữ liệu web và Browserless không?
Hãy xem những gì các nhà phát triển khác đang chia sẻ trên Discord và Telegram!

Lợi ích của việc sử dụng Puppeteer trong Docker là gì?

Sử dụng Puppeteer trong Docker có ít nhất 3 lợi ích sau:

  • Đảm bảo môi trường nhất quán.
  • Đơn giản hóa việc quản lý dependencies.
  • Cải thiện khả năng mở rộng và tăng cường bảo mật.

Ngoài ra, bằng cách chạy Puppeteer trong một container Docker, bạn có thể đảm bảo các phiên bản hệ điều hành và trình duyệt nhất quán trên tất cả các môi trường phát triển, kiểm thử và sản xuất. Điều này cũng có thể đơn giản hóa quá trình cài đặt trình duyệt Chrome và các dependencies của nó, cũng như dễ dàng mở rộng các instance container để xử lý các tác vụ quy mô lớn.

Hơn nữa, các container Docker cung cấp một môi trường cách ly, giúp giảm thiểu rủi ro bảo mật tiềm ẩn.

Cách sử dụng Docker Image của Nstbrowser?

Trước khi sử dụng Docker Image của Nstbrowser, bạn cần thực hiện các công việc chuẩn bị sau:

  1. Bạn phải có môi trường Docker. Nếu bạn chưa cài đặt Docker, bạn có thể tham khảo Docker Docs.
  2. Bạn cần có tài khoản Nstbrowser. Nếu bạn chưa có tài khoản, bạn có thể đăng ký trên trang web chính thức của Nstbrowser.
  3. Khi bạn đã có tài khoản, hãy truy cập trang sau để lấy khóa API của bạn.
Nstbrowser API key

Sau khi bạn đã hoàn thành các công việc chuẩn bị trên, bạn có thể sử dụng lệnh sau để tải về Docker Image của Nstbrowser:

Bash Copy
# Tải về hình ảnh Browserless
docker pull nstbrowser/browserless:0.0.1-beta

# Chạy hình ảnh Browserless
docker run -it -e TOKEN=xxx -e SERVER_PORT=8848 -p 8848:8848 --name nstbrowserless nstbrowser/browserless:0.0.1-beta

# Sau khi chạy, bạn có thể sử dụng lệnh docker ps để kiểm tra xem container có đang chạy đúng cách không
docker ps
check container

Sử dụng Puppeteer trong Docker để thu thập dữ liệu các trang web động

Bây giờ, tôi sẽ hướng dẫn bạn cách sử dụng Puppeteer dựa trên Docker Image của Nstbrowser để thu thập dữ liệu các trang web động. Và cùng bạn thực hiện từng bước để hoàn thành một ví dụ đơn giản.

Bước 1: Xác định mục tiêu thu thập dữ liệu

Việc đầu tiên chúng ta cần làm là xác định thông tin mà chúng ta muốn thu thập. Trong ví dụ này, chúng ta sẽ chọn thu thập tất cả nội dung thẻ H2 của một Semrush Blog và in nó ra console.

scraping semrush blog

Bước 2: Viết một script Puppeteer

Tiếp theo, chúng ta cần viết một script Puppeteer để thu thập thông tin mục tiêu. Dưới đây là đoạn mã Puppeteer để truy cập trang mục tiêu và lấy nội dung thẻ H2:

JavaScript Copy
const page = await browser.newPage();

// Truy cập trang mục tiêu
await page.goto('https://www.semrush.com/blog/seo-best-practices/');

// Lấy nội dung thẻ h2
const h2s = await page.evaluate(() => {
  const h2s = Array.from(document.querySelectorAll('h2'));
   return h2s.map(h2 => h2.textContent);
});

// In nội dung thẻ h2
console.log(h2s);

Bước 3: Khởi tạo dự án

Trước khi thực hiện bước này, vui lòng chạy lệnh sau để khởi tạo một dự án mới:

Bash Copy
cd ~
makedir puppeteer-docker
cd puppeteer-docker

Tuyệt vời! Tiếp theo, chúng ta cần làm gì? Hãy tạo 3 tệp sau với mã của chúng ta:

  • index.mjs
JavaScript Copy
import puppeteer from 'puppeteer-core';

async function execPuppeteer(browserWSEndpoint) {
  try {
    const browser = await puppeteer.connect({
      browserWSEndpoint: browserWSEndpoint,
      defaultViewport: null,
    });
    const page = await browser.newPage();

    // Điều hướng đến URL mục tiêu
    await page.goto('https://www.semrush.com/blog/seo-best-practices/');

    // Lấy nội dung thẻ h2
    const h2s = await page.evaluate(() => {
      const h2s = Array.from(document.querySelectorAll('h2'));
      return h2s.map((h2) => h2.textContent);
    });

    // In nội dung thẻ h2
    console.log(h2s);

    // Đóng trình duyệt
    await browser.close();
  } catch (err) {
    console.error('launch', err);
  }
}

async function launchAndConnectToBrowser() {
  const host = 'host.docker.internal:8848';
  const config = {
    once: true,
    headless: true, // Thiết lập chế độ không hiển thị
    autoClose: true,
    args: { '--disable-gpu': '', '--no-sandbox': '' }, // Tham số trình duyệt phải là một dictionary
    fingerprint: {
      name: '',
      platform: 'mac',
      kernel: 'chromium',
      kernelMilestone: 124,
      hardwareConcurrency: 8,
      deviceMemory: 8,
    },
  };
  const browserWSEndpoint = `ws://${host}/ws/connect?${encodeURIComponent(
    JSON.stringify(config)
  )}`;
  await execPuppeteer(browserWSEndpoint);
}

launchAndConnectToBrowser().then();
  • Dockerfile
Dockerfile Copy
FROM node:18-alpine AS base

# Cài đặt các dependencies chỉ khi cần thiết
FROM base AS deps
RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache libc6-compat

RUN npm config set registry https://registry.npmmirror.com/
RUN npm install -g pnpm

# Thiết lập thư mục làm việc
WORKDIR /app

# Sao chép package.json và cài đặt các dependencies
COPY package*.json pnpm-lock.yaml ./

RUN pnpm install

WORKDIR /app
COPY --link ./ .

FROM base AS runner

# Sao chép các dependencies
COPY --from=deps /app/node_modules ./node_modules

# Sao chép mã ứng dụng
COPY --from=deps /app .

# Lệnh khởi động mặc định
CMD ["node", "index.mjs"]
  • package.json
JavaScript Copy
{
  "name": "docker-puppeteer",
  "version": "1.0.0",
  "main": "index.mjs",
  "dependencies": {
    "puppeteer-core": "^23.1.0"
  },
  "scripts": {
    "start": "node index.mjs"
  }
}

Tuyệt vời! Chúng ta đã tạo xong ba tệp cần thiết! Chỉ còn một bước chuẩn bị cuối cùng: cài đặt các phụ thuộc của dự án.

Bash Copy
pnpm install

Bước 4: Xây dựng và chạy hình ảnh Docker

Bạn đã sẵn sàng chưa? Chúng ta có thể cuối cùng xây dựng và thu thập dữ liệu từ hình ảnh Docker:

  • Mở console
  • Vào thư mục dự án
  • Chạy lệnh sau để xây dựng hình ảnh Docker
Bash Copy
docker build -t puppeteer-docker .

Bạn đã xong chưa? Vui lòng thực hiện lệnh sau để chạy hình ảnh puppeteer-docker của chúng tôi. Nó sẽ tự động chạy kịch bản Puppeteer của chúng tôi để thực hiện thao tác thu thập dữ liệu:

Bash Copy
docker run --rm --network="host" puppeteer-docker

Cuối cùng, bạn sẽ thấy kết quả sau. Kết quả là chúng tôi đã thu thập tất cả các tiêu đề H2 trên trang web mục tiêu:

scraping output

Tối ưu hóa hiệu suất Puppeteer trong Docker

Tối ưu hóa hiệu suất Puppeteer trong môi trường Docker bao gồm một số chiến lược chính để đảm bảo các nhiệm vụ tự động hóa trình duyệt hoạt động hiệu quả.

1. Giảm kích thước container

Chọn một hình ảnh cơ bản nhẹ, chẳng hạn như node:alpine hoặc node:slim, để giảm kích thước của hình ảnh.

Loại bỏ các phụ thuộc và tệp không cần thiết, và giữ cho hình ảnh đơn giản bằng cách sử dụng các tệp .dockerignore và chỉ bao gồm các tệp cần thiết.

2. Kích hoạt chế độ headless

Kích hoạt chế độ headless ({ headless: true }) của Puppeteer. Chế độ này sẽ chạy trình duyệt mà không có giao diện đồ họa, giúp giảm mức tiêu thụ tài nguyên và cải thiện hiệu suất.

3. Phân bổ tài nguyên hợp lý

Đảm bảo rằng container Docker nhận đủ tài nguyên CPU và bộ nhớ để hoàn thành nhiệm vụ tự động hóa trình duyệt một cách thành công.

Bạn có thể sử dụng các tính năng giới hạn tài nguyên của Docker (chẳng hạn như --cpus và --memory) để quản lý việc sử dụng tài nguyên của container và ngăn ngừa sự cạnh tranh tài nguyên trong môi trường nhiều container.

4. Tối ưu hóa Dockerfile

Giảm số lượng lớp trong Dockerfile và kết hợp nhiều lệnh thành một lệnh RUN để rút ngắn thời gian xây dựng hình ảnh.

Sử dụng các build nhiều giai đoạn để tách biệt các phụ thuộc giữa các giai đoạn xây dựng và chạy, và tạo ra một hình ảnh cuối cùng mượt mà hơn.

Cải thiện hiệu quả xây dựng và rút ngắn thời gian xây dựng sau này bằng cách sắp xếp các lệnh trong Dockerfile một cách hợp lý để tận dụng bộ nhớ cache của quá trình xây dựng.

5. Điều chỉnh tùy chọn khởi động trình duyệt

Tùy chỉnh các tham số khởi động trình duyệt của Puppeteer, chẳng hạn như args, executablePath, và ignoreDefaultArgs, để tối ưu hóa hành vi của trình duyệt và việc sử dụng tài nguyên.

Điều chỉnh các cờ khởi động Chromium để vô hiệu hóa các tính năng không cần thiết hoặc kích hoạt các tùy chọn cải thiện hiệu suất, chẳng hạn như tắt tăng tốc GPU thông qua --disable-gpu.

6. Quản lý container

Triển khai các ứng dụng Puppeteer trên các nền tảng quản lý container như Docker Swarm hoặc Kubernetes, và tận dụng các khả năng mở rộng tự động, cân bằng tải, và quản lý tài nguyên mà các nền tảng này cung cấp.

Đạt được mở rộng theo chiều ngang, phân phối tải đến nhiều container, và cải thiện hiệu suất dưới các điều kiện lưu lượng cao.

7. Giám sát và điều chỉnh hiệu suất

Sử dụng các công cụ giám sát của Docker (như Docker Stats, Docker Events, và Docker Healthchecks) để theo dõi việc sử dụng tài nguyên và tình trạng sức khỏe của container.

Triển khai một giải pháp giám sát hiệu suất ứng dụng (APM) (như Prometheus, Grafana, hoặc Datadog) để theo dõi và phân tích các chỉ số hiệu suất chính như thời gian phản hồi, thông lượng, và tỷ lệ lỗi để xác định và giải quyết các nút thắt hiệu suất.

Những suy nghĩ cuối cùng

Chạy Puppeteer trong môi trường Docker mang lại nhiều tiện lợi hơn cho các nhà phát triển! Nó cung cấp một giải pháp linh hoạt và có thể mở rộng cho các nhiệm vụ tự động hóa trình duyệt.

Trong blog này, chúng tôi đã thảo luận về:

  • Ý nghĩa và chức năng của hình ảnh Docker
  • Các bước cụ thể để thu thập dữ liệu trang web sử dụng Puppeteer-Docker
  • 7 mẹo để đảm bảo Puppeteer chạy hiệu quả trong Docker

Bắt đầu sử dụng Browserless để xây dựng hình ảnh Docker mạnh mẽ của riêng bạn và tận hưởng việc thu thập dữ liệu!

Hơn
http-2-bypass
Browserless
Phân tích dấu vân tay HTTP/2 và cách vượt qua nó?
Tìm hiểu cách vượt qua dấu vân tay HTTP/2 trong thu thập dữ liệu web với sáu phương pháp mạnh mẽ, từ việc sử dụng trình duyệt thực tế đến Browserless dựa trên đám mây. Tránh bị phát hiện bởi các biện pháp chống bot hiện đại.
Jun 03, 2025Carlos Rivera
Tải tiện ích mở rộng trình duyệt trong Nstbrowser Docker
Browserless
Cách tải tiện ích mở rộng trình duyệt trong Nstbrowser Docker?
Tìm hiểu 2 phương pháp tải tiện ích mở rộng trong Nstbrowser và các bước để khởi chạy chúng trong Docker.
Mar 19, 2025Tạ Quí Lĩnh
Khởi chạy hồ sơ Nstbrowser trong Docker
Browserless
Cách khởi chạy hồ sơ Nstbrowser trong Docker?
Tìm hiểu cách khởi chạy profile Nstbrowser trong Docker, đồng bộ dữ liệu giữa các môi trường và tự động hóa quy trình làm việc bằng API. Hướng dẫn này bao gồm mọi thứ từ thiết lập đến thực thi.
Mar 14, 2025Carlos Rivera
Cách sử dụng Browserless của Nstbrowser để tự động giải quyết Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
Cách sử dụng Browserless của Nstbrowser để tự động giải quyết Cloudflare Turnstile (2025)
Tìm hiểu cách bỏ qua Cloudflare Turnstile bằng dịch vụ Browserless của Nstbrowser và Puppeteer. Hướng dẫn này sẽ hướng dẫn bạn thiết lập, triển khai và những lợi thế của việc tự động hóa các tác vụ thu thập dữ liệu web đồng thời đảm bảo sự tuân thủ và hiệu quả.
Mar 07, 2025Triệu Lệ Chi
Cách sử dụng Browserless của Nstbrowser để vượt qua thử thách Cloudflare 5s (2025)
BrowserlessCloudflare BypassHeadless Browser
Cách sử dụng Browserless của Nstbrowser để vượt qua thử thách Cloudflare 5s (2025)
Tìm hiểu cách bỏ qua Thử thách 5s của Cloudflare bằng dịch vụ Browserless của Nstbrowser và Puppeteer. Hướng dẫn này sẽ hướng dẫn bạn thiết lập, triển khai và những lợi thế của việc tự động hóa các tác vụ thu thập dữ liệu web đồng thời đảm bảo sự tuân thủ và hiệu quả.
Mar 06, 2025Robin Brown
Trình duyệt hỗ trợ trí tuệ nhân tạo
Browserless
Browserless: Trình duyệt mạnh mẽ hỗ trợ AI giúp đơn giản hóa tương tác web của bạn
Bài viết này khám phá sự tích hợp mạnh mẽ của các tác nhân AI với Browserless để hợp lý hóa và nâng cao việc thu thập dữ liệu web.
Jan 24, 2025Robin Brown
Mục lục