Trình duyệt không đầu là gì? Họ giúp đỡ hay cản trở cuộc thám hiểm thu thập dữ liệu?
Trình duyệt không đầu là một trình duyệt web không có giao diện người dùng đồ họa (GUI). Nó không có bất kỳ cửa sổ hiển thị hoặc yếu tố giao diện người dùng nào.
Bạn chỉ cần sử dụng các tập lệnh để xử lý nội dung trang.
Điều này có nghĩa là bạn có thể nhận được lên đến tất cả các loại không tốt.
Nhưng chúng ta sẽ chỉ nói về những thứ mũ trắng ngày hôm nay.
Trình duyệt không đầu có gì đặc biệt?
- Tương tác nhanh hơn với nội dung web - có nghĩa là bạn có thể nhận được nhiều dữ liệu bạn cần hơn.
- Không yêu cầu nhiều băng thông hoặc thời gian để tải trang - có nghĩa là bạn không phải chờ đợi.
- Nghe có vẻ tuyệt vời theo kiểu Sleepy Hollow - đó là badass.
Trình duyệt không đầu được sử dụng để làm gì?
Các trình duyệt không đầu cung cấp khả năng truy cập dễ dàng vào DOM trang web (mô hình đối tượng tài liệu), rất hữu ích cho các nhà phát triển front-end sử dụng các khung JavaScript như AngularJS.
Chúng cũng thường được sử dụng để tải và chạy các trang web chức năng trên máy chủ không đầu trong quá trình kiểm tra tự động. Đây được gọi là kiểm tra trình duyệt không đầu.
Kiểm tra trình duyệt không đầu
Kiểm tra không đầu là một kỹ thuật kiểm tra tự động hóa được sử dụng để xác thực trang web. Một chương trình điều khiển trình duyệt web bằng cách sử dụng tự động hóa, tập lệnh hoặc các công cụ khác mà không hiển thị đồ họa hoặc thực thi các thành phần giao diện người dùng hiển thị. Mục tiêu của kiểm thử trình duyệt không đầu có thể bao gồm:
- Kiểm tra tính hợp lệ của đánh dấu, nội dung và kiểu trên trang HTML / XHTML.
- Xác thực web hoặc biểu mẫu đăng nhập.
- Đánh giá JavaScript cho trình xử lý sự kiện và hoạt động AJAX .
Điều này là để xác minh rằng nội dung động hiển thị trên màn hình với vị trí chính xác, v.v.
Các trình duyệt không đầu cũng hoạt động tốt với các phần mềm khác. Bên cạnh việc thử nghiệm và phát triển web, chúng có thể giúp tạo điều kiện thuận lợi cho việc thu thập dữ liệu.
Cạo trình duyệt không đầu
Cạo không đầu là một kỹ thuật trích xuất dữ liệu tự động mà bạn có thể sử dụng kết hợp với trình quét web.
Trình duyệt ở chế độ không đầu:
- Scrapes các trang web và lưu trữ dữ liệu web trong một thư mục cục bộ trên đĩa.
- Truy xuất nhiều trang từ hầu hết các trang web hiện đại.
- Bắt chước hồ sơ tác nhân người dùng cần thiết để thực hiện kết xuất javascript.
- Scrapes hiệu quả hơn với các đối số dòng lệnh.
Ví dụ: trình duyệt không đầu thường được sử dụng để thu thập dữ liệu từ các danh mục trực tuyến, thông tin giá cả từ các trang web thương mại điện tử hoặc các tiện ích / biểu tượng truyền thông xã hội được nhúng vào trang web của công ty.
Một số trình duyệt không đầu phổ biến là gì?
Chrome không đầu
Phiên bản không đầu của trình duyệt Chrome của Google.
Firefox không đầu
Một dự án Mozilla nhằm mục đích tạo ra một bản dựng không đầu của trình duyệt web mới nhất của họ với sự hỗ trợ được kích hoạt cho WebGL và JavaScript.
HtlmUnit
Một khung kiểm tra chức năng sử dụng các trình duyệt không đầu để tải và xác thực các trang web.
Trình duyệt đơn giản
Một trình duyệt không đầu được làm bằng phần mềm Net 4 có khả năng thực hiện các hoạt động tự động hóa trình duyệt. Nó không cho phép JavaScript, nhưng bạn có thể sửa đổi tác nhân người dùng, liên kết giới thiệu, tiêu đề yêu cầu, giá trị biểu mẫu và các giá trị khác trước khi gửi hoặc điều hướng.
SlimerJS
Một dự án Mozilla nhằm mục đích cho phép JavaScript và HTML5 trong một môi trường giống như hệ thống tệp. Nó sử dụng Gecko (công cụ trình duyệt đằng sau Firefox) làm cốt lõi của nó. Điều này sẽ cho phép nó hỗ trợ đầy đủ tất cả các API JavaScript (ví dụ: ngay cả khi chúng không được triển khai hoặc không đầy đủ theo một cách nào đó).
ZombieJS
Zombie cung cấp API JavaScript và sử dụng Chromium. Chromium có thể chạy trên các trang web khác nhau, nhưng nó chủ yếu được sử dụng để kiểm tra các API DOM và hành vi trang web tự động.
Làm thế nào để sử dụng duyệt web không đầu để quét web?
Mục đích của trình duyệt không đầu là tự động hóa (kiểm tra chức năng, phát triển web, v.v.). Họ cũng tạo ra các công cụ tuyệt vời để quét web do dễ sử dụng và khả năng thực hiện các tác vụ mà không cần giám sát / không có sự can thiệp của con người.
Khi sử dụng trình duyệt headless để quét web, bạn cần cung cấp cho trình duyệt một danh sách các URL và sau đó đợi nó tải vào. Khi được tải trong trình duyệt không đầu, điều này có thể được tự động hóa bằng cách gửi các lệnh trình duyệt không đầu của bạn từ dòng lệnh.
Nó cung cấp cho bạn toàn quyền kiểm soát khi nào và làm thế nào các URL được kéo vào trình duyệt không đầu của bạn.
Để quét các trang web bằng trình duyệt không đầu, bạn sẽ cần thêm thư viện vào ứng dụng của mình để trình duyệt có thể giao tiếp với chúng. Giao tiếp này có thể diễn ra thông qua dòng lệnh hoặc bằng cách kết nối với máy chủ web.
Các thư viện phổ biến nhất là:
Yêu cầu
Một thư viện Python cần thiết để tương tác với các máy chủ web bằng một yêu cầu HTTP.
JSDOM
Thư viện này cũng yêu cầu một gói gọi là jsdom-global, được sử dụng để tạo các đối tượng toàn cục cần thiết cho trình duyệt headless.
Nghệ sĩ múa rối
Thư viện con rối giúp điều khiển Chrome và Chromium dễ dàng hơn các thư viện khác như Selenium / WebDriver. Bạn có thể cài đặt nó với npm hoặc yarn trong các ứng dụng NodeJS để chạy thử nghiệm hoặc cạo dữ liệu từ các trang web. Nó cung cấp cho bạn các phương pháp để chỉ định URL, tải xuống tài nguyên, xử lý cookie, v.v.
Chúng ta cần nhớ rằng Puppeteer là một thư viện dựa trên lời hứa: Nó thực hiện các cuộc gọi không đồng bộ đến phiên bản Chrome không đầu trong khoang động cơ.
Ác mộng
Thư viện này được sử dụng cho các ứng dụng Electron. Nó cung cấp cho Electron các công cụ tự động hóa có thể được sử dụng bởi một ứng dụng để điều khiển quá trình duyệt của Electron thông qua kết nối từ xa.
Selen
Một số thư viện có sẵn cho JavaScript headless bằng cách sử dụng các ràng buộc Selenium như webdriver js và selenium-web driver.
Bạn có thể nghĩ rằng thật khó để thiết lập một thư viện, nhưng thực tế không phải vậy. Chúng ta hãy xem một ví dụ.
Hướng dẫn múa rối cơ bản
Đầu tiên, bạn cần cài đặt Puppeteer vào thư mục dự án.
Cài đặt Puppeteer
Để sử dụng Puppeteer trong trình duyệt không đầu, hãy chạy:
npm i puppeteer
# or "yarn add puppeteer"
Hoặc đối với phiên bản rút gọn của Puppeteer, hãy chạy:
npm i puppeteer-core
# or "yarn add puppeteer-core"
Như đã đề cập ở trên, tất cả các mã puppeteer chạy trong NodeJS. Bạn xuất nó dưới dạng chức năng xuất xưởng sẽ trả về một đối tượng với các phương thức để điều khiển Chrome. Bạn có thể sử dụng nó để tạo các phiên bản trình duyệt mới thông qua phương thức khởi chạy, điều hướng đến URL, xử lý sự kiện, v.v.
Đoạn mã sau đây dành cho tập lệnh Puppeteer.
Nếu bạn muốn điều hướng đến https://example.com và lưu ảnh chụp màn hình làm ví dụ.png:
Lưu tệp làm ví dụ.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
Thực thi script trên dòng lệnh:
node example.js
Nếu bạn muốn tạo PDF:
Lưu tệp dưới dạng hn.js.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {
waitUntil: 'networkidle2',
});
await page.pdf({ path: 'hn.pdf', format: 'a4' });
await browser.close();
})();
Miếng bánh phải không?
Ví dụ trên chỉ là một đoạn mã. Bạn có thể tìm thấy hướng dẫn Puppeteer mở rộng để biết thêm thông tin tại đây.
Một số hạn chế khi sử dụng trình quét web với trình duyệt không đầu là gì?
Bạn thường có ít quyền kiểm soát hơn với một máy chủ không đầu vì nhiều tác vụ yêu cầu các plugin hoặc cấu hình bổ sung được xử lý bởi trình duyệt web tiêu chuẩn. Ví dụ: một số trình duyệt không đầu không hỗ trợ bộ chọn CSS, điều này làm cho việc thu thập dữ liệu từ DOM trở nên khó khăn hơn.
Mặc dù một trình duyệt không đầu có hiệu quả, các chặn web có thể làm bạn chậm lại. Tùy thuộc vào số lượng trang bạn định cạo, bạn cần suy nghĩ về việc sử dụng dịch vụ proxy. Một dịch vụ proxy sẽ giúp lưu địa chỉ IP của bạn từ một khối tiềm năng.
Các proxy tốt nhất để sử dụng ở chế độ không đầu
Nếu tất cả các lệnh gọi API và yêu cầu HTTP của bạn được thực hiện từ cùng một địa chỉ IP, toàn bộ quá trình sẽ bị tắt.
Các proxy tốt nhất để sử dụng với các trình quét web là proxy xoay. Bằng cách này, mỗi phiên bản trình duyệt có một địa chỉ IP khác nhau.
Proxy dân dụng luân phiên, hoặc proxy kết nối ngược, lý tưởng cho kiểm tra tự động hóa và các ứng dụng web thu thập dữ liệu.
Bạn muốn biết thêm về proxy để quét web bằng trình duyệt không đầu? Kiểm tra bài viết này về số lượng proxy bạn cần.
Trong bài viết này, chúng tôi đã nói về các trình duyệt không đầu là gì và tại sao chúng có thể hữu ích cho những ai muốn sử dụng chúng như một công cụ cạo.
Nếu bạn có thêm bất kỳ câu hỏi nào về trình duyệt không đầu hoặc bất cứ điều gì liên quan đến quét web, vui lòng bình luận bên dưới!
HỎI ĐÁP
Làm thế nào tôi có thể bắt đầu?
Chỉ cần chọn một trình duyệt không đầu hoạt động tốt cho nhu cầu tự động hóa web của bạn. Có rất nhiều trình duyệt không đầu có sẵn, chẳng hạn như Headless Chromium và SlimerJS. Bạn cũng sẽ cần một thư viện. Ví dụ: nếu bạn định sử dụng Chrome, bạn sẽ cần cài đặt thư viện Puppeteer.
Tại sao lại có tên trình duyệt 'không đầu'?
Trình duyệt không đầu không có giao diện người dùng đồ họa (GLU); điều duy nhất bạn sẽ thấy khi nó chạy là giao diện dòng lệnh (CLI). Các nhà phát triển web sử dụng điều này để chạy các tác vụ tự động như kiểm tra chức năng và quét web.
CLI của trình duyệt không đầu của bạn cho phép bạn tải các trang web và tương tác với chúng, trong số những thứ khác. Về cơ bản, nó hoạt động như một proxy có cấu hình cao giữa bạn và (các) trang web mà bạn tải trong máy chủ không đầu của mình. Nếu bạn chưa quen với trình duyệt web scraping hoặc headless, bài viết này sẽ dạy cho bạn những điều cơ bản. Nó có thể hữu ích nếu bạn chỉ mới bắt đầu.
Ai đã tạo ra Chrome không đầu?
Chrome không đầu là một dự án mã nguồn mở do Google dẫn đầu.
Tôi có thể sử dụng nó cho các mục đích khác ngoài việc quét web tự động không?
Có! Bạn có thể sử dụng nó để chạy thử nghiệm tự động và chức năng. Bạn nên xem xét tất cả các tùy chọn của mình trước khi quyết định máy chủ không đầu nào đáp ứng tốt nhất nhu cầu của bạn.
Vì mục đích của chúng là tự động hóa, các trình duyệt không đầu tạo ra các công cụ cạo tuyệt vời, đặc biệt là khi kết hợp với giao diện dòng lệnh.
Tôi có thể chạy các trình duyệt headless từ dòng lệnh không?
Có. Nhiều máy chủ không đầu cho phép bạn chạy chúng từ CLI tương ứng của chúng hoặc thông qua giao diện người dùng web, chẳng hạn như Chrome. Trong một số trường hợp, bạn có thể phải sử dụng cả hai để kiểm soát hoàn toàn trình duyệt không đầu của mình.
Làm cách nào để biết trình duyệt không đầu có chạy trên máy của tôi hay không?
Bạn có thể tra cứu kiến trúc mà hệ thống cục bộ của bạn đang chạy và so sánh nó với kiến trúc của bất kỳ trình duyệt không đầu nào bạn muốn sử dụng. Một số máy chủ không đầu là đa nền tảng hoặc hỗ trợ nhiều kiến trúc, nhưng không phải tất cả chúng đều hoạt động theo cách này. Bạn nên kiểm tra trước khi sử dụng.
Có đúng là các trình duyệt không đầu không hỗ trợ bộ chọn CSS không?
Điều này đúng với một số (nhưng không phải tất cả) máy chủ không đầu; đáng chú ý, PhantomJS không hỗ trợ bộ chọn CSS trong khi Headless Chrome thì có. Các nhà phát triển của mỗi trình duyệt không đầu có thể chọn thêm và / hoặc xóa các tính năng khác nhau tại bất kỳ thời điểm nào, đó là lý do tại sao bạn nên luôn kiểm tra trước khi giả định bất cứ điều gì.
Các trình duyệt không đầu có hoạt động với mã javascript không?
Trong hầu hết các trường hợp, các trình duyệt không đầu không gặp vấn đề gì khi thực thi mã javascript. Nhiều nhà phát triển web sử dụng các trình duyệt không đầu để tự động hóa các tác vụ của họ, yêu cầu hỗ trợ đầy đủ cho JavaScript để hoàn thành mục tiêu của họ.
Vì không phải tất cả các trình duyệt không đầu đều hỗ trợ JavaScript, bạn cần nghiên cứu từng trình duyệt và xác định xem chúng có đáp ứng nhu cầu cụ thể của bạn hay không.
Có đúng là một số máy chủ không đầu có API không?
Yes! Some headless servers have APIs which allow you to utilize them in different ways than simply loading websites through a proxy server. You can check what types of APIs any given headless browser offers by reading up on their documentation. This is a good way of determining whether or not you should use them with web scrapers, especially if a proxy API is available.
Những trình duyệt không đầu nào hỗ trợ bộ chọn CSS?
Chrome không đầu hiện hỗ trợ bộ chọn CSS, trong khi công cụ WebKit của PhantomJS thì không. Để biết thêm thông tin về phụ thuộc hệ thống, bạn có thể kiểm tra trang web này.
Tại sao tất cả các công cụ quét web không được coi là trình duyệt không đầu?
Các công cụ quét web như Scrapy bắt chước giao diện người dùng (UI) của trình duyệt web thông thường để thu thập dữ liệu từ các trang web. Tuy nhiên, vì các công cụ này không tải các trang vào cửa sổ riêng của chúng, chúng tôi không phân loại chúng là trình duyệt không đầu.
Có đúng là bạn không thể sử dụng trình duyệt không đầu để quét các trang web di động không?
Các trình duyệt không đầu không được đảm bảo hoạt động trên tất cả các trang web, nhưng chúng có thể chạy hầu hết chúng tốt. Các trang web dành riêng cho thiết bị di động có xu hướng không tải chính xác trong các máy chủ không đầu, ngay cả khi chúng có thể hiển thị trang.
Tôi có thể kiểm tra các trình duyệt không đầu của riêng mình không?
Bạn sẽ có thể, nhưng không có gì đảm bảo rằng trình duyệt không đầu sẽ hoạt động. Vì mỗi máy chủ không đầu có chức năng và tính năng khác nhau, bạn có thể phải sửa đổi công cụ của riêng mình trước khi nó chạy chính xác.
Ví dụ cơ bản, Chrome không đầu yêu cầu Javascript, trong khi PhantomJS yêu cầu tiêu đề CORS cho các trang web để tải chính xác.
Một số phương pháp hay nhất mà tôi có thể sử dụng khi quét bằng trình duyệt không đầu là gì?
Mục tiêu của quét web thường là trích xuất dữ liệu từ các trang web không thể truy cập hoàn toàn hoặc một phần mà không cần nhập thủ công bất kỳ dữ liệu web nào vào biểu mẫu hoặc nút.
Nếu bạn muốn tìm hiểu thêm về cách hoạt động của web scraping, hãy xem bài viết này.
Bạn phải sử dụng trình duyệt không đầu của mình một cách có đạo đức. Có thể trích xuất dữ liệu từ các trang hoàn toàn hoặc một phần không thể truy cập được không nhất thiết là một điều xấu. Tuy nhiên, nó có thể là nếu chủ sở hữu trang web không muốn bạn làm như vậy.
Hãy chắc chắn rằng bạn kiểm tra kỹ tất cả các thỏa thuận Điều khoản dịch vụ và Chính sách bảo mật trước khi bạn quét bất kỳ trang web nào vì các điều khoản này có thể thay đổi mà không cần thông báo.
Những trình duyệt không đầu nào là tốt nhất để quét web?
Chrome không đầu và PhantomJS là những lựa chọn tuyệt vời để quét web vì chúng dễ sử dụng và tương đối nhanh.
Tại sao một số nhà phát triển thích sử dụng trình duyệt không đầu hơn trình duyệt thông thường?
Đôi khi có thể cần thiết hoặc thuận tiện hơn khi sử dụng trình duyệt không đầu thay vì trình duyệt thông thường, nhưng điều này thường phụ thuộc vào chi tiết cụ thể của dự án. Ví dụ: giả sử bạn muốn thu thập dữ liệu từ các trang web yêu cầu Javascript để hoạt động chính xác. Trong trường hợp đó, bạn sẽ có thời gian dễ dàng hơn với Chrome không đầu so với Google Chrome thông thường.
Chrome không đầu cung cấp khả năng theo dõi tốt hơn các công cụ tương tự khác; Nó có lợi khi làm việc với nhiều dự án.
Mệt mỏi vì bị chặn và cấm?
Nhận hướng dẫn miễn phí sẽ chỉ cho bạn chính xác cách sử dụng proxy để tránh bị chặn, cấm và mã captcha trong doanh nghiệp của bạn.
Gửi cho tôi hướng dẫn miễn phí ngay bây giờ!