什么是 Browserless?远程浏览器服务详解

什么是 Browserless?

Scrapeless Agent Browser 为网络自动化和动态页面交互提供托管的云端浏览器会话。

Browserless 是一个浏览器自动化平台,允许软件远程运行和控制浏览器。客户端无需在与应用程序相同的机器上启动浏览器,而是连接到浏览器服务或通过受支持的接口提交任务。浏览器会加载页面、执行其 JavaScript,并生成所请求的结果。Browserless 是一个独立产品;其名称不应被用作所有托管浏览器的通用名称,也不应作为 Scrapeless 的别名。

当部署环境无法方便地安装或管理浏览器进程时,远程浏览器会很有用。它也引入了一个新的边界:应用程序控制的是一个运行在别处的浏览器。理解这一边界有助于你在迁移现有脚本之前,评估连接兼容性、会话状态、输出处理以及操作职责。

Browserless 为您的应用程序移除了哪些内容

Browserless 将浏览器执行移入一个浏览器服务中,而你的应用程序则继续对任务本身负责。这个区别解释了它带来的便利性以及仍需完成的工作。你依然需要决定访问哪一个页面、哪些数据是相关的、页面何时已就绪,以及什么才算是可接受的结果。

该服务通过其部署中可用的接口提供执行环境。Browserless 支持多种表达浏览器工作的方式,包括针对现有浏览器自动化客户端的连接以及更高层级的任务接口。应当有意识地选择这些接口。接受截图请求的端点,与通过长连接让客户端发出大量浏览器命令的方式,是不同的契约。

这 WebDriver 远程控制模型 提供了一个关于客户端与浏览器边界的有用通用示例。但这并不能证明某个特定的 Browserless 端点实现了 WebDriver。服务文档与所选客户端必须在实际传输方式和协议上达成一致。

远程浏览器任务的执行流程

远程浏览器任务会经过分配、页面处理、输出收集和释放几个阶段。即使某些 API 将其中一些阶段合并为单个请求,这些阶段对于规划仍然很有用。

首先,客户端请求受支持的浏览器资源或提交浏览器操作。连接凭据用于标识帐户或部署。成功的连接只建立了控制访问;这并不表示目标页面已加载或所需数据已存在。

接下来,浏览器会导航并执行网站。应用程序必须区分初始文档与后续的应用活动。导航响应之后可能会出现产品列表,如果任务结束得太早,截图可能只会捕获加载占位符。定义一个相关的完成信号,例如预期结果区域的出现,或页面处于可见的完成状态。

在此之后,任务会收集其输出。截图、文档文本、提取的记录和下载的文件是不同的可交付成果。请检查实际的格式和内容。包含访问通知的非空 HTML 响应并不等同于所请求的文章或产品信息。

最后,该任务根据服务的生命周期契约释放浏览器。不要假设关闭本地客户端对象必然会删除持久化的浏览器数据。同样,也不要假设断开连接会为后续连接保留一个处于活动状态的浏览器。这些行为取决于所选的部署和会话选项。

客户端库、协议和托管是不同的层级

一个客户端库用来表达浏览器操作,一个协议用来传递这些操作,而一个托管平台则负责运行浏览器。将这些层次分离开来,可以让迁移相关的问题更容易回答。

Puppeteer 或 Playwright 可以表达一次导航或元素交互。浏览器运行时执行该指令。Browserless 提供远程环境以及到达该环境的受支持路由。复用熟悉的库可以保留现有工作流程的很大一部分,但这并不意味着在远程分配的浏览器上,每个启动选项都具有实际意义。

例如,选择本地可执行文件路径的选项,无法在托管服务上安装该可执行文件。对文件系统的假设也需要类似的关注。在远程浏览器环境中写入的文件并不会自动出现在你本地脚本的旁边。需要决定下载或生成的工件将如何到达目标系统。

该 HTML 浏览上下文模型 这也解释了为什么浏览器可以包含多个文档和窗口。与浏览器的连接并不是对某个永久稳定页面的引用。弹出窗口、重定向和嵌入文档都会改变应用程序需要检查的上下文。

何时适合使用 Browserless

当浏览器执行环境本身构成了工程负担中重要的一部分时,Browserless 就会非常有用。常见任务包括渲染依赖 JavaScript 的页面、生成截图或 PDF,以及通过远程服务运行交互式浏览器工作流。

考虑一个已授权的可视化监控任务。其有用输出是已知页面状态的截图。将浏览器远程托管可以简化工作器部署,但监控规范仍然需要视口、就绪条件、滚动位置以及缺失内容的处理策略。一次成功的浏览器分配并不会提供这些决策。

第二个示例是公共目录工作流。如果记录已经出现在一个简单的 HTTP 响应中,完整浏览器可能会增加不必要的工作。如果记录只在客户端渲染或经过批准的交互后才出现,则可能需要浏览器执行。应根据页面的行为进行选择,而不是将浏览器视为每个 URL 的默认选项。

第三个示例是一个在获准的 Web 应用中操作的代理。代理需要观察和操作,而浏览器服务需要明确的会话生命周期。定义哪些重要的应用操作必须由人工批准、哪些域名属于该任务,以及代理在完成时必须返回哪些证据。

远程浏览器与本地浏览器:决策表

主要的选择在于浏览器在哪里运行、由谁来操作其环境。任一位置都不会自动修复错误的选择器、不确定的页面就绪状态或无效的数据模型。

决策本地浏览器远程浏览器服务
运行时所有权由你的部署进行安装并监督由该服务运行文档化的环境
控制连接通常靠近应用进程跨越网络和服务边界
工件通常写入到你的环境中需要显式的交付路径
页面逻辑你的应用定义成功标准你的应用仍然定义成功标准

当本地执行的运营成本适中且你需要对机器环境的直接控制时,选择本地执行。当浏览器安装、资源监管或分布式执行本身变成一个独立项目时,评估远程服务。比较完整工作流,包括诊断和清理,而不仅仅是初始连接调用。

会话状态需要一个明确的方案

无浏览器界面的会话行为应独立于网站登录行为进行评估。正在运行的浏览器分配、隔离的浏览器上下文、已存储的配置文件以及服务器端登录会话具有不同的生命周期。

网站可能通过 cookie 识别用户,而浏览器会存储额外的源相关数据。 HTTP cookie 状态机制 描述了 cookie 如何将请求与存储的状态关联起来。它并不保证服务器会在浏览器重启后继续接受旧的登录状态。

对于需要连续性的已授权工作流,要确定哪些状态必须持久化以及它存储在何处。避免仅仅为了减少初始化而在无关任务之间共享同一个可变配置文件。账户状态会影响内容、权限和记录的证据,从而使之后的结果难以重现。

保护控制 URL、凭据、cookie 和会话工件。截图可能暴露超出解析器打算收集字段之外的信息。仅保留任务所需的证据,并根据你的要求审查服务的部署与保留控制。

单独评估 Scrapeless Agent Browser

Scrapeless Agent Browser 是另一种托管浏览器选项,它有自己的连接、会话、身份和观察特性。应通过 Agent Browser 执行模型 以及 Agent Browser 产品功能来评估它。“云浏览器”等共享描述并不会让不同服务端点可以互换。

对于使用 Node.js 浏览器客户端的团队,有关 Node.js 浏览器指纹与远程执行 的讨论提供了相关实现背景。连接细节请使用当前产品文档,并根据你实际需要的浏览器生命周期和工作负载评估 Scrapeless 定价 。

本定义中没有性能比较。任何比较都应使用相同的已授权目标页面、完成条件、输出检查和会话配置。仅凭特定供应商示例或一次成功连接,无法确立一般性的成功率。

结论

Browserless 最适合被理解为一个用于远程表达和运行浏览器工作的平台。从一个有代表性的任务开始评估,指定所需的页面状态和工件,并跟踪该任务经过连接、执行、验证和清理的全过程。这些决策揭示了浏览器库、浏览器运行时及其托管服务之间的实际差异。

将浏览器概念付诸实践

使用 Scrapeless Agent Browser 探索一个已授权的浏览器工作流,然后验证你的任务所需的页面状态和输出。

立即注册即可获得 $5 的免费额度 — 无需信用卡.

领取你的 $5 额度 →

常见问题

Browserless 和无头浏览器是同一个东西吗?

Browserless 是一个平台,而无头浏览器是指在没有其正常可见界面的情况下运行的浏览器。托管的工作流仍然需要浏览器运行时、控制接口以及成功页面执行的定义。

使用 Browserless 是否意味着不再需要 Puppeteer 或 Playwright?

使用 Browserless 并不会自动消除对浏览器客户端的需求。一些工作流会保留现有客户端;另一些则使用更高级别的服务接口。请根据所需的交互方式和输出选择合适的接口。

Browserless 是 Scrapeless Agent Browser 的另一种叫法吗?

Browserless 和 Scrapeless Agent Browser 是两个独立的产品。在选择或迁移工作流之前,请比较它们已文档化的接口、状态处理方式、部署选项和工作负载要求。

远程浏览器是否能保证访问每一个网站?

远程浏览器并不能保证访问每一个网站。认证、权限、页面行为、网络策略和站点控制仍然会影响结果。请验证所请求的内容,并在授权范围内操作。

参考资料