Puppeteer là gì? Giải thích tự động hóa Chrome và Firefox
Trình duyệt thu thập dữ liệu không có rác cung cấp các phiên trình duyệt đám mây được quản lý mà khách hàng Puppeteer có thể sử dụng cho tự động hóa trình duyệt và quy trình làm việc dữ liệu web động.
TL;DR
- Puppeteer là một thư viện tự động hóa trình duyệt JavaScript. API cấp cao của nó điều khiển Chrome và Firefox cho việc điều hướng, đầu vào, chụp màn hình, PDF, quan sát mạng và đánh giá trang.
- Puppeteer sử dụng nhiều hơn một giao thức trình duyệt. Chrome thường sử dụng Giao thức DevTools của Chrome, trong khi tự động hóa Firefox sử dụng WebDriver BiDi theo mặc định trong tài liệu Puppeteer hiện tại.
- Gói này có thể quản lý hoặc kết nối với một trình duyệt. Một quy trình làm việc có thể khởi động một trình duyệt cục bộ tương thích, cài đặt một trình duyệt riêng hoặc kết nối với một điểm cuối từ xa được hỗ trợ.
- Puppeteer tập trung vào việc thay vì tất cả trong một. Nó cung cấp quyền kiểm soát trình duyệt nhưng để phát hiện thử nghiệm, khẳng định, tài liệu tham khảo và báo cáo cho các thư viện khác hoặc mã ứng dụng.
- Một trình duyệt không đảm bảo dữ liệu có thể sử dụng được. Các kịch bản vẫn cần các điểm dừng chờ có ý thức về trạng thái, bộ chọn ổn định, xác thực đầu ra, lưu lượng giới hạn và sự cho phép rõ ràng để truy cập mục tiêu.
Puppeteer cung cấp quyền kiểm soát trực tiếp JavaScript đối với một trình duyệt
Puppeteer là một thư viện JavaScript mã nguồn mở để điều khiển các trình duyệt được hỗ trợ thông qua một API cấp cao. Nó tiết lộ các thao tác trình duyệt, ngữ cảnh, trang, khung, đầu vào, mạng, theo dõi, chụp màn hình, PDF và đánh giá. Một kịch bản có thể khởi động một trình duyệt mà Puppeteer quản lý hoặc kết nối với một tiến trình trình duyệt tương thích hiện có. Bởi vì API là JavaScript-first và ánh xạ gần gũi với các khái niệm trình duyệt, nó phù hợp với các dịch vụ Node.js, công cụ dòng lệnh, trình thu thập thông tin, hệ thống chụp hình trực quan và giàn thử nghiệm tùy chỉnh.
giới thiệu chính thức về Puppeteer trình bày Puppeteer như một thư viện JavaScript cho tự động hóa Chrome và Firefox. Các mô tả trước đây thường giảm Puppeteer xuống Chromium không đầu, nhưng điều đó giờ đây không đầy đủ. Chrome không đầu vẫn là một trường hợp sử dụng chính, nhưng hỗ trợ trình duyệt hiện tại và công việc giao thức bao gồm cả Firefox. Các nhóm nên sử dụng bảng tương thích hiện tại thay vì lặp lại định nghĩa lịch sử khi chọn trình duyệt hoặc thiết kế một quá trình di chuyển.
Trình duyệt, Ngữ cảnh, Trang và Giao thức hoạt động cùng nhau
Đối tượng Trình duyệt sở hữu quy trình hoặc kết nối từ xa. BrowserContext tách cookies và lưu trữ cho các phiên độc lập. Trang đại diện cho một tab và cung cấp điều hướng, truy vấn DOM, định vị, sự kiện, chụp màn hình và thực thi kịch bản. Phía dưới API cấp cao, một giao thức vận chuyển lệnh và sự kiện. Tự động hóa Chrome thường sử dụng CDP, trong khi WebDriver BiDi cung cấp một con đường dựa trên sự kiện xuyên trình duyệt mà Puppeteer sử dụng cho Firefox và có thể sử dụng với Chrome cho các tính năng được hỗ trợ.
hướng dẫn chính thức về Puppeteer WebDriver BiDi giải thích sự hỗ trợ WebDriver BiDi của Puppeteer và lưu ý rằng các thao tác không được hỗ trợ có thể tạo ra lỗi UnsupportedOperation. Ranh giới đó quan trọng trong việc chọn giao thức: CDP tiết lộ một bề mặt đặc thù với Chrome sâu sắc, trong khi BiDi nhằm mục tiêu kiểm soát xuyên trình duyệt tiêu chuẩn nhưng vẫn đang phát triển. Kiểm tra các tính năng chính xác—chặn mạng, tải xuống, giả lập, theo dõi, mở rộng, hoặc quản lý trình duyệt—trên giao thức và trình duyệt cần thiết cho dự án.
- Trình duyệt. Khởi động hoặc kết nối với một quy trình trình duyệt và quản lý toàn bộ vòng đời.
- BrowserContext. Tạo một cookie, bộ nhớ cache và ranh giới lưu trữ tách biệt bên trong trình duyệt.
- Trang. Đại diện cho một tab và tiết lộ điều hướng, đầu vào, đánh giá, mạng, và các thao tác chụp.
- phiên CDP. Cung cấp quyền truy cập cấp thấp hơn vào các miền Giao thức DevTools của Chrome khi API cấp cao không đủ.
- kết nối WebDriver BiDi. Cung cấp một con đường tiêu chuẩn dựa trên sự kiện cho các thao tác được hỗ trợ xuyên trình duyệt.
Puppeteer có thể khởi động, cài đặt, hoặc kết nối
Gói Puppeteer đầy đủ thường quản lý tải xuống trình duyệt tương thích, điều này làm cho một dự án cục bộ dễ dàng bắt đầu nhưng làm tăng kích thước cài đặt. Puppeteer Core bỏ qua trình duyệt được quản lý và hữu ích khi tệp thực thi trình duyệt hoặc dịch vụ từ xa được cung cấp riêng. Kết nối từ xa giữ quy trình điều khiển Node.js cục bộ trong khi thực thi trình duyệt xảy ra trên một máy chủ khác. Mỗi cách tiếp cận thay đổi ai sở hữu các phiên bản trình duyệt, đường dẫn tệp thực thi, cài đặt sandbox, phụ thuộc hệ điều hành và dọn dẹp.
bảng trình duyệt hỗ trợ chính thức của Puppeteer công bố ánh xạ giữa các phiên bản Puppeteer và các phiên bản Chrome và Firefox được hỗ trợ. Ánh xạ đó là hoạt động, không phải trò giải trí. Định vị gói trong khi lặng lẽ thay đổi trình duyệt có thể tạo ra các tổ hợp không được hỗ trợ, và nâng cấp gói có thể thay đổi trình duyệt đã tải xuống. Các container và hình ảnh CI nên ghi lại cả hai bên. Một dịch vụ từ xa nên tiết lộ đủ thông tin môi trường để tái tạo một hành vi quan sát trong sản xuất.
Lựa chọn Puppeteer ảnh hưởng đến quyền sở hữu và khả năng di động
API trang giống nhau có thể ngồi trên các mô hình cài đặt và giao thức khác nhau, nhưng những mô hình đó không có bảo trì hoặc ranh giới tính năng giống nhau.
| Lựa chọn | Hiệu ứng hoạt động |
|---|---|
| Gói Puppeteer | Bao gồm hành vi quản lý trình duyệt và thuận tiện khi dự án muốn Puppeteer sở hữu một trình duyệt cục bộ tương thích. |
| Puppeteer Core | Để việc cài đặt và vòng đời của trình duyệt cho dự án hoặc nhà cung cấp từ xa, giảm thiểu giả định trong việc đóng gói thư viện. |
| Khởi động cục bộ | Ứng dụng sở hữu các phụ thuộc hệ điều hành, quy trình trình duyệt, cấu hình sandbox, tài nguyên và dọn dẹp. |
| Kết nối từ xa | Một dịch vụ sở hữu việc lưu trữ trình duyệt trong khi ứng dụng giữ lại logic Puppeteer và phải xác minh hỗ trợ tính năng từ xa. |
| CDP | Cung cấp kiểm tra và điều khiển cụ thể trên Chrome và là đường dẫn mặc định cho Chrome trong Puppeteer. |
| WebDriver BiDi | Cung cấp các lệnh và sự kiện đa trình duyệt cho các tính năng được hỗ trợ và là đường dẫn mặc định cho Firefox trong Puppeteer. |
Các trường hợp sử dụng Puppeteer được hưởng lợi từ một API tập trung
Puppeteer phù hợp với các dự án muốn các nguyên lý trình duyệt bên trong một ứng dụng JavaScript mà không áp dụng một kiến trúc kiểm tra đã chỉ định.
Trích xuất trang động
Puppeteer có thể kết xuất các ứng dụng của khách hàng, thực hiện các tương tác được phép và trích xuất thông tin công khai có cấu trúc từ DOM hoặc các phản hồi quan sát được.
Dịch vụ chụp màn hình và PDF
Một dịch vụ Node.js có thể tải các trang được kiểm soát, áp dụng các thiết lập viewport và media, và tạo ra các vật phẩm hình ảnh hoặc có thể in.
Khung thử nghiệm tùy chỉnh
Các đội ngũ với một trình chạy JavaScript hiện có có thể thêm điều khiển trình duyệt trong khi giữ lại các tập tin, khẳng định, báo cáo và lịch trình riêng của họ.
Chẩn đoán trình duyệt
Truy cập CDP, theo dõi, sự kiện console, dữ liệu hiệu suất và kiểm tra mạng có thể hỗ trợ gỡ lỗi và giám sát tổng hợp.
Puppeteer để lại Kiến trúc và Năng lực thử nghiệm cho Dự án
Puppeteer không chỉ định một trình chạy, thư viện khẳng định, mô hình tập tin hoặc định dạng báo cáo. Điều đó hữu ích cho việc nhúng tự động hóa vào trong một ứng dụng, nhưng một đội thử nghiệm phải lắp ráp và duy trì những lớp đó. Các quy trình trình duyệt cũng tiêu tốn tài nguyên vật chất, và một quy trình Node.js có thể tạo ra quá nhiều trang trước khi mã trở nên phức tạp. Định nghĩa tập hợp trình duyệt và ngữ cảnh một cách cẩn thận, đóng nguồn lực theo cách xác định, và cách ly tài khoản hoặc thị trường không nên chia sẻ lưu trữ.
Tài liệu giao thức Chrome DevTools tài liệu về Giao thức Chrome DevTools như là giao diện được sử dụng để lập trình, kiểm tra, gỡ lỗi và phân tích Chrome. Độ sâu của CDP là quý giá, nhưng các lệnh cụ thể trên Chrome làm giảm khả năng di động. Giữ các cuộc gọi giao thức cấp thấp ẩn sau một bộ điều hợp nhỏ, tài liệu lý do tại sao chúng cần thiết, và cung cấp một hành vi rõ ràng khi quy trình làm việc giống nhau chạy qua WebDriver BiDi hoặc trình duyệt khác.
Danh sách kiểm tra Sẵn sàng Dự án Puppeteer
Các quyết định quan trọng là quyền sở hữu trình duyệt, giao thức, phạm vi ngữ cảnh, bằng chứng và các lớp khung mà Puppeteer cố ý để lại mở.
- Chọn trình duyệt từ các yêu cầu. Xác nhận xem Chrome một mình có đủ hay hành vi của Firefox có quan trọng không. Sử dụng bảng trình duyệt được hỗ trợ hiện tại và chạy các tổ hợp chính xác trước khi cam kết vào một ma trận.
- Chọn quyền sở hữu gói. Sử dụng gói đầy đủ khi Puppeteer nên quản lý một trình duyệt tương thích, hoặc Puppeteer Core khi các container, gói hệ thống, hoặc một dịch vụ từ xa sở hữu trình duyệt.
- Xác định các phụ thuộc giao thức. Liệt kê mỗi cuộc gọi CDP trực tiếp và mỗi tính năng được mong đợi qua WebDriver BiDi. Giữ hành vi cụ thể trên trình duyệt rõ ràng thay vì ẩn nó bên trong các trình trợ giúp chung chung.
- Mục đích ngữ cảnh một cách có chủ ý. Sử dụng các ngữ cảnh riêng biệt cho các cookie và lưu trữ độc lập. Một ngữ cảnh chia sẻ chỉ phù hợp khi quy trình làm việc dự định tiếp tục một danh tính hoặc trạng thái.
- Chờ đợi các điều kiện có ý nghĩa. Liên kết tiến độ với các bộ chọn, phản hồi, thay đổi URL, kết quả hàm, hoặc trạng thái quan sát được khác. Các độ trễ cố định không nên gánh vác gánh nặng đồng bộ hóa chính.
- Lắp ráp ngăn thử nghiệm. Nếu dự án là một bộ thử nghiệm, hãy đặt tên cho trình chạy, thư viện khẳng định, các tập tin, báo cáo và chính sách vật phẩm bao quanh Puppeteer.
- Đo lường năng lực trình duyệt. Theo dõi bộ nhớ quy trình, các trang hoạt động, chi phí khởi động, thời gian phiên, khối lượng mạng, và tính đồng thời của máy chủ mục tiêu trước khi tăng số lượng nhân.
- Xác thực nội dung đầu ra. Kiểm tra các URL cuối cùng, các trường mong đợi, ngôn ngữ trang, số lượng bản ghi, và loại trang. Một điều hướng thành công vẫn có thể dừng lại trên một màn hình đồng ý hoặc một shell ứng dụng chưa hoàn thành.
Sử dụng Puppeteer Với Scrapeless Scraping Browser
Scrapeless Scraping Browser có thể lưu trữ một phiên trình duyệt mà một khách hàng Puppeteer kết nối thông qua một điểm cuối từ xa được hỗ trợ. Ứng dụng giữ các hoạt động trang Puppeteer quen thuộc trong khi Scrapeless sở hữu quy trình trình duyệt đám mây, cài đặt phiên và đường dẫn mạng đã cấu hình.
Xác minh điểm cuối hiện tại, gói khách hàng được hỗ trợ, điều khiển phiên và bề mặt tính năng từ xa trước khi di chuyển một quy trình làm việc sản xuất. Xem xét hiện tại Tổng quan sản phẩm Scrapeless Scraping Browser, tài liệu bắt đầu sử dụng Scrapeless Scraping Browser, và giá Scrapeless trước khi chọn một mô hình vận hành.
Kết luận: Puppeteer là một Thư viện Điều khiển Trình duyệt Tập trung
Puppeteer cung cấp cho các ứng dụng JavaScript một cách trực tiếp, cấp cao để điều khiển Chrome và Firefox. Nó có thể khởi động các trình duyệt tương thích, kết nối với các phiên từ xa, làm việc qua CDP và sử dụng WebDriver BiDi cho các thao tác chéo trình duyệt được hỗ trợ. API tập trung giúp dễ dàng nhúng hành vi của trình duyệt vào các hệ thống tùy chỉnh.
Sự tập trung đó cũng để lại những quyết định quan trọng cho dự án. Kiểm soát phiên bản trình duyệt, đưa ra các giả định giao thức một cách rõ ràng, cô lập trạng thái ngữ cảnh, chọn cách chờ dựa trên điều kiện, xác thực trang được trả về và lắp ráp một ngăn xếp kiểm tra khi kiểm thử là công việc.
Sẵn sàng để chạy Puppeteer trên đám mây?
Tạo một tài khoản Scrapeless và kiểm tra một quy trình Puppeteer có giới hạn trong một phiên trình duyệt được quản lý trước khi chuyển sang dịch vụ tự động hóa lớn hơn.
Bắt đầu miễn phí →Câu hỏi thường gặp
Puppeteer có hỗ trợ Firefox không?
Có. Tài liệu Puppeteer hiện tại liệt kê hỗ trợ cho Chrome và Firefox. Firefox sử dụng WebDriver BiDi theo mặc định, trong khi Chrome thường sử dụng CDP. Phạm vi tính năng có thể khác nhau tùy thuộc vào trình duyệt và giao thức, vì vậy hãy kiểm tra mọi thao tác cần thiết thay vì giả định hành vi giống nhau.
Puppeteer có chỉ dành cho Chrome không giao diện?
No. Puppeteer có thể chạy các trình duyệt được hỗ trợ ở chế độ không giao diện hoặc có giao diện và hiện đã bao phủ Chrome và Firefox. Mô tả "thư viện Chrome không giao diện" trong lịch sử bỏ lỡ hỗ trợ trình duyệt hiện tại và WebDriver BiDi.
Sự khác biệt giữa Puppeteer và Puppeteer Core là gì?
Gói Puppeteer đầy đủ bao gồm hành vi quản lý trình duyệt và thường làm việc với một trình duyệt được quản lý tương thích. Puppeteer Core là thư viện không có quyền sở hữu trình duyệt đó và phù hợp với các dự án cung cấp một tập tin thực thi, hình ảnh container, hoặc dịch vụ trình duyệt từ xa một cách riêng biệt.
Puppeteer có thể được sử dụng cho việc thu thập dữ liệu web không?
Có. Puppeteer có thể tạo ra các trang JavaScript, tương tác với các điều khiển công khai được phép, kiểm tra DOM và quan sát phản hồi. Chỉ sử dụng nó khi việc thi hành trình duyệt thay đổi dữ liệu có sẵn; việc thu thập HTTP trực tiếp đơn giản hơn khi phản hồi ban đầu là đủ.
Puppeteer có bao gồm một bộ chạy thử nghiệm không?
Không có trình chạy đơn lẻ nào được yêu cầu hoặc đóng gói như kiến trúc kiểm tra hoàn chỉnh. Các nhóm thường kết hợp Puppeteer với một trình chạy kiểm tra JavaScript, thư viện khẳng định, thiết lập, và công cụ báo cáo, hoặc nhúng nó vào một ứng dụng tùy chỉnh sở hữu việc lập lịch và xử lý kết quả.