close

Hướng dẫn cách sử dụng n8n và Puppeteer chi tiết A-Z

Tác giả: Đông Tùng Ngày cập nhật: 04/12/2025 Chuyên mục: n8n
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Wiki.tino.org có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Trong kỷ nguyên dữ liệu, nhu cầu thu thập thông tin và tự động hóa các tác vụ trên trình duyệt ngày càng trở nên cấp thiết. Tuy nhiên, các phương pháp gửi HTTP Request truyền thống thường gặp khó khăn khi đối mặt với những trang web sử dụng nhiều JavaScript hoặc yêu cầu tương tác phức tạp như đăng nhập và điền biểu mẫu. Sự kết hợp giữa n8n và Puppeteer chính là chìa khóa để giải quyết triệt để thách thức này. Bài viết dưới đây sẽ hướng dẫn bạn cách sử dụng n8n và Puppeteer chi tiết A-Z.

Tổng quan về Puppeteer

Puppeteer là gì?

Puppeteer là một thư viện Node.js mạnh mẽ được phát triển bởi đội ngũ Google, cung cấp một API cấp cao để điều khiển trình duyệt Chrome hoặc Chromium thông qua giao thức DevTools. Công cụ này hoạt động chủ yếu ở chế độ “headless” (không giao diện người dùng), cho phép thực thi tự động các tác vụ web mà không cần hiển thị cửa sổ trình duyệt thực tế trên màn hình.

Puppeteer là gì?
Puppeteer là gì?

Nhờ khả năng tương tác sâu vào cấu trúc trang web, Puppeteer trở thành giải pháp tiêu chuẩn để thực hiện các công việc như thu thập dữ liệu (crawling), chụp ảnh màn hình, tạo file PDF từ trang web hoặc tự động hóa các thao tác kiểm thử giao diện phức tạp với độ chính xác và hiệu suất cao.

Tại sao nên kết hợp n8n và Puppeteer trong tự động hóa?

  • Vượt qua rào cản của website động: Các node HTTP Request mặc định trong n8n chỉ tải được mã nguồn HTML tĩnh và thường bất lực trước các trang web Single Page Application (SPA) viết bằng React, Vue hay Angular. Puppeteer giải quyết triệt để vấn đề này bằng cách đóng vai trò như một trình duyệt thực thụ, cho phép render toàn bộ JavaScript và tải đầy đủ nội dung trước khi trích xuất dữ liệu.
  • Thực hiện các tương tác người dùng phức tạp: Nhiều quy trình nghiệp vụ yêu cầu nhiều hơn việc chỉ lấy dữ liệu, ví dụ như tự động điền biểu mẫu, cuộn trang để tải thêm nội dung, xử lý đăng nhập có xác thực hoặc click vào các nút cụ thể. Puppeteer cung cấp khả năng điều khiển chi tiết từng hành vi chuột và bàn phím, giúp n8n thực thi các kịch bản mô phỏng hành vi con người một cách mượt mà.
  • Trực quan hóa luồng dữ liệu và xử lý logic: Thay vì phải viết hàng trăm dòng mã để quản lý luồng dữ liệu, xử lý lỗi hay lập lịch chạy, n8n cung cấp giao diện kéo thả trực quan để quản lý các tác vụ này. Người dùng chỉ cần sử dụng Puppeteer cho phần xử lý trình duyệt, sau đó chuyển giao dữ liệu thu được cho n8n để tiếp tục các bước như lọc thông tin, lưu vào Google Sheets, gửi thông báo qua Telegram hoặc kết nối với hàng ngàn ứng dụng khác.
  • Tối ưu hóa khả năng Bypass Anti-bot: Các website hiện đại thường có cơ chế phát hiện bot dựa trên User-Agent hoặc dấu vân tay trình duyệt (browser fingerprint). Khi sử dụng Puppeteer kết hợp với các plugin hỗ trợ (như puppeteer-extra-plugin-stealth), hệ thống có thể giả lập các thông số giống hệt người dùng thật, giúp giảm thiểu rủi ro bị chặn IP hoặc bị yêu cầu nhập CAPTCHA trong quá trình vận hành tự động.
Tại sao nên kết hợp n8n và Puppeteer trong tự động hóa?
Tại sao nên kết hợp n8n và Puppeteer trong tự động hóa?

Hướng dẫn cách sử dụng n8n và Puppeteer

Cài đặt Community Node Puppeteer

Thay vì viết code thủ công, cộng đồng n8n đã phát triển sẵn node chuyên dụng cho Puppeteer giúp thao tác kéo thả dễ dàng hơn.

Xem Thêm:  Hướng dẫn cách cài đặt n8n trên máy tính PC bằng Docker Desktop chi tiết A-Z

Bước 1: Tại giao diện n8n, truy cập menu Settings (Cài đặt).

Cài đặt Community Node Puppeteer
Cài đặt Community Node Puppeteer

Bước 2: Chọn mục Community Nodes rồi nhấn nút Install

Cài đặt Community Node Puppeteer
Cài đặt Community Node Puppeteer

Bước 3: Nhập tên gói: n8n-nodes-puppeteer.

Đánh dấu đồng ý với các điều khoản rủi ro và nhấn Install.

Cài đặt Community Node Puppeteer
Cài đặt Community Node Puppeteer

Sau khi quá trình cài đặt hoàn tất, người dùng sẽ thấy node Puppeteer xuất hiện trong danh sách công cụ.

Xây dựng workflow mẫu

Chúng ta sẽ thực hiện một ví dụ đơn giản: Truy cập vào trang chủ Google và chụp màn hình (Screenshot).

Bước 1: Tạo Trigger

Kéo node Trigger Manual (hoặc “On clicking ‘Execute'”) vào khung làm việc. Node này đóng vai trò nút khởi động thủ công để kiểm tra quy trình.

Bước 2: Cấu hình node Puppeteer – Mở trình duyệt

Tìm và kéo node Puppeteer nối vào sau Trigger (chọn Get Screenshot)

Cấu hình node Puppeteer
Cấu hình node Puppeteer

Trong bảng cấu hình, thiết lập như sau:

  • Operation: Giữ nguyên Get Screenshot
  • URL: Nhập https://www.google.com.
  • Property Name: Data
  • Type: PNG (hoặc JEPG).
  • Full Page:
  • Nếu chọn True: Hệ thống sẽ cuộn và chụp toàn bộ chiều dài trang web (thích hợp với các trang báo chí dài).
  • Nếu chọn False: Hệ thống chỉ chụp phần màn hình hiển thị đầu tiên.
Cấu hình node Puppeteer
Cấu hình node Puppeteer

Bước 3: Thực thi và kiểm tra (Execution)

Nhấn nút Execute step và quan sát kết quả đầu ra ở khung Output bên phải.

Lưu ý:

  • Mặc định n8n thường để chế độ xem là JSON. Với thao tác chụp ảnh, vùng này sẽ trống hoặc chỉ hiện thông tin meta.
  • Bạn cần bấm vào tab Binary (nằm cạnh tab JSON ở góc trên vùng Output).
  • Tại đây, bạn sẽ thấy một file hình ảnh hiện ra. Hãy bấm vào View hoặc biểu tượng con mắt để xem trực tiếp bức ảnh mà Puppeteer vừa chụp được.
Thực thi và kiểm tra
Thực thi và kiểm tra

Thực thi và kiểm tra
Thực thi và kiểm tra

Cách khắc phục lỗi môi trường cho node Puppeteer trên Docker

Mô tả lỗi: Khi thực thi Node Puppeteer lần đầu trên n8n chạy bằng Docker, người quản trị thường gặp hai thông báo lỗi phổ biến sau:

Xem Thêm:  Hướng dẫn cách tạo sub-workflow trên n8n đơn giản
  • Could not find Chrome: Hệ thống không tìm thấy trình duyệt.
  • Error loading shared library (libnss3.so, libatk…): Thiếu các thư viện hệ thống cần thiết để khởi chạy trình duyệt.
  • Operation not permitted: Lỗi xung đột quyền hạn Sandbox của Chrome và Docker.
Cách khắc phục lỗi môi trường cho node Puppeteer trên Docker
Cách khắc phục lỗi môi trường cho node Puppeteer trên Docker

Nguyên nhân: Image Docker mặc định của n8n sử dụng hệ điều hành Alpine Linux rút gọn nhằm tối ưu dung lượng, do đó không bao gồm trình duyệt Chrome và các gói thư viện đồ họa đi kèm.

Để khắc phục, chúng ta sẽ cài đặt trình duyệt Chromium phiên bản gốc (Native) dành riêng cho Alpine Linux thay vì cố gắng cài bản Chrome thông thường.

Bước 1: Cài đặt Chromium và thư viện phụ thuộc

Thay vì cài đặt thủ công từng gói, hãy sử dụng trình quản lý gói apk để cài đặt toàn bộ “combo” cần thiết (Trình duyệt + Font chữ + Thư viện).

Truy cập vào VPS qua SSH và chạy các câu lệnh sau:

Tìm tên của container n8n:

docker ps
Cài đặt Chromium và thư viện phụ thuộc
Cài đặt Chromium và thư viện phụ thuộc

Chạy lệnh cài đặt Chrome bên trong container đó:

docker exec -it -u root [TÊN_CONTAINER_CỦA_BẠN] apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont

Lưu ý:

  • Thay [TÊN_CONTAINER_CỦA_BẠN] bằng tên thực tế đã tìm được bằng lệnh ở trên (ví dụ: root_n8n_1 hoặc n8n_1).
  • Lệnh này thực hiện dưới quyền root để đảm bảo quyền ghi vào thư mục hệ thống.
Cài đặt Chromium và thư viện phụ thuộc
Cài đặt Chromium và thư viện phụ thuộc

Bước 2: Cấu hình đường dẫn (Executable Path) trong n8n

Sau khi cài đặt xong, n8n cần biết chính xác vị trí của trình duyệt mới.

  • Mở node Puppeteer trong giao diện n8n.
  • Kéo xuống phần Options, chọn Add Option.
  • Chọn mục Executable Path.
  • Nhập đường dẫn tuyệt đối: /usr/bin/chromium-browser
Cấu hình đường dẫn (Executable Path) trong n8n
Cấu hình đường dẫn (Executable Path) trong n8n

Bước 3: Vô hiệu hóa Sandbox (Launch Arguments)

Để trình duyệt hoạt động ổn định trong môi trường Container mà không bị chặn bởi cơ chế bảo mật, người dùng cần thiết lập các tham số khởi động.

  • Tiếp tục tại phần Options, chọn Add Option.
  • Chọn mục Launch Arguments.
  • Nhấn nút Add Argument và nhập dòng lệnh sau vào ô giá trị:
--no-sandbox
--disable-setuid-sandbox
--disable-dev-shm-usage
Vô hiệu hóa Sandbox
Vô hiệu hóa Sandbox

Để tránh việc phải cấu hình lại các bước trên mỗi khi khởi tạo lại Container (ví dụ khi chuyển server hoặc update n8n), giải pháp lâu dài là thêm biến môi trường vào file docker-compose.yml:

environment:

- PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true

Việc khai báo này giúp n8n tự động nhận diện đường dẫn trình duyệt ngay khi khởi động.

Kết luận

Hy vọng những hướng dẫn chi tiết trong bài viết đã trang bị đầy đủ kiến thức để bạn đọc tự tin triển khai các kịch bản tương tác web phức tạp. Hãy bắt tay vào thực hiện ngay hôm nay để trải nghiệm sự hiệu quả vượt trội mà hệ thống này mang lại cho công việc kinh doanh và kỹ thuật của bạn.

Xem Thêm:  So sánh n8n và AI Agent: Cuộc đối đầu hay sự cộng hưởng quyền lực?

Những câu hỏi thường gặp

Khi nào nên dùng Puppeteer thay vì node HTTP Request thông thường?

Người dùng nên ưu tiên sử dụng Puppeteer khi cần thu thập dữ liệu từ các trang web động (Dynamic Websites) được xây dựng bằng React, VueJS hoặc Angular, nơi nội dung chỉ hiển thị sau khi JavaScript đã chạy. Ngoài ra, công cụ này là lựa chọn bắt buộc nếu quy trình yêu cầu các tương tác phức tạp như: cuộn trang, click nút, chụp ảnh màn hình hoặc xuất trang web ra file PDF.

Làm thế nào để lấy chính xác một đoạn văn bản hoặc giá trị cụ thể trên trang web?

Để trích xuất dữ liệu, Puppeteer yêu cầu bạn cung cấp “CSS Selector” hoặc “XPath” của phần tử đó. Bạn thể lấy các giá trị này bằng cách nhấn chuột phải vào phần tử trên trình duyệt Chrome thật, chọn “Inspect” (Kiểm tra), sau đó sao chép đường dẫn Selector và dán vào cấu hình của node trong n8n.

Puppeteer có thể tự động điền form hoặc nhập dữ liệu vào ô tìm kiếm không?

Hoàn toàn có thể. Node Puppeteer cung cấp các thao tác như Type (Nhập liệu) hoặc Focus (Trỏ chuột). Bạn chỉ cần xác định đúng Selector của ô nhập liệu (Input field), sau đó truyền giá trị văn bản mong muốn vào. Tính năng này rất hữu ích cho các kịch bản tự động đăng ký tài khoản hoặc tìm kiếm thông tin hàng loạt.

Làm sao để xử lý các trang web tải nội dung theo dạng "Cuộn vô tận" (Infinite Scroll)?

Đối với các trang web chỉ tải thêm bài viết khi kéo xuống cuối trang, người dùng cần sử dụng tính năng thực thi mã JavaScript (Page.evaluate) bên trong Puppeteer. Bằng cách chèn một đoạn mã lệnh yêu cầu trình duyệt cuộn chuột xuống đáy và chờ đợi (Wait) một khoảng thời gian nhất định, toàn bộ nội dung sẽ được tải đầy đủ trước khi thực hiện bước cào dữ liệu.

Cách tối ưu nhất để tránh bị website phát hiện là robot?

Để giảm thiểu rủi ro bị chặn, người quản trị nên cấu hình Puppeteer sử dụng Stealth Mode (nếu có plugin hỗ trợ) hoặc tùy chỉnh User-Agent giống với trình duyệt của người dùng thật. Ngoài ra, việc thêm các khoảng thời gian chờ ngẫu nhiên (Random Delay) giữa các hành động click hoặc nhập liệu sẽ giúp hành vi của bot trở nên tự nhiên hơn.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan

Xem nhiều