Chromium là gì?
Scrapeless Agent Browser cung cấp các phiên trình duyệt dựa trên Chromium được quản lý cho các quy trình tự động hóa và nội dung web động.
Chromium là một dự án và mã nguồn mở của trình duyệt được dùng làm nền tảng cho các trình duyệt bao gồm Google Chrome. Chromium bao gồm cơ chế lấy tài nguyên, thực thi JavaScript, dàn trang tài liệu, vẽ nội dung và duy trì trạng thái trình duyệt. Nó rộng hơn một engine render và khác với một thư viện tự động hóa dùng để ra lệnh cho trình duyệt phải làm gì.
Đối với nhà phát triển, Chromium thường là môi trường mà một ứng dụng web thực sự chạy trong đó. Một scraper có thể gửi lệnh từ máy chủ, nhưng trình duyệt quyết định cách tài liệu trở thành một trang tương tác. Hiểu runtime giúp giải thích vì sao một phản hồi HTTP thuần khác với DOM đã render, vì sao trình duyệt dùng nhiều tiến trình, và vì sao một bản cập nhật có thể thay đổi kết quả tự động hóa.
Những gì thuộc về Chromium
Chromium là một dự án trình duyệt hoàn chỉnh chứa nhiều hệ thống con phối hợp với nhau. Dự án trình duyệt mã nguồn mở của nó bao gồm tài liệu kiến trúc, mã nguồn và tài nguyên phát triển chứ không chỉ là một ứng dụng trình duyệt có thể tải về.
Engine render xử lý cấu trúc, kiểu dáng và bố cục trang. Engine JavaScript thực thi các script của ứng dụng. Các thành phần cấp trình duyệt điều phối điều hướng, lưu trữ, quyền truy cập, mạng và giao tiếp với các tiến trình render. Công cụ dành cho nhà phát triển cung cấp các quan sát giúp giải thích hành vi của trang.
Những trách nhiệm đó quan trọng khi chọn cách sửa lỗi. Một vấn đề selector thuộc về tài liệu hoặc logic tự động hóa. Một font bị thiếu có thể thay đổi hình dạng văn bản. Một hộp thoại xin quyền thay đổi đường đi tương tác. Một yêu cầu tài nguyên thất bại có thể khiến phần khung trang vẫn hiển thị trong khi dữ liệu ứng dụng hữu ích không bao giờ xuất hiện.
Gọi mọi vấn đề là “lỗi Chromium” che khuất hệ thống con cần được chú ý. Hãy giữ lại bằng chứng xác định ranh giới lỗi: kết quả điều hướng, trạng thái tài nguyên, lỗi console, danh tính frame, phần tử đã chọn hoặc bản ghi cuối cùng. Quan sát đúng thường biến một vấn đề lớn ở trình duyệt thành một vấn đề nhỏ ở ứng dụng.
Tại sao Chromium sử dụng nhiều tiến trình
Chromium sử dụng nhiều tiến trình để tách biệt trách nhiệm và hỗ trợ ranh giới về độ tin cậy và bảo mật. Kiến trúc đa tiến trình của Chromium mô tả sự phối hợp giữa các tiến trình trình duyệt và renderer cùng vai trò của sandboxing.
Một tiến trình trình duyệt điều phối công việc cấp cao hơn, trong khi các tiến trình renderer xử lý nội dung web. Các loại tiến trình khác có thể hỗ trợ các tác vụ như đồ họa và tiện ích. Ánh xạ chính xác giữa tab, site, frame và tiến trình là một chi tiết triển khai bị ảnh hưởng bởi cấu hình và chính sách tách biệt của trình duyệt. Đừng cho rằng một tab luôn tương ứng chính xác với một tiến trình hệ điều hành.
Điều này giải thích một sai lầm thường gặp về quản lý tài nguyên. Chỉ đếm tiến trình trình duyệt cấp cao có thể đánh giá thấp khối lượng công việc. Một máy chủ tự động hóa cần tính đến cả nhóm tiến trình và các trang mà nó mở, bao gồm tài liệu nhúng và hoạt động ứng dụng sau khi điều hướng.
Nó cũng giải thích vì sao đóng đúng tài nguyên là quan trọng. Một công việc đã hoàn tất việc trích xuất văn bản vẫn có thể để lại trang hoặc tiến trình trình duyệt đang chạy. Hãy lập kế hoạch dọn dẹp vòng đời tại ranh giới mà ứng dụng của bạn thực sự sở hữu, và xác nhận rằng hành vi giải phóng của dịch vụ từ xa khớp với thao tác phía client mà bạn sử dụng.
Cách HTML nguồn trở thành một trang đã render
Chromium biến tài nguyên đã tải xuống thành một trang thông qua việc phân tích cú pháp, thực thi script, tính toán style, layout và render. Những hoạt động này tương tác với nhau; phản hồi điều hướng ban đầu chỉ là một phần của kết quả.
Một HTTP client có thể nhận một tài liệu chứa một tiêu đề và một vùng chứa ứng dụng trống. Chromium sau đó có thể thực thi các script yêu cầu dữ liệu và tạo các thẻ sản phẩm bên trong vùng chứa đó. Một bộ phân tích chỉ nhìn vào phản hồi ban đầu sẽ đúng khi báo cáo rằng không có thẻ sản phẩm nào, dù trình duyệt sau đó hiển thị chúng.
Tài liệu có thể tiếp tục thay đổi sau sự kiện load của trình duyệt. Ứng dụng có thể tải thêm dữ liệu, thay thế các điều khiển, hoặc trì hoãn ảnh cho đến khi chúng tiến gần vùng hiển thị. Hãy chọn một điều kiện sẵn sàng mô tả nội dung bắt buộc. Một danh sách kết quả hiển thị được, biểu đồ đã hoàn tất hoặc hành động đã được bật có ý nghĩa hơn giả định chung rằng mọi công việc trên trang đã dừng.
Rendering cũng phụ thuộc vào môi trường. Kích thước viewport ảnh hưởng đến bố cục responsive. Font ảnh hưởng đến việc xuống dòng. Tỷ lệ thiết bị ảnh hưởng đến đầu ra raster hóa. Ngôn ngữ và các thiết lập khác có thể thay đổi nội dung hiển thị. Hãy ghi lại các đầu vào quan trọng đối với kết quả mong đợi thay vì xem ảnh chụp màn hình như một sự thật không phụ thuộc môi trường.
Chromium, Chrome và các client tự động hóa
Chromium cung cấp công nghệ trình duyệt; Chrome là một sản phẩm trình duyệt được xây dựng trên nền tảng đó. Các client tự động hóa cung cấp giao diện lập trình để điều khiển các môi trường trình duyệt được hỗ trợ. Những tên này thuộc về các lớp khác nhau trong stack.
Một chương trình Puppeteer hoặc Playwright có thể điều hướng và kiểm tra một trình duyệt, nhưng bản thân thư viện không thay thế renderer, ngăn xếp mạng hoặc lưu trữ của trình duyệt. Một giao thức điều khiển trình duyệt mang các chỉ thị giữa những thành phần đó. Giao diện điều khiển trình duyệt WebDriver là một ví dụ dựa trên tiêu chuẩn cho dạng hợp đồng như vậy.
Một dịch vụ trình duyệt được quản lý bổ sung thêm một lớp nữa bằng cách vận hành môi trường thực thi từ xa. Di chuyển việc thực thi sang dịch vụ đó có thể thay đổi quyền truy cập hệ thống tệp, độ trễ kết nối, giới hạn phiên và việc phân phối kết quả. Nó không loại bỏ trách nhiệm của ứng dụng trong việc chọn đúng tài liệu và kiểm tra tính hợp lệ của dữ liệu.
| Lớp | Trách nhiệm chính | Câu hỏi chẩn đoán điển hình |
|---|---|---|
| Môi trường thực thi của trình duyệt | Thực thi và kết xuất trang | Ứng dụng có thực sự kết xuất không? |
| Client tự động hóa | Diễn đạt các hành động và quan sát | Locator có nhắm đúng control dự định không? |
| Giao thức điều khiển | Truyền các lệnh và sự kiện được hỗ trợ | Kết nối có hỗ trợ thao tác này không? |
| Môi trường lưu trữ | Vận hành tài nguyên của trình duyệt | Phiên có vẫn còn khả dụng không? |
Thực thi headless Vẫn Chạy Một Trình Duyệt
Thực thi headless chạy công việc của trình duyệt mà không có giao diện trình duyệt hiển thị như bình thường. Nó vẫn khác với việc tải HTML bằng một client yêu cầu đơn giản. JavaScript, bố cục, lưu trữ, frame và các sự kiện trang vẫn quan trọng.
Một job headless có thể tạo ảnh chụp màn hình hoặc kiểm tra các phần tử đã được kết xuất ngay cả khi không có cửa sổ desktop nào. Việc thiếu một cửa sổ hiển thị không khiến mọi kết quả đều độc lập với thiết lập đồ họa hoặc cấu hình trình duyệt. Đầu ra trực quan vẫn cần một viewport và điều kiện hoàn tất được xác định rõ.
Thực thi headful có thể hữu ích trong quá trình chẩn đoán vì nhà phát triển có thể quan sát điều hướng, lời nhắc và các thay đổi trạng thái. Quan sát đó là bằng chứng hữu ích, nhưng nó nên dẫn đến một điều kiện rõ ràng trong quy trình tự động. Việc con người nhận ra rằng một trang “có vẻ đã sẵn sàng” vẫn chưa phải là một quy tắc hoàn tất có thể kiểm tra bằng máy.
Tránh đánh đồng thực thi headless với khả năng phát hiện được đảm bảo hoặc khả năng ẩn mình được đảm bảo. Website có thể quan sát nhiều tín hiệu ngoài việc một cửa sổ trình duyệt có hiển thị hay không. Hãy mô tả cấu hình thực tế và hành vi mục tiêu thay vì đưa ra tuyên bố bao quát về mọi trình duyệt headless.
Bản dựng trình duyệt Là Một Phần Của Tính Tái Lập
Bản dựng trình duyệt là một đầu vào cho một quy trình làm việc Chromium có thể tái lập. Các bản cập nhật có thể ảnh hưởng đến hành vi nền tảng web, việc kết xuất, chính sách bảo mật và tương tác giữa trình duyệt với client tự động hóa của nó.
Đối với một bài kiểm tra có kiểm soát, hãy ghi lại phiên bản trình duyệt và client cùng với cấu hình liên quan. So sánh một bản cập nhật bằng cách sử dụng một tập nhỏ các trang đại diện: một tài liệu tĩnh, một giao diện điều khiển bằng JavaScript, một frame nhúng và bất kỳ tương tác nào mà ứng dụng của bạn phụ thuộc vào. Tập này nên đại diện cho khối lượng công việc, thay vì một điểm số chung chung.
Tách trôi nội dung khỏi trôi trình duyệt. Nếu một site từ xa thay đổi HTML trong khi trình duyệt được nâng cấp, một selector bị lỗi sẽ không chỉ rõ nguyên nhân. Hãy giữ một bộ fixture kiểm thử có giới hạn trên một site bạn kiểm soát khi bạn cần tách biệt hành vi kết xuất hoặc giao thức khỏi các thay đổi do ứng dụng bên ngoài thực hiện.
Đừng đóng băng một trình duyệt vô thời hạn chỉ để giữ cho ảnh chụp màn hình cũ không thay đổi. Hãy coi các bản cập nhật là một thay đổi được quản lý: xác minh các kết quả quan trọng, kiểm tra khác biệt và lưu lại bản ghi về môi trường thực thi đã dùng. Việc bảo trì bảo mật và sự ổn định kết quả đều cần một quy trình rõ ràng.
Đánh giá Khối lượng Công việc Chromium trong Scrapeless
Scrapeless Agent Browser cung cấp một môi trường được quản lý cho tự động hóa trình duyệt. Việc thực thi trình duyệt được quản lý có thể liên quan khi việc vận hành Chromium cục bộ trở thành một tác vụ cơ sở hạ tầng riêng. Nền tảng Agent Browser mô tả các khả năng sản phẩm hiện có.
Hãy sử dụng môi trường đó cho một yêu cầu được xác định, chẳng hạn như kết xuất một trang động đã được phê duyệt hoặc chạy một quy trình trình duyệt nhiều bước. Xác định trạng thái nào cần được duy trì, cách client kết nối và bằng chứng chẩn đoán nào có sẵn trước khi tăng kích thước khối lượng công việc. Lưu trữ trình duyệt từ xa không biến một bản ghi chưa đầy đủ thành một bản ghi hợp lệ.
Phần thảo luận về dấu vân tay trình duyệt Node.js cung cấp ngữ cảnh client liên quan. Xem lại bảng giá Scrapeless so với thời gian tồn tại trình duyệt và mức sử dụng tài nguyên dự kiến; bài viết này không khẳng định có lợi thế đo được về chi phí hoặc hiệu năng.
Kết luận
Chromium là môi trường thực thi trình duyệt đứng sau phần lớn ngăn xếp tự động hóa web. Hãy chẩn đoán nó bằng cách theo dõi trang qua việc tải tài nguyên, thực thi script, trạng thái tài liệu và bắt lấy đầu ra. Giữ riêng biệt trách nhiệm của môi trường thực thi, client, giao thức và môi trường lưu trữ, và ghi lại các đầu vào môi trường cần thiết để tái lập kết quả mà bạn quan tâm.
Đưa Các Khái Niệm Trình Duyệt Vào Thực Tiễn
Khám phá một quy trình trình duyệt được ủy quyền với Scrapeless Agent Browser, sau đó kiểm chứng trạng thái trang và đầu ra mà tác vụ của bạn yêu cầu.
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.
Nhận $5 Tín Dụng Của Bạn →FAQ
Chromium có giống Google Chrome không?
Chromium là một dự án trình duyệt mã nguồn mở, trong khi Google Chrome là một sản phẩm trình duyệt được xây dựng trên nền tảng đó. Các sản phẩm có thể khác nhau về cách đóng gói, dịch vụ và phân phối, vì vậy hãy ghi lại trình duyệt thực tế được sử dụng trong một quy trình.
Chromium chỉ là một engine kết xuất thôi sao?
Chromium là nhiều hơn một công cụ render. Dự án bao gồm điều phối ở cấp độ trình duyệt, mạng, lưu trữ, cơ chế bảo mật, công cụ dành cho nhà phát triển và các thành phần khác cần thiết để chạy các ứng dụng web tương tác.
Một HTTP client có tạo ra cùng kết quả như Chromium không?
Một HTTP client không nhất thiết tạo ra cùng kết quả như Chromium vì có thể nó không thực thi các script trên trang hoặc không thực hiện việc dàn trang (layout) của trình duyệt. Hãy dùng phương pháp đơn giản nhất có thể tạo ra nội dung yêu cầu một cách chính xác.
Tại sao ảnh chụp màn hình Chromium có thể thay đổi giữa các lần chạy?
Ảnh chụp màn hình Chromium có thể thay đổi vì cài đặt viewport, phông chữ, nội dung được cập nhật, trạng thái tải, bản dựng trình duyệt hoặc trạng thái ứng dụng. Chỉ so sánh hình ảnh sau khi đã kiểm soát các đầu vào liên quan đến kết quả hiển thị.