最受欢迎的无头浏览器

您是无头浏览器技术的新手吗?然后,该页面已为您编写。本文是无头浏览器的最终指南。您将学习它的含义,用途,阴暗面等等。

互联网已经发展起来,Web自动化正处于领先地位,并逐渐成为一种规范。实际上,您可能会想知道开发人员和市场营销人员正在积极寻找其工作流程的重复方面以实现其他方面的自动化,以腾出时间处理其他无法自动化的任务,对此您可能会感兴趣。无头浏览器是所有此类自动化狂潮的核心,它是一种将Web浏览器功能(包括脚本渲染以及执行JavaScript代码和事件)引入命令行的技术。

无头浏览器的引入不仅使自动化的Web测试成为可能,而且还为抓取Web创造了机会,尤其是在处理Ajaxified和JavaScript丰富的网站时。您可以将无头浏览器放入其他用例中,稍后将在本文中进行讨论。目前,请坐下来放松,我们将讨论什么是无头浏览器。


什么是无头浏览器?

无头浏览器是没有图形用户界面(GUI)的Web浏览器。更好的说,任何具有完善的Web浏览器功能但没有用户界面且只能使用脚本或任何其他软件进行操作的浏览器都被称为无头浏览器。

无头浏览器使控制Web浏览器成为可能,而不必处理用户界面的物理负载。以Google Chrome浏览器为例,它可以在无头模式下运行,甚至可以执行诸如发送Web请求,触发JavaScript偶数,单击按钮,执行自定义JavaScript代码,甚至进行购买而无需实际启动Chrome即可查看的功能。

无头浏览器的重要性在于其以常规浏览器的方式呈现和理解HTML,CSS和JavaScript的功能。如果您尝试使用常规脚本和库在线访问资源,则会发现它们所能做的就是恢复HTML文档-了解和呈现JavaScript代码完全取决于您。

由于大多数现代网站主要依赖JavaScript和Ajax技术,因此这意味着这些工具已无法使用,因为它们无法按需访问页面上显示的所有内容。好吧,如果您要处理的是这样的网站–无头的浏览器可助您一臂之力。

如前所述,Chrome浏览器可以在无头模式下运行,实际上,在讨论无头浏览器时,无头Chrome是最流行的浏览器。一些流行的无头的浏览器包括Firefox的无头,PhantomJS,SimpleBrowser,飞溅,的HtmlUnit和TrifleJS。

您需要了解的关于这些浏览器的一件事是,它们是使用受支持的编程语言的命令行和脚本来控制的。他们访问的页面的内容也可以通过命令行访问。为了使无头浏览器正常工作,他们将需要具有Selenium,Puppeteer和Cypress之类的流行控制器的控制器或驱动器。


无头浏览器用例

无头浏览器有很多用例,可以概括为一个词-自动化。是的,无头浏览器用于自动访问网站,您的工作取决于您。让我们看一下可以使用无头浏览器进行的一些活动。

  • 现代网站和应用程序测试

过去,网页是静态页面,使用传统的HTTP库对网页进行测试不会带来任何重大挑战。但是,最近,情况发生了迅速变化,一些现代网站具有本机应用程序的感觉,外观和用户界面。

借助无头浏览器,您可以渲染这些网站并作为开发人员对其进行测试,而无需手动进行。无头浏览器应该成为现代Web开发人员测试工具箱的一部分,因为无头浏览器可以呈现JavaScript和触发将发送Ajax的事件,并具有其他功能。


  • 网络数据提取

依靠JavaScript呈现内容的网站对Web抓取工具和抓取工具提出了挑战,因为它们的内容只能在Web浏览器环境中提取。借助无头浏览器,您可以将所有内容呈现为其他内容以进行抓取。

使用无头浏览器进行Web数据提取的流行示例之一是Google使用无头Chrome进行爬网并为Ajaxified网站编制索引。Web抓取和抓取中无头浏览器的另一个用例是绕过反机器人系统。使用无头浏览器可帮助您逃避网站的某些反机器人系统,因为所有HTTP标头均已发送,JavaScript呈现和事件触发。


  • 任务自动化

除了Web数据提取之外,您还可以执行许多任务自动化。如今,您可以借助无头浏览器自动执行购买,填写表格,发送消息,回复它们甚至提供近乎完整的客户服务。如果您打算自动执行任务的网站是现代的并且依赖JavaScript,那么您很可能需要使用无头浏览器。


  • 页面截图

您是否正在寻找一种方法来捕获网页屏幕快照并将屏幕快照保存为图片格式?使用无头浏览器,您可以使页面完全加载和呈现,然后截屏屏幕。


为什么要使用无头浏览器?

您可能会想知道,常规浏览器可以自动执行无头浏览器将执行的所有任务。那么,为什么要使用无头浏览器而不是带有GUI的常规浏览器?

您可能会想知道,即使在开发使用无头浏览器的应用程序时,也需要使用带有GUI的浏览器进行测试和调试。但是,一旦应用程序开发完成,就放弃了GUI。

事实证明,由于没有创建GUI的事实,无头浏览器比常规浏览器更快,因此消耗的内存,时间和资源更少。同样重要的是,您必须知道无头浏览器是您可以在只能通过命令行访问的机器和平台上使用的唯一浏览器,例如某些Linux发行版和服务器。


顶级自动化的无头浏览器

我们一直在提到无头浏览器;现在该描述一些最好的无头浏览器了。我们将在下面查看其中的3个。

  • Headless Chrome

提到无头Chrome一词时,并不意味着它是与Chrome分开的浏览器-您知道,它是常规Chrome Web浏览器中的一种模式。Chrome中的无头模式将Chromium和Blink渲染引擎的所有现代Web功能都引入了命令行。

最新版本的Chrome支持无头模式,并且首次出现在版本59中。Linux,macOS和Windows支持无头模式。大多数浏览器自动化工具(包括Selenium和Puppeteer)都支持它。

Playwright

  • Playwright、Puppeteer 用于浏览器测试的工具,你该选择哪个?
  • 使用Chrome无头和专用代理爬取任何网站

无头火狐浏览器

无头Firefox就像Firefox中的一种模式,就像Chrome中一样。从55版开始在Linux上已支持它。在56版中添加了对Windows和Linux的无头模式支持。

Selenium是无头Firefox最好的Web浏览器控制器之一。使用无头Firefox,您可以访问除GUI之外的所有Firefox功能-但可以减少内存和资源的使用。

  • Scrapy、Beautifulsoup. 网页抓取工具
  • 使用Selenium和Python进行Web爬取

PhantomJS

除了主流浏览器(例如Chrome和Firefox)之外,PhantomJS还是最受欢迎的无头浏览器之一。与上面提到的其他两个可通过无头模式支持使用的方式不同,PhantomJS仅可作为无头浏览器使用。PhantomJS自2010年以来一直存在,并已被广泛使用。

但是,它不再处于主动开发状态,并且已被归档。但是它仍然可以用作与现代Web交互的无头浏览器。PhantomJS利用WebKit进行网页渲染,并使用JavaScriptCore执行脚本。

  • 查找“PhantomJS”的最佳代理

尽管如此,Zombie.jsHtmlUnitJsdomSplash仍有更多选择,但是与Headless Chrome,Headless Firefox和PhantomJS相比,它们并不那么受欢迎。


无头浏览器和防盗系统

没关系,除非您在可以控制的网站上使用无头浏览器;您很可能会遭到网站的反机器人系统的干扰和阻止。这是因为无头浏览器仅用于自动访问,而并非所有Web服务都允许自动访问。

即使是使用无头Chrome来爬网Ajax页面的Google,也不允许您使用相同的无头Chrome来访问Google服务,除非通过其官方API。

因此,如果要处理安装了反机器人系统的站点,则需要合并反机器人绕过技术。有趣的是,与其他工具不同,使用无头浏览器规避反机器人系统既轻松又轻松。

这是因为它是常规浏览器,因此,将要发出的主要索引将是IP地址和验证码。有趣的是,有一种简单的解决方法可以绕过这些问题Crawlera或任何其他代理API进行救援。


无头浏览器+ Crawlera:天作之合,用于Web抓取

如前所述,网站的反机器人系统将阻止来自机器人的流量。考虑到大多数利用无头浏览器的脚本都是机器人或具有机器人功能的事实,明智的做法是期待块,然后计划如何规避它们。

通过使用代理服务器,您可以解决基于IP的限制,而Captcha解算器将帮助您处理Captcha。但是,走这条路将需要大量工作。您可以利用Crawlera来完成它。

Crawlera是Scrapinghub开发的用于Web抓取的代理API。在内部,Crawlera是代理服务–但是与常规代理不同,Crawlera旨在帮助您逃避反机器人系统。

实际上,使用此服务,您不必担心代理管理,IP轮换,限制等问题。只需发送请求并获取响应即可-这就像Crawlera内部绕过反机器人系统的系统一样简单。它不仅会掩盖您的真实IP地址并轮换它分配给您的请求的IP地址,而且还会处理验证码。

关于Crawlera,您会喜欢的一件事是,定价基于成功的请求,因此,您仅为成功的请求付费。使用Crawlera,您可以在有限的时间内享受1万次免费试用。Crawlera并非市场上唯一的代理API或抓取API。还有很多其他的,包括ScrapingAPIScrapingBee。您可以将上述代理API与无头浏览器一起使用,并删除Ajaxified网站。

  • 如何在不被阻止的情况下爬取Ajaxified网站?
  • 最佳网络搜集实践,技术技巧

无头浏览器是非法的吗?

我已经看到许多新手询问无头浏览器的使用是否违法-实际上,它甚至是Google结果页面上针对无头浏览器关键字列出的问题之一。这个问题的简短答案是“否”。无头浏览器不是非法的-它们只是用于自动执行网络操作的工具。

您使用它所做的都会使其成为非法。举例来说,基于常规的Web抓取被认为是合法的,前提是所抓取的数据是公开可用的,没有版权,并且不需要登录即可访问。

另一方面,票证剥夺,分布式拒绝服务(DDoS)攻击,广告欺诈以及其他使用无头浏览器可以完成的恶意活动形式都是非法的。

因此,无头浏览器不是非法的-正是您使用它们所导致的法律麻烦。重要的是,您知道这不是法律建议,如果您寻求法律从业人员的建议,那会更好。


结论

无头浏览器夺走了浏览器GUI及其消耗的资源,例如内存。使用无头浏览器,您可以将现代Web浏览器的HTML渲染和JavaScript执行功能引入命令行。

它带给命令行的功能不仅为使用它进行自动化Web测试的Web开发人员,而且还为Bot开发人员提供了很多机会。除了无头浏览器之外,还有其他一些工具可以代替无头浏览器使用,例如Zombie.js和ENVJS之类的模拟浏览器环境。


  • 如何使用Javascript从网站抓取HTML?
  • 如何使用Python构建简单的Web抓取工具
  • 如何从网站提取数据?
  • 如何构建网络爬虫?