什么是铬?定义、用途和决策

什么是铬?

无抓取抓取浏览器使用自开发的基于铬的浏览器环境进行云浏览器自动化。

简而言之

  • 铬是一个开源浏览器项目,提供了多个产品使用的核心浏览器技术,包括谷歌Chrome。 其余的概念由其状态、控制面和生命周期定义。
  • 边界比标签更重要。 浏览器、上下文、页面、配置、会话、视口和网络身份描述不同的层次。
  • 可重复性需要明确的配置。 记录影响结果的浏览器版本、状态来源、地区、视口、网络路线和完成条件。
  • 可见性和持久性是独立的选择。 运行可以是远程可见但短暂,或者在写入长期配置数据时不可见。
  • 负责任的自动化从范围开始。 使用经过批准的帐户和公共或授权的数据,遵守适用规则,并将凭证排除在日志之外。

什么是铬?

铬是一个开源浏览器项目,提供了多个产品使用的核心浏览器技术,包括谷歌Chrome。它包括浏览器进程、渲染基础设施、网络、存储、安全边界、开发工具,以及将网络资源转变为交互式页面的Blink和V8组件。

铬是一个项目和代码库,并不是每个基于它构建的浏览器的同义词。下游浏览器可以添加品牌、更新频道、多媒体组件、帐户集成、政策、遥测选择和特定于产品的服务。因此,自动化文档需要说明它是针对标准铬、Chrome 或其他基于铬的发行版。

精确的定义帮助团队选择工具和诊断故障。如果工程师对多个层使用一个词,一个cookie问题可能会被误认为是浏览器问题,一个视口不匹配可能被误认为是缺少的数据,而一个关闭的控制连接可能被误认为是丢失的配置状态。命名边界使修复变得更小。

铬如何将资源转变为浏览器页面

铬如何将资源转变为浏览器页面可以理解为一个由浏览器和自动化客户端控制的状态转换序列。确切的API有所不同,但导航、渲染、存储、输入、观察和清理仍然是负载关键部分。

浏览器进程

浏览器进程负责顶层协调、导航策略、窗口、权限以及标签和渲染进程之间的关系。它代理页面代码不应直接执行的特权操作。

浏览器进程在生产中应该是可观察的。记录影响它的配置,在页面达到所需状态的点捕获证据,并有意识地关闭资源。这个实践将浏览器运行转变为可解释的操作,而不是只在一台机器上工作的序列。

渲染进程

渲染进程解释和执行网页内容。Blink处理文档解析和布局,而V8执行JavaScript。进程分离限制了渲染错误的影响并支持站点之间的隔离。

渲染进程在生产中应该是可观察的。记录影响它的配置,在页面达到所需状态的点捕获证据,并有意识地关闭资源。这个实践将浏览器运行转变为可解释的操作,而不是只在一台机器上工作的序列。

开发者协议

铬通过Chrome DevTools协议公开调试能力。自动化库在这个控制面上构建更高级别的导航、输入、网络和检查API。

开发者协议在生产中应该是可观察的。记录影响它的配置,在页面达到所需状态的点捕获证据,并有意识地关闭资源。这个实践将浏览器运行转变为可解释的操作,而不是只在一台机器上工作的序列。

当浏览器术语与主要定义保持联系时,更容易使用。 铬项目 最直接地描述了核心概念, 铬多进程架构 定义了邻近的控制或架构边界,以及 无头模式Chrome 提供了第二种实现视角。这些来源描述了标准和浏览器行为;产品选择仍然取决于工作流程、安全模型和目标环境。

铬、Chrome和一个自动化库

铬、Chrome和一个自动化库区分了在随意讨论中经常被合并的术语。该表专注于所有权和操作效果,而不是特定于品牌的API名称。

概念主要含义操作角色典型适用
它是什么开源浏览器项目谷歌浏览器产品控制浏览器的客户
渲染责任包含 Blink 和 V8使用 Chromium 基础将渲染委托给所选浏览器
发布和打包项目构建和快照谷歌发布渠道和产品服务库包和兼容的浏览器构建
为什么这很重要定义引擎行为代表最终用户环境定义自动化的人机工程学

这些类别可以共存于一个架构中。一个云分配可以运行一个无头的 Chromium 进程,创建一个孤立的上下文,打开多个页面,向每个页面应用一个视口,并附加一个持久的配置文件。只有当每个名词保持其自身的工作时,架构才能被理解。

Chromium 的常见用途

当其特定边界减少操作风险或使浏览器行为可测时,Chromium 是有用的。这些常见用途显示了每个模式实际满足的要求。

跨浏览器引擎覆盖

测试 Chromium 引擎与其他浏览器引擎的行为。

一个良好的实现定义了所需的起始状态、完成证据以及在浏览器打开之前的清理规则。

远程自动化

通过支持的控制协议将客户端连接到管理的 Chromium 实例。

一个良好的实现定义了所需的起始状态、完成证据以及在浏览器打开之前的清理规则。

渲染研究

使用开发者工具检查进程、布局、网络和 JavaScript 行为。

一个良好的实现定义了所需的起始状态、完成证据以及在浏览器打开之前的清理规则。

嵌入式产品

在可重用的 Chromium 组件和内容层上构建基于浏览器的产品。

一个良好的实现定义了所需的起始状态、完成证据以及在浏览器打开之前的清理规则。

Chromium 背后的状态模型

一个可靠的 Chromium 工作流程将配置、运行时状态、网站状态和证据分开。配置是操作员在启动前选择的内容:浏览器构建、启动模式、区域设置、时区、权限、视口和网络路由。运行时状态涵盖分配的进程、上下文、页面、内存、打开的连接和控制通道。网站状态包括 cookies、源存储、服务器端账户记录,以及当前渲染的文档。证据是用于解释发生了什么事件的记录。

这些层具有不同的生命周期。一个页面可以关闭,而其上下文 cookies 仍然存在。一个上下文可以关闭,而持久配置文件在磁盘上仍然存在。远程控制连接可能会消失,而服务仍在短时间内拥有浏览器。网站登录在自动化会话结束后可能仍然有效。因此,清理需要对工作流程创建的每一层进行显式操作。

状态所有权还控制并行性。在一个上下文中的两个页面可以有意共享身份验证,但两个独立的作业通常不应该。一个浏览器中的两个上下文可以在争夺同一进程资源的同时隔离 cookies。两个持久的浏览器启动不应指向同一活动用户数据目录。并发的安全单位由隔离和共享资源限制共同决定。

使用关联标识符而不暴露控制秘密。作业 ID 可以连接应用日志、浏览器事件、屏幕截图和最终输出。会话端点、cookie 值、身份验证头或配置文件存档不应担任此角色,因为任何读取日志的人都可能获得对浏览器或账户的访问权限。在日志记录边界脱敏值,而不是依赖后续的清理。

Chromium 的可观察性

可观察性应该回答四个问题:什么环境运行,浏览器看到什么,控制器发送了什么动作,以及工作流程为何认为任务已完成。有用的事件记录包括时间戳、关联 ID、导航后的页面 URL、动作名称、非秘密参数、持续时间、结果和简短的错误分类。它避免页面内容,除非这些内容是所需的证据。

根据失败模式选择工件。当资源被阻止或重定向时,网络事件会有所帮助。当预期元素缺失或结构不同时时,DOM 快照会有所帮助。当覆盖物遮挡控件、响应式布局发生变化或字体改变几何时,屏幕截图会有所帮助。当登录状态消失时,存储元数据会有所帮助。当多个交互的顺序重要时,录制会有所帮助,但应谨慎保留,因为它可能捕获敏感信息。

完成检查应与其验证的动作相邻。导航后,验证 URL、响应或页面标记。输入后,验证字段值或结果状态。单击后,验证导致的路由、对话框、网络请求或文档变更。提取后,验证所需字段和数据类型。没有异常返回的命令不能证明预期的可见用户结果发生。

操作仪表板应区分产品健康和目标页面变异。浏览器分配失败、控制通道失败、渲染器崩溃、目标 HTTP 响应、应用程序级空状态和选择器不匹配需要不同的标签。将它们合并为一个通用的失败率隐藏了需要关注的层,并鼓励对狭窄问题进行广泛更改。

限制和失败模式

仅版本标签无法描述自动化环境。启动标志、分发补丁、启用的特性、编解码器、字体、操作系统和协议兼容性都会影响结果。当可重复性重要时,记录实际的浏览器构建和客户端版本,并避免假设一种基于 Chromium 的产品中的行为无更改地转移到另一种产品。

当在正确的层次捕获证据时,大多数失败变得更容易分类。导航响应解释了传输和服务器行为。DOM 解释了呈现的结构。截图解释了可见布局。存储检查解释了 cookies 和源状态。会话日志解释了生命周期。这些文物中的任何一个都不能替代其他所有文物。

固定延迟是一个较弱的完成信号,因为页面并没有在一个普遍的时间量内完成。更倾向于与任务相关的条件:一个路径稳定,一个标题出现,一个已知请求完成,一个控件变得可用,或者预期的数据存在。设置一个有限的超时,使缺失的条件以有用的证据结束。

开发、预发布和生产

开发倾向于可见性和快速诊断。运行一个小的代表性案例,暴露浏览器状态,并将截图或跟踪与代码保持接近。预发布应镜像生产配置,同时使用受控帐户和目标。生产倾向于决定性的输入、最小权限、有限资源使用、结构化遥测和自动清理。穿过这些环境的过程应改变配置,而不是重写导航逻辑。

版本控制适用于浏览器行为以及应用程序代码。在平台允许的情况下,固定兼容的浏览器和自动化客户端版本,在升级前查看发布说明,并运行一个重点兼容性套件。该套件应覆盖导航、存储、输入、下载(如果使用)、截图,以及工作流程所依赖的任何协议特性。通过页面标题检查的通过对于浏览器升级来说过于浅显。

容量规划应从页面开始,而不是一个普遍的每台机器浏览器数量。测量内存、CPU、网络流量、页面持续时间和代表性工作的文物大小。繁重的客户端应用程序、视频、大型画布和许多打开的页面会改变成本概况。根据观察到的资源使用和服务限制设置并发,然后留出余地,以便一个昂贵的页面不会使无关会话不稳定。

生产清理应是幂等的:在部分失败后调用它仍应关闭存在的页面、上下文、会话和临时文件。清理日志应确认哪些资源被释放,而不打印其秘密值。持久化配置文件单独处理,因为删除一个有意耐用的配置文件并不是普通的工作清理。

安全性、隐私和负责任的使用

浏览器环境可以保存凭证、个人数据、下载和仅对授权帐户可见的内容。对帐户和操作员应用最小特权,保持秘密文件不出现在源文件中,限制对录音的访问,并在有文件记录的保留政策下删除状态。一个方便的调试文物如果没有审核而共享,可能会成为数据泄漏。

自动化不应在未获得许可的情况下用于访问私人、机密或受限制的信息。检查网站条款、适用的机器人指导、合同义务以及治理数据和管辖权的法律。技术能力并不意味着授权。

与指纹相关的配置需要额外关注。浏览器特性,如语言、显示、编解码器、字体和设置,可能会有助于身份识别,如引用的标准和隐私指导中所述。使用这些控制进行兼容性、隔离和批准测试;不要用它们来假冒他人或掩盖滥用活动。

如何选择合适的设置

当目标环境或工具需要其引擎和协议表面时,选择 Chromium。当要求是专门匹配最终用户使用的 Google 产品时,选择 Chrome。对于可移植测试,将浏览器特定行为放在一个小适配器后面,并对重要路径进行多于一个引擎的验证。

  • 从所需的结果开始。 定义工作流必须产生的页面状态、数据、交互或证据。
  • 选择最小的状态边界。 一个页面、上下文、会话或配置文件不应比任务要求的时间更久或共享更多数据。
  • 使环境输入明确。 浏览器构建、区域设置、时区、视口、权限和网络路线可能会改变结果。
  • 在扩大规模之前设计可观察性。 捕获足够的证据,以区分网络、渲染、选择器、存储和生命周期失败。
  • 故意关闭和清理。 释放远程资源,移除临时状态,只保留经过批准的文物。

Scrapeless Scraping Browser 文档 描述了管理会话的表面,而 Scrapeless Scraping Browser 产品页面 解释了该产品在云浏览器自动化中的作用。这些产品引用补充了标准链接,而不是改变一般定义。

结论

Chromium 作为一个精确的架构术语比作为一个营销标签更有用。它的价值来自于它拥有的状态、它支持的浏览器行为以及它产生的操作边界。保持这些属性明确,本地、远程、持久、隔离、可见和无人值守执行之间的选择便变得简单。

对于生产工作,将该定义与具体证据配对:一个已知的起始状态,一个有意义的完成条件,保护的日志和故意的清理。这样的组合使得浏览器自动化更容易审查、调试和维护。

准备构建一个受管理的浏览器工作流吗?

当工作流需要远程 Chromium 渲染、受控会话和浏览器级交互时,使用 Scrapeless Scraping Browser。

开始免费 →

常见问题

Chromium 是不是与浏览器配置文件相同的东西?

不。Chromium 和浏览器配置文件描述不同的层次。配置文件是持久浏览器数据的集合,而本页主题描述的是一种执行模式、容器、身份模型或基础设施模式。一个工作流可以使用这两者,但应单独命名它们。

Chromium 是否使自动化不可检测?

不。没有任何浏览器设置或产品可以保证自动化是不可观察的。网站可能评估浏览器属性、网络上下文、账户、交互历史和服务器端行为。仅在授权范围内使用自动化,并将检测行为视为可观察的系统属性,而不是不可见性的承诺。

团队什么时候应该选择 Chromium?

当一个团队的特定状态、渲染、隔离或操作属性解决了文档要求时,应该选择 Chromium。决定应比较一个简单的 HTTP 客户端、本地浏览器自动化和受管浏览器执行,然后选择返回所需结果的最简单选项。

Chromium 工作流中应该记录什么?

记录浏览器和客户端版本、非机密配置、会话或作业关联 ID、目标 URL、重要状态转换、最终结果和清理结果。仅在需要时存储屏幕截图或录制,保护它们作为潜在的敏感数据,并且永远不要记录 cookies、凭据或远程控制端点。

如何可靠地测试 Chromium?

用明确的起始状态、稳定的选择器或文档信号、有限的超时、代表性的页面变体和清晰的完成检查测试 Chromium。比较最终的 DOM 或用户可见结果,而不是依赖于固定的延迟,并保持一个诊断路径,暴露屏幕截图、痕迹或实时浏览器状态。

参考文献