使用无头浏览器和代理服务器抓取任何网站

代理, 搜索, Oct-18-20215 分钟阅读

当你听到 "无头浏览器 "时,除非你对浏览器的技术功能了如指掌,否则它肯定不是你日常生活中可能遇到过的熟悉的科技小工具。大多数人都熟悉谷歌浏览器、火狐浏览器、Safari 等奇特的浏览器。那么唯一的区别就是无头浏览器

当你听到 "无头浏览器 "时,我相信除非你对浏览器的技术功能有深入的了解,否则它可能不是你在日常生活中遇到过的熟悉的科技小工具。

大多数人都熟悉谷歌浏览器、火狐浏览器、Safari 等奇特的浏览器。唯一不同的是,无头浏览器是那些没有头的奇特浏览器。我们将在下文中探讨这意味着什么,以及它们的优点。

什么是无头浏览器?

你能想象如果谷歌浏览器或火狐浏览器没有图形用户界面,你的生活会是什么样子吗?除非你是软件工程师或具有高科技水准的人,否则你根本不会去使用它。

因此,无头浏览器在运行时没有花哨的按钮、图标、滚动条和链接,无法从一个位置导航到另一个位置。因此,与无头浏览器建立通信的唯一方法就是通过网络使用命令行界面。 

从技术上讲,无头浏览器拥有 JavaScript 解释器、网络组件、布局和渲染引擎,但没有图形用户界面。

那么你可能会问,既然使用带图形用户界面的浏览器也能达到同样的效果,那么使用无头浏览器又能带来什么好处呢?

下面就让我们来寻找答案吧。

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

首先,无头浏览器比普通浏览器相对更快。这主要是因为无头浏览器不像普通浏览器那样加载任何 CSS、Javascript 和 HTML。与标准浏览器相比,无头浏览器占用的内存更少,主机资源也少得多。

此外,无头浏览器还能自动测试网络或移动应用程序,提高其质量和整体开发水平,从而提高工作效率,节省时间。此外,无头浏览器还能监控网络应用程序的性能,并自动进行图像渲染和捕获,从而实现自动布局检查。

说到网络搜刮,无头浏览器能让你在搜刮前无需手动启动网站。您可以直接搜刮网站的 HTML。

此外,无头浏览器在谷歌搜索结果中发挥着重要作用。由于搜索引擎只需要网页的 HTML 源代码就能对网页进行索引,无头浏览器通过执行 Javascript 和就地填充内容来实现这一点。无头浏览器也因此得到了快速发展。

无头浏览器有什么用?

以下是无头浏览器执行的任务简表:

网站测试

使用无头浏览器的主要目的是测试网络应用程序的功能和用户界面特性。它可以通过自动化日常测试任务来测试网络应用程序,如在字段中输入数据、填写表格、模拟加载和完成整个工作流程。另一方面,您还可以对没有图形用户界面的系统进行自动化测试。

无头浏览器还可以测试用户如何与网站的用户界面/用户体验组件进行交互。它可以自动完成按钮点击、滚动、颜色选择、字体类型以及与网页布局的交互。 

页面布局测试还包括确定网页的默认大小和坐标。 

无头浏览器可以截取网页并保存为 PDF 格式。此外,它们还提供 JavaScript 和 Ajax 执行测试。

无头浏览器可以进行的其他一些主要测试包括捕捉网站的时间线跟踪,以进行性能诊断。

网络搜刮

无头浏览器的流行不仅源于网络应用程序测试,也与大量网络刮擦有关。无头浏览器通过加载和模拟真正的浏览器,让网络搜刮者能够从最具挑战性的目标网站收集数据。

由于 JavaScript 的普及,使用这种提取工具已成为一种挑战。使用这种提取工具的一些问题包括异步加载、浏览器指纹和无限滚动。

任务自动化

在上文第一点中,我们介绍了使用无头浏览器测试网络应用程序的任务自动化。因此,自动化的唯一新增功能就是利用无头浏览器自动进行网站交互,在一台机器上模仿多个浏览器,而不会造成资源占用

无头浏览器有哪些类型?

目前有多种无头浏览器。作为一名网络开发人员,你必须尝试各种无头浏览器,以获得自动化测试用例和网络搜索的最佳组合。

让我们来看看它们是什么:

谷歌无头浏览器(59 或更高版本)

它基于开源的 Google Chromium 项目,是一款轻量级无头浏览器。它支持 JavaScript,采用BSD 许可

它有一个命令行界面,可立即扫描和搜索网站数据。此外,它的内存消耗更少,还包括创新功能、用户友好型网络开发工具和开发人员友好型特定工具。Headless Chrome 可在所有平台上运行,包括 Windows、Mac OS X 和 Linux。

网络开发人员经常用它从网站上抓取数据、从网站上截图,以及从网页上创建 PDF 文件。无头 Chrome 浏览器更吸引人的地方在于,你还可以在不加载浏览器图形用户界面的情况下抓取数据和图片。

开发人员还利用无头浏览器测试不同级别的导航,以确保移动和桌面设备上的用户都能轻松导航。

Puppeteer 和 Selenium 是控制无头 Chrome 浏览器的两种最常用工具。如你所知,Selenium 已在测试领域声名鹊起。而 Puppeteer 则使用代理来抓取页面、点击组件和下载数据。

HtmlUnit

HtmlUnit 是一个用 Java 开发的无头浏览器,可自动实现网站与用户的交互。该浏览器非常适合测试网站或从中获取信息。与其他浏览器相比,它的安装速度最快。

HTMLUnit 还可用于创建和测试电子商务网站功能,如网站安全、表单提交、导航等。作为开发人员,您可以将其用于 HTTP 验证、HTTPS 页面性能、HTTP 头性能、链接重定向到其他网站以及填写表格和提交流程。 

Mozilla Firefox 无头浏览器(56 或更高版本)

无头版火狐浏览器在 56 或更高版本中可用。它能让开发人员同时执行多个 API。这样做时,你就不需要使用多个模拟工具来进行与网页开发相关的测试。

因此,你可以将 Selenium、Slimmer JS 和 W3C WebDriver 等任何网络驱动程序与无头 Firefox 结合起来,进行网络浏览器自动化测试。在我提到的三种网络驱动程序中,Selenium 是在无头版 Firefox 中驱动测试和自动化流程的推荐驱动程序。

PhantomJS Webkit

Phantom JS 是一款开源 WebKit 无头浏览器,你可以在上面运行脚本。它使用 3 条款和 BSD 在 JavaScript、PHP、Objective-C、C#、Python、Java、Haskell、Ruby 和 R API 上运行,不过 PhantomJS 并未得到维护。 

Phantom JS 可快速为 DOM 操作、SVG、CSS 选择器、Canvas 和 JSON 等网络开发操作提供本地支持。另一方面,它通过命令行界面进行通信,管理网络浏览器自动化测试和流程中的许多复杂问题。

开发人员经常使用幻影 JS 捕捉网页截图、进行行为预测、多级测试导航以及与多种断言类型交互。

使用无头浏览器,避免被列入黑名单或禁用

正如你之前已经发现的,无头浏览器的实际用途之一就是网络搜刮。本节将介绍如何在使用无头浏览器进行搜刮时防止被列入黑名单或屏蔽。

当 Selenium 等工具使用无头浏览器(如 Google Chrome 无头浏览器或 Firefox 无头浏览器)采集数据时,目标网站会认为是机器人在爬行网站,而不是人在爬行。

例如,由于大多数网站都使用 PHP 等高级语言编程,因此可以检测点击率。这意味着,它可以判断用户是点击了一个按钮导航到网站内的另一个页面,还是仅仅进入了 URL 而没有点击按钮,但有一个链接与之相连。

作为开发人员,你可以编写 Selenium 等工具的代码,以便在使用无头浏览器时输入、点击或滚动任何网站。这样,目标网站就能清楚地知道,访问网站的是人而不是机器人。

不过,在无头浏览器中使用 Selenium 可能会有一些缺点。最大的顾虑是刮擦网页时速度较慢。不过,与上文 "为什么要使用无头浏览器?"一节中讨论的无头浏览器的其他优点相比,这种慢可以忽略不计。

另一方面,无头浏览器并不会影响网站搜索的速度,这只是一个页面切换的问题。总之,使用无头浏览器搜索网站值得一试,因为它的缺点可以忽略不计。

如何在无头浏览器中使用旋转代理

在本节中,您将了解为什么需要旋转代理才能使用无头浏览器进行搜刮。

当您使用代理服务器和无头浏览器从网站上抓取数据时,您可以匿名抓取数据,网站服务器不会限制您的 IP 地址。

您可以使用 旋转代理从内容受地域限制的网站访问和搜刮数据。为此,您可以使用ProxyScrape 提供的住宅旋转代理池,这样您就可以使用多个地点的 IP 进行搜刮,而不会被目标网站屏蔽。此外,您还可以通过大量请求从亚马逊等电子商务平台搜刮产品数据。

ProxyScrape 旋转 IP 地址可以让你在一个网站上运行多个会话。这反过来又有助于绕过阻止大量数据请求的全面 IP 限制。

轮流使用代理服务器还能帮助你克服在尝试使用无头浏览器自动执行任务时出现的禁令。

结论

现在你已经知道了什么是无头浏览器、何时使用、为何使用以及各种类型。此外,我们还介绍了它们如何在搜索时避免阻塞。当你使用旋转代理时,它将进一步促进你的搜刮过程,因为它会带来匿名性和许多其他好处。

最后,我们希望你能实施本文提到的机制。在使用无头浏览器进行网络搜刮时,您必须这样做。