什么是 Chromium?
Scrapeless Agent Browser 提供托管的、基于 Chromium 的浏览器会话,用于网页自动化和动态内容提取。
Chromium 是一个开源浏览器项目,其代码构成了包括 Google Chrome 在内的多个网页浏览器的基础。Chromium 远不只是一个页面渲染器:它还包括浏览器进程、网络、存储、安全机制、开发者工具,以及将网页内容变成交互式应用所需的各类组件。
对于自动化团队来说,Chromium 是执行页面的运行时。一个库发送指令,托管服务提供机器,而 Chromium 负责加载资源并维护浏览器状态。了解每一层分别承担的职责,有助于诊断页面为何呈现不同、内存消耗异常,或在升级后行为发生变化。
Chromium 项目包含什么
Chromium 是一个浏览器项目和代码库,而不是某个单一渲染组件的名称。 Chromium 浏览器项目 发布源代码、架构资料和开发信息。一个 Chromium 构建会将许多组件组合成能够浏览网站并暴露开发者接口的浏览器。
一个有用的区分是项目、构建和产品。项目是上游代码和工程工作。构建是使用特定选项从这些代码组装出来的具体可执行文件。产品则是为用户打包的浏览器,并可能添加品牌、服务、策略或分发功能。
这些区分可以避免一种常见的评估错误:认为所有具有 Chromium 血统的浏览器在运行层面完全相同。实际的可执行文件、启动配置、运行环境以及所提供的服务共同决定你的自动化究竟运行在什么之上。当你需要可复现行为时,请记录这些细节。
Blink 和 V8 如何分工
Blink 负责 Web 平台渲染和文档行为,而 V8 在 Chromium 架构中执行 JavaScript。 Blink 渲染引擎 是 Chromium 的一部分,并不是整个浏览器的另一种叫法。
一次导航从获取文档及其关联资源开始。HTML 解析会构建文档节点;样式影响布局;脚本可以修改文档;浏览器最终绘制并合成可见结果。这些活动彼此交织。脚本可以在接收到初始文档后继续添加内容,这解释了为何原始 HTML 中可能没有屏幕上可见的信息。
V8 执行驱动这些更新的 JavaScript。渲染系统随后反映文档和布局中的变化。如果应用在用户选择某个筛选条件后才请求数据,那么单纯的文档下载完成或已有的页面标题都不能证明所请求的记录已经出现。
对于数据提取,要选择与目标信息相关的就绪条件。某个商品记录、结果数量或已启用的控件,比随意假定“导航完成就意味着应用完成”能提供更有用的证据。
为什么 Chromium 使用多进程
Chromium 将浏览器职责分布在多个进程中,以支持隔离并管理浏览器工作。其 多进程架构 将主浏览器进程与渲染进程和其他组件分离。
浏览器进程协调高层活动。渲染进程在浏览器控制的边界内处理网页内容。额外的进程可以支持图形或网络等服务。不要把系统简单建模为“每个标签页一个进程”:进程分配取决于实现决策、站点隔离、配置以及相关内容。
这在衡量作业时很重要。只观察初始进程可能会遗漏浏览器的大部分资源消耗。一个包含许多 frame 并运行大量脚本的应用,其资源占用可能与一个简单页面完全不同,即使两者在你的调度器中都被计作一个任务。
进程边界也解释了为什么清理属于浏览器生命周期的一部分。关闭一个页面不一定会关闭与该作业相关的所有页面、上下文或进程。请使用自动化客户端和托管服务的文档化关闭行为,并验证预期的资源确实已经消失。
Chromium 和 Chrome 是范围不同但有关联的产品
Google Chrome 构建于 Chromium 之上,而 Chromium 是开源基础。两者名称不应在技术需求、支持声明或测试报告中随意互换。
| 术语 | 它标识的内容 | 应记录的内容 |
|---|---|---|
| Chromium | 浏览器项目或从其源码派生的构建 | 构建版本和发行来源 |
| Chrome | 基于 Chromium 的浏览器产品 | 产品版本和渠道 |
| Blink | 渲染与 Web 平台组件 | 相关浏览器实现 |
| Automation client | 控制浏览器操作的软件 | 库与协议兼容性 |
例如,明确点名最终用户浏览器的测试需求,应针对该产品进行验证。一个服务端提取流程则可能更关心受支持的 Web 特性、稳定的浏览器版本以及托管环境。正确的选择应遵循验收需求,而不是笼统地宣称某个浏览器标签总是更优。
无界面 Chromium 仍然在执行浏览器
无界面 Chromium 在不显示常规浏览器窗口的情况下执行浏览器工作。它可以加载脚本、计算布局并生成屏幕截图,因此与只下载响应正文的 HTTP 客户端有本质区别。
无界面浏览器仍然需要那些会影响页面输出的环境输入。字体会改变换行方式;视口会改变响应式布局;区域设置会改变标签和格式;Cookie 会改变同意或个性化。有无可见桌面窗口并不会消除这些变量。
当不同环境中的截图不一致时,应先比较完整的渲染设置,而不是直接归咎于无界面模式。检查浏览器构建版本、字体、视口、设备缩放、页面状态,以及捕获图像的时间点。两个在不同应用状态下截取的屏幕截图并不能单独证明引擎存在差异。
无界面模式对访问权限或匿名性也毫无说明。网站仍然会接收到浏览器请求,并且可以检查暴露给页面脚本的属性。应将渲染模式视为一种执行设置,将网络路由、身份和授权使用作为单独的决策。
浏览器配置文件在多次运行之间保留选定状态
Chromium 配置文件存储与某个环境相关联的浏览器数据,而正在运行的页面还会持有临时的内存状态。已保存的 Cookie 和存储内容会影响后续访问,而不必重新生成每个打开的文档或脚本变量。
可以把配置文件看作一次浏览器运行的输入。一个全新的配置文件可能会产生同意对话框和默认语言界面;已有的配置文件可能包含会改变同一页面的偏好设置。两种结果本身都没错,它们回答的是不同的问题。应先决定哪种状态与工作流相匹配,再来比较输出。
当任务涉及你被授权使用的账户时,隔离尤为重要。不相关的作业不应继承其他账户的浏览器数据。使用有意识的配置文件归属策略,避免把真实凭据或会话痕迹复制到测试日志中。
对于确定性的渲染检查,要记录运行是从干净环境开始,还是使用了某个已命名的配置文件。若需要持久化,测试在浏览器关闭后有哪些状态得以保留,以及应用在导航时会重建哪些内容。已保存的配置文件并不能保证网站的服务端会话仍然有效。
版本管理是自动化可靠性的一部分
浏览器升级会改变 Web 平台行为以及自动化兼容性,因此浏览器版本应纳入部署计划。控制库与浏览器必须在工作流使用的协议特性上保持一致。
使用一小组具有代表性的页面来评估一次升级。包括你要截取的布局、所依赖的交互,以及与抽取相关的重要嵌入内容。比较有意义的输出,比如必需的记录字段和应用状态,而不仅仅是确认浏览器能启动。
在诊断时要把页面变更与浏览器变更区分开来。如果目标应用改变了其标记结构,即使可执行文件没有变化,也可能出现选择器失效。若只是浏览器构建版本变了,应先检查浏览器配置和协议兼容性,再去重写无关的抽取逻辑。
维护一份清单,标明可执行文件来源、版本、自动化客户端和运行环境。当你需要重现某个历史渲染问题时,“最新 Chromium” 这样模糊的标签远远不够。
通过 Scrapeless Agent Browser 使用 Chromium
Scrapeless Agent Browser 提供一个受管的、基于 Chromium 的浏览器自动化环境。其 浏览器基础设施 负责浏览器托管,而你的应用负责定义导航、抽取以及结果检查。
围绕你需要观察的页面行为来选择浏览器配置。桌面端的清单页面和窄屏移动端界面可能通过不同控件暴露相同记录。将环境设置与输出一并记录下来,以便后续对比能够解释记录或屏幕截图差异的原因。
“ Node.js 远程浏览器工作流 ” 解释了客户端程序与其浏览器运行时之间的分离。规划容量时请查看 Scrapeless 定价 ,并根据实际工作负载评估成本,而不是从不相关的浏览器任务推断费用。
结论
Chromium 是浏览器基础,它将渲染、脚本执行、网络、存储和安全边界组合在一起。可靠的自动化依赖于完整环境:已知的构建版本、兼容的客户端、经过设计的配置文件以及针对页面的就绪检查。在修改消费输出的业务逻辑之前,先从这些输入着手调试。
在云端运行你的 Chromium 工作流
使用已知渲染配置和页面特定就绪检查来体验 Scrapeless Agent Browser。
立即注册即可获得 $5 in free credit — 无需信用卡.
领取你的 $5 额度 →常见问题
问:Chromium 是渲染引擎吗?
Chromium 是一个浏览器项目,其中包含 Blink 渲染引擎。只把 Chromium 称为渲染器,会忽略运行浏览器所需的网络、存储、浏览器协调以及其他组件。
问:Chromium 和 Google Chrome 一样吗?
Chromium 和 Google Chrome 共享代码基础,但指代的事物不同。兼容性要求应当指明正在测试的实际产品或构建版本。
问:Chromium 能渲染 JavaScript 应用吗?
Chromium 可以执行 JavaScript 并渲染应用更新。你的自动化仍然必须等待目标内容就绪,而不能假定接收到初始文档就代表应用工作流已经完成。
问:无界面模式会让 Chromium 变得匿名吗?
无界面模式不会让 Chromium 变得匿名。网络身份、浏览器属性、账户状态以及网站自身的观测仍然是彼此独立的问题。
问:要固定哪些内容才能实现可复现的浏览器输出?
要获得可复现的浏览器输出,需要已知的浏览器构建版本、客户端版本、视口、相关字体、区域设置、配置状态以及捕获条件。固定那些对你的特定页面有实质影响的变量。