Need a Proxy? Try our ISP Proxies!

無頭瀏覽器也是無腦的嗎?

什麼是無頭瀏覽器?它們是幫助還是阻礙數據收集遠征?

無頭瀏覽器是沒有圖形使用者介面 (GUI) 的 Web 瀏覽器。它沒有任何可見的視窗或使用者介面元素。

您只需使用腳本來處理頁面內容。

這意味著你可以得到各種不好的東西。

但我們今天只討論白帽的東西。

無頭瀏覽器有什麼特別之處?

  • 與 Web 內容的互動速度更快 - 這意味著您可以獲得更多所需的數據。
  • 載入頁面不需要那麼多頻寬或時間—— 這意味著您不必等待。
  • 這聽起來很酷,有點像Sleepy Hollow ——這很糟糕。
Sleepy Hollow Por Partida Doble - Hobbyconsolas Entretenimiento

無頭瀏覽器的用途是什麼?

無頭瀏覽器提供了對網頁DOM(文檔物件模型)的輕鬆訪問,這對於使用JavaScript框架(如 AngularJS)的前端開發人員很有説明。 

它們還通常用於在自動測試期間在無外設伺服器上載入和運行功能網頁。這稱為無頭瀏覽器測試。 

無頭瀏覽器測試 

無頭測試是一種用於網頁驗證的自動化測試技術。程式使用自動化、腳本或其他工具控制 Web 瀏覽器,而無需呈現圖形或執行可見的 UI 元件。無頭瀏覽器測試的目標可能包括:

  • 檢查 HTML/XHTML 頁面上標記、內容和樣式的有效性。
  • 驗證 Web 或登錄表單。
  • 評估事件處理程式和 AJAX 操作的JavaScript。

這是為了驗證動態內容是否以正確的定位等顯示在螢幕上。

無頭瀏覽器也可以很好地與其他軟體配合使用。除了測試和 Web 開發之外,它們還可以幫助促進數據收集。

無頭瀏覽器抓取 

無頭抓取是一種自動數據提取技術,您可以與 網路抓取工具結合使用。 

處於無頭模式的瀏覽器:

  • 抓取網站並將 Web 資料儲存在磁碟上的本地目錄中。 
  • 從大多數現代網站檢索多個頁面。 
  • 模仿執行 JavaScript 渲染所需的 使用者代理配置檔
  • 使用命令行參數更有效地抓取。

例如,無頭瀏覽器通常用於從在線目錄中抓取數據、電子商務網站的定價資訊或嵌入到公司網站的社交媒體小部件/圖示。

無頭鉻

無頭鉻

谷歌Chrome瀏覽器的無頭版本。

Mozilla Headless Mozilla

無頭火狐

一個Mozilla專案,旨在創建他們最新的Web瀏覽器的無頭版本,並支援 WebGL 和JavaScript。

Htmlunit 徽標

HtlmUnit

使用無頭瀏覽器載入和驗證網頁的功能測試框架。

簡單瀏覽器徽標

簡單瀏覽器

使用 Net 4 軟體製作的無頭瀏覽器,能夠執行瀏覽器自動化活動。它不允許 JavaScript,但您可以在提交或導航之前修改使用者代理、引薦來源網址、請求標頭、表單值等。

Slimerjs Logo

SlimerJS

一個Mozilla專案,旨在允許JavaScript和 HTML5 在類似文件系統的環境中使用。它使用Gecko(Firefox背後的瀏覽器引擎)作為其核心。這將使它能夠完全支援所有JavaScript API(例如,即使它們沒有實現或以某種方式不完整)。

殭屍JS

Zombie提供了一個JavaScript API並使用 Chromium。Chromium 可以在各種網頁上運行,但它主要用於自動測試 DOM API 和網站行為。

如何使用無頭瀏覽進行網頁抓取?

無頭瀏覽器的目的是自動化(功能測試,Web開發等)。它們也是網路抓取的絕佳工具,因為它們易於使用並且能夠在無人值守/無需人工干預的情況下完成任務。

無頭數據提取無頭瀏覽無頭瀏覽器

使用無頭瀏覽器進行網頁抓取時,您需要向瀏覽器提供 URL 清單,然後等待它載入。在無頭瀏覽器中載入時,可以通過從命令行發送無外設瀏覽器命令來自動執行此操作。

它使您可以完全控制何時以及如何將URL拉入無頭瀏覽器。

要使用無頭瀏覽器抓取網站,您需要向應用程式添加庫,以便瀏覽器可以與它們通信。此通信可以通過命令行或連接到 Web 伺服器進行。

最常見的庫是:

請求徽標蟒蛇

請求

通過HTTP請求與Web伺服器交互的必要 Python 庫。

嘉盛標誌

JSDOM

這個庫還需要一個名為 jsdom-global 的包,它用於創建無頭瀏覽器所需的全域物件。

木偶師標誌

Puppeteer

puppeteer 庫使得控制 Chrome 和 Chromium 比其他庫(如 Selenium/WebDriver)更容易。您可以在 NodeJS 應用程式中使用 npmyarn 安裝它,以運行測試或從網頁中抓取數據。它為您提供了指定 URL、下載資源、處理 cookie 等的方法。

我們需要記住,Puppeteer 是一個基於 promise 的庫:它對引擎艙中的無頭 Chrome 實例執行異步調用。

噩夢

該庫用於 電子應用。它為Electron提供了自動化工具,應用程式可以使用這些工具通過遠端連接驅動Electron的瀏覽器進程。

Selenium

一些庫可用於使用Selenium綁定的無頭JavaScript,例如webdriver js和selenium-web驅動程式。 

您可能認為建立庫一定很困難,但事實並非如此。讓我們看一個例子。

基本木偶師教程

首先,您需要將Puppeteer安裝到項目目錄中。

安裝木偶師

要在無頭瀏覽器中使用木偶,請運行:

npm i puppeteer
# or "yarn add puppeteer"

或者對於 Puppeteer 的精簡版,請運行:

npm i puppeteer-core 
# or "yarn add puppeteer-core"

如上所述,所有的木偶代碼都在 NodeJS 中運行。您可以將其匯出為工廠函數,該函數將返回一個包含控制 Chrome 的方法的物件。您可以使用它透過啟動方法創建新的瀏覽器實例、導航到URL、處理事件等。

以下代碼片段適用於木偶劇腳本。

如果要導航到 https://example.com 並儲存螢幕截圖作為示例.png

以保存檔為例.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();
})();

在命令列上執行文稿:

node example.js

如果要建立 PDF:

將檔另存為 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();
})();

小菜一碟吧?

上面的示例只是一個代碼片段。您可以 在此處找到擴展的木偶師教程以獲取更多資訊。

使用帶有無頭瀏覽器的網路抓取工具有哪些限制?

您通常對無頭伺服器的控制較少,因為許多任務需要由標準 Web 瀏覽器處理的其他外掛程式或配置。例如,一些無頭瀏覽器不支援 CSS選擇器,這使得從DOM抓取數據變得更加困難。 

儘管無頭瀏覽器很有效,但 Web 阻止可能會減慢您的速度。根據您計劃抓取的頁面數量,您需要考慮使用 代理服務。代理服務將有助於將您的IP位址從潛在阻止中保存出來。

在無頭模式下使用的最佳代理

如果您所有的 API 調用和 HTTP 請求都來自同一個 IP 位址,則整個過程將被關閉。

與網路爬蟲一起使用的最佳代理是輪換代理。這樣,每個瀏覽器實例都具有不同的IP位址。 

輪換住宅代理或 反向連接代理是自動化測試和收集數據的 Web 應用程式的理想選擇。

想知道更多關於使用無頭瀏覽器進行網路抓取的代理嗎?查看這篇文章,瞭解 您需要多少個代理。

在本文中,我們討論了什麼是無頭瀏覽器,以及為什麼它們可能對那些想將它們用作抓取工具的人有所説明。 

如果您對無頭瀏覽器或與網路抓取相關的任何內容有任何其他問題,請隨時在下面發表評論!

常見問題

如何開始?

只需選擇一款非常適合您的 Web 自動化需求的無頭瀏覽器即可。有多種無頭瀏覽器可用,例如Headless Chromium和SlimerJS。您還需要一個圖書館。例如,如果您打算使用Chrome,則需要安裝Puppeteer庫。 

為什麼叫「無頭」瀏覽器?

無頭瀏覽器沒有圖形使用者介面 (GLU);運行時,您唯一會看到的是命令行介面 (CLI)。Web 開發人員使用它來運行自動化任務,例如功能測試和 Web 抓取。 

無頭瀏覽器的 CLI 允許您載入網站並與之互動等。它本質上充當您和您在無頭伺服器中載入的網站之間的高度可配置的代理。如果您不熟悉網路抓取或無頭瀏覽器,本文將教您基礎知識。如果您剛剛開始,這可能會有所説明。

誰創建了無頭Chrome?

Headless Chrome是由Google領導的開源專案。

我可以將其用於自動網頁抓取以外的目的嗎?

是的!您可以使用它來運行自動化和功能測試。在決定哪個無頭伺服器最能滿足您的需求之前,您應該考慮所有選項。 

由於它們的目的是自動化,無頭瀏覽器是很好的抓取工具,尤其是與命令行介面配對時。

我可以從命令行運行無頭瀏覽器嗎?

是的。許多無頭伺服器允許您從各自的 CLI 或通過 Web UI(例如 Chrome)運行它們。在某些情況下,您可能必須同時利用兩者來完全控制您的無頭瀏覽器。 

我如何知道我的機器上是否運行無頭瀏覽器?

您可以查找本地系統運行的體系結構,並將其與要使用的任何無頭瀏覽器的體系結構進行比較。一些無頭伺服器是跨平臺的或支援多種架構,但並非所有伺服器都以這種方式工作。您應該在使用之前進行檢查。

無頭瀏覽器真的不支援CSS選擇器嗎?

對於某些(但不是全部)無頭伺服器也是如此;值得注意的是,PhantomJS不支援CSS選擇器,而Headless Chrome則支援。每個無頭瀏覽器的開發人員都可以選擇在任何給定時間添加和/或刪除不同的功能,這就是為什麼您應該在假設任何事情之前始終檢查的原因。

無頭瀏覽器可以使用JavaScript代碼嗎?

在大多數情況下,無頭瀏覽器在執行javascript代碼時沒有問題。許多 Web 開發人員使用無頭瀏覽器來自動化他們的任務,需要完全支援 JavaScript 才能實現他們的目標。 

由於並非所有無頭瀏覽器都支援 JavaScript,因此您需要研究每個瀏覽器並確定它們是否滿足您的特定需求。

某些無頭伺服器是否真的有 API?

是的!一些無頭伺服器具有 API,允許您以不同的方式使用它們,而不僅僅是通過代理伺服器載入網站。您可以通過閱讀其文件來檢查任何給定的無頭瀏覽器提供的 API 類型。這是確定是否應該將它們與網路抓取工具一起使用的好方法,尤其是在代理 API 可用的情況下。

哪些無頭瀏覽器支援 CSS 選擇器?

Headless Chrome目前支援CSS選擇器,而PhantomJS的WebKit引擎不支援。有關系統依賴關係的更多資訊,您可以查看此網站。 

為什麼不是所有的網路抓取工具都被視為無頭瀏覽器?

諸如 Scrapy 之類的網路抓取工具模仿常規網路瀏覽器的使用者介面 (UI) 從網站抓取數據。但是,由於這些工具不會將頁面載入到自己的視窗中,因此我們不會將它們歸類為無頭瀏覽器。

您真的不能使用無頭瀏覽器來抓取移動網站嗎?

無頭瀏覽器不能保證在所有網站頁面上都有效,但它們可以很好地運行其中的大部分。特定於行動裝置的網站往往無法在無外設伺服器中正確載入,即使它們可以顯示頁面也是如此。

我可以測試自己的無頭瀏覽器嗎?

您應該可以,但不能保證無頭瀏覽器可以工作。由於每個無外設伺服器具有不同的功能和特性,因此您可能需要修改自己的工具才能正常運行。 

舉個基本的例子,無頭Chrome需要Javascript,而PhantomJS需要 CORS 標頭才能正確載入網頁。

使用無頭瀏覽器抓取時可以使用哪些最佳實踐?

網頁抓取的目標通常是從完全或部分無法訪問的網站中提取數據,而無需手動將任何網路數據輸入表單或按鈕。

如果您想瞭解有關網路抓取工作原理的更多資訊,請查看這篇文章。

您必須合乎道德地使用無頭瀏覽器。能夠從完全或部分無法訪問的頁面中提取數據並不一定是一件壞事。但是,如果網站擁有者不希望您這樣做,則可能是這樣。 

在抓取任何網站頁面之前,請務必仔細檢查所有服務條款和隱私政策協定,因為這些條款可能會更改,恕不另行通知。

哪些無頭瀏覽器最適合網頁抓取?

無頭Chrome和PhantomJS是網頁抓取的絕佳選擇,因為它們易於使用且速度相對較快。

為什麼一些開發人員更喜歡使用無頭瀏覽器而不是常規瀏覽器?

有時使用無頭瀏覽器而不是常規瀏覽器可能是必要或更方便的,但這通常取決於專案的具體情況。例如,假設您想從需要 Javascript 才能正常工作的網站中抓取數據。在這種情況下,您將比普通的Google Chrome更容易使用無頭Chrome。 

無頭Chrome提供了比其他類似工具更好的跟蹤功能;在處理多個專案時,這是有益的。

厭倦了被遮罩和禁止?

獲取 免費指南 ,該指南將向您展示如何使用代理來避免業務中的阻止、禁令和驗證碼。
In this Article:
Leave behind the complexities of web scraping.
Opt for IPBurger’s advanced web intelligence solutions to effortlessly collect real-time public data.
登記

更深入地了解

網頁抓取
AJ泰特
Web Scraping Blocks? Here’s What to Do

Web scraping blocks are a pain. One minute you’re gathering all the data you need, and the next, you’re staring at an error message. Frustrating, right? Websites are getting better at spotting scraping activities and shutting them down quickly. This isn’t just a minor annoyance—it can throw off your entire

訪問網路
AJ泰特
Facing IP Bans When Accessing Important Accounts? Find a Solution

Ever been locked out of your own accounts because of an IP ban? It’s like planning a smooth road trip, only to hit every possible red light. One minute you’re smoothly managing your online activities, and the next, you’re staring at a frustrating error message. This disruption isn’t just a

訪問網路
AJ泰特
Experiencing Slow Data Access? Make Your Business Super Quick

Slow data access can be a real hindrance to business performance. Slow data hampers decision-making, drags down productivity and leaves everyone frustrated. Imagine waiting for crucial information to load while your competitors are already a step ahead—definitely not a scenario you want to be in. Reliable and fast data access

Scale Your Business
With The Most Advanced
Proxies On Earth
加入#1屢獲殊榮的代理網路