什么是浏览器会话?
Scrapeless Agent Browser 为授权的浏览器工作流提供托管的浏览器会话和持久化的配置文件功能。
浏览器会话是一个浏览活动的时间段或单位,但其确切边界取决于具体语境。该术语可以指用户的一次访问、一个标签页的存续期、一次网站登录、一个浏览器进程,或一次远程自动化资源分配。在日常交流中,这些含义彼此重叠,但在技术上的生命周期却各不相同。
对于工程工作,在使用“会话”一词之前先定义其边界。说明是什么创建了它、它包含哪些数据、哪些操作共享这些数据,以及是什么终止它。这样可以避免诸如“关闭标签页会将账户登出”或“断开客户端连接会删除个人资料”之类的假设。这两种说法都并非普遍成立。
一个浏览器会话有几种可能的边界
浏览器会话可以指多个状态和控制层。明确所指的层级有助于说明哪个组件拥有其生命周期,以及有哪些证据表明该生命周期已经结束。
浏览器进程是一个正在运行的应用程序环境。浏览器上下文是由自动化工具暴露出的隔离边界。页面或标签页包含一个文档及其浏览活动。网站会话是一种应用关系,通常与身份验证相关联。配置文件是可重复使用的浏览器数据。远程服务会话是一个已分配的资源,具有其自身的控制和过期规则。
该 HTML 浏览上下文模型 描述了某些层之下所基于的网页文档关系。它并不会使每个自动化工具的上下文或托管会话都与 HTML 浏览上下文完全相同。
在设计工作流时,要使用最精确的名词。“关闭报告标签页”不同于“结束远程浏览器分配”。“删除已保存的配置文件”不同于“退出网站登录”。精确的措辞可以防止清理代码被要求去达成它实际上无法控制的结果。
Cookie 将请求与网站状态连接
Cookie 可以让网站将多个请求与浏览器状态或服务器端会话关联起来。 HTTP Cookie 机制 定义了存储和请求规则,包括作用域和生命周期行为。
一个 cookie 可能携带的是会话标识符,而不是应用程序的完整状态。服务器可以单独存储账户权限或购物车数据。删除浏览器中的副本会改变后续请求,但不一定会删除服务器上存储的记录。
会话 Cookie 也需要谨慎用词。它们在浏览器中的保留行为与网站的授权有效期不同。服务器可以在浏览器丢弃其 Cookie 之前停止接受某个会话,或者将账户关系与某个特定的客户端存储项解耦。
对于已批准的自动化任务,记录是否需要身份验证,以及该任务如何确认账户仍然被授权。不要仅仅因为存在 cookie 就推断登录有效。在不在日志中暴露凭据的前提下,检查目标页面或已记录的应用程序状态。
Session Storage 和 Local Storage 具有不同的作用域
Web Storage 为同源提供键值对存储,并针对其两种主要形式设定了不同的生命周期规则。 Web Storage 规范 区分会话存储与本地存储。
会话存储与源和顶级浏览上下文的页面会话相关联。本地存储与源相关联,并且在浏览器策略和用户控制的前提下,可以在单个页面会话之外持续存在。两个术语都不是浏览器中保存的所有状态的同义词。
选项卡作用域的偏好设置可以在重新加载后保留,同时仍然与其他选项卡中的活动相互独立。本地偏好设置可以影响之后的访问。一个配置文件可以保留多种类型的浏览器数据,但其具体内容和重用行为取决于浏览器或服务的实现。
避免将导出的 Cookie 视为应用会话的完整备份。应用程序还可能依赖于存储、服务器端状态、权限或尚未被捕获的交互。通过需要延续的应用结果来定义连续性需求。
隔离防止意外交叉共享状态
隔离确保一个任务的浏览状态不会改变另一个任务的起始条件。正确的边界取决于这些任务被允许共享的内容。
公共页面监控任务可能需要在每次观测时都处于干净状态。授权账号的工作流程则可能会有意重复使用同一配置文件以保持连续性。这是不同的需求,只要明确说明,两者都可以是合理的。
在多个并发任务之间共享一个可变的配置文件会产生隐藏的耦合。其中一个任务可能在选择位置的同时,另一个任务正在读取价格。还有的任务可能在收集报告时将用户注销。由此产生的记录单独来看可能都格式良好,但却代表了不一致的应用程序状态。
为可变状态选择一个明确的所有者。如果必须重用某个配置文件,需定义哪个任务可以操作它,以及它在何时可用于后续工作。如果任务应当彼此独立,则使用所选运行时支持的隔离边界,而不是依赖操作人员记得重置每一个偏好设置。
远程会话生命周期是一个基础架构契约
远程浏览器会话的生命周期由其托管服务和配置定义。分配、连接、断开、过期和删除可以是相互独立的事件。
客户端可能在远程浏览器仍保持活动时丢失连接。服务可能在客户端仍持有表示该分配的对象时使该分配过期。已保存的配置文件可以在正在运行的浏览器停止后仍保持可用。以上这些情况都不应仅根据某个本地变量的存在来进行诊断。
“ WebDriver 会话模型 ”展示了一种具有显式创建和删除的浏览器控制关系。其他服务使用不同的接口,因此应验证它们文档中描述的生命周期,而不是假定其行为完全相同。
在设计分配的同时设计清理策略。决定当任务成功、未通过校验或提前停止时,必须关闭哪些内容。确认服务的释放行为,并只保留足以解释结果所需的工件。在其所有者或生命周期策略终止之前,空闲资源依然是资源。
授权报告工作流的会话规划
授权报告工作流需要在认证、浏览器生命周期和输出校验之间建立有意图的关联。下面是一个设计示例,而不是声称执行了某个真实账号的工作流。
首先确认获准使用的账号和报告范围。决定任务是应复用已保存的配置文件还是从干净状态开始。在解释任何记录缺失之前,先确认该账号可以查看预期的报告。
保持报告导航及其依赖的交互位于预期的浏览器状态之内。位置筛选器、日期范围或账号选择都可能在不改变报告 URL 的情况下影响结果。将这些输入与输出一起记录,这样后来的阅读者就能知道该报告代表的含义。
将完成定义为可见状态或数据层级的状态。下载的文件应具有预期的格式和内容。页面导出应属于请求的报告。以 HTML 保存的登录界面是一种认证结果,而不是已完成的报告。
在采集完成后结束活动的浏览器资源。仅在未来连续性已获授权且确有需要时才保留配置文件。是否保留配置文件的决策应独立于是否保留报告本身的决策。
一眼看懂的状态边界
最有用的比较方式是看每个边界拥有什么以及它能建立怎样的结束状态。
| 边界 | 它所代表的内容 | 需要单独检查的内容 |
|---|---|---|
| 标签页或页面 | 文档的浏览活动 | 其他标签页以及网站端的登录状态 |
| 网站会话 | 服务器识别的应用连续性 | 浏览器进程和保留的本地数据 |
| 配置文件 | 可复用的浏览器数据 | 服务器是否仍接受该状态 |
| 远程分配 | 受托管的浏览器资源 | 保留的配置文件和外部工件 |
在编写操作说明时使用这份对比表。对“清除会话”的请求应明确指向哪一行,以及之后预期的结果是什么。否则,实现时可能完成了一种清理操作,却把关键状态留在原处。
Scrapeless Agent Browser 中的浏览器会话
Scrapeless Agent Browser 将运行中的浏览器工作与持久化配置文件功能分离。 Agent Browser 配置文件生命周期 描述可复用的浏览器数据,而 Agent Browser 平台 描述其受管的执行角色。
相关的 Scrapeless 中持久化浏览器配置文件 说明提供了产品背景。请使用当前文档了解你的客户端所需的配置,并根据预期的活动浏览器时间和工作负载需求评估 Scrapeless pricing 。
这种区分在选择产品之前就已经有用。写下哪些内容需要持久化,哪些必须隔离,以及活动资源应在何时结束。然后选择能够实现这些要求的服务配置。“persistent session”之类的产品标签无法替代具体的状态约定。
保护你有意保留的状态
被保留的浏览器状态可以授予对账号的访问权,因此应将其视为敏感应用数据。限制哪些人可以使用某个配置文件,避免将其复制到共享工件中,并在工作摘要中排除认证材料。
观测功能同样需要做保留决策。截图和录屏可能会捕获超出报告字段之外的账号页面。只保留最小且有用的证据,并在工作流不再需要时移除其访问权限。干净的操作边界既保护可复现性,也保护账号安全。
结论
只有在为浏览器会话命名其边界之后,它才是可理解的。区分标签页、网站登录、已存储的配置文件和远程分配,然后分别为它们定义创建、共享、校验与清理流程。这种方法让连续性变得有意图,并防止已完成的浏览器任务留下无法解释的状态。
将浏览器概念付诸实践
使用 Scrapeless Agent Browser 探索授权浏览器工作流,然后验证任务所需的页面状态与输出。
立即注册并获得 $5 免费额度 — 无需信用卡.
领取您的 $5 额度 →常见问题
关闭标签页会将网站登出吗?
关闭标签页并不会普遍使网站登出。身份验证可能依赖于比标签页生命周期更长的 cookie 和服务器端状态。当需要撤销授权时,请使用网站自身的退出登录功能。
session storage 和浏览器会话是同一回事吗?
session storage 是一种特定的 Web Storage 机制,而不是所有浏览器会话边界的统称。浏览器进程、网站登录、远程分配和配置文件各自都有不同的生命周期。
已保存的配置文件能保证之后一定能成功登录吗?
已保存的配置文件不能保证之后一定能成功登录,因为网站可能会使授权过期或撤销授权。请在开始下一次授权工作流程时检查所需的应用状态。
一次会话日志应该包含什么?
一次会话日志应包含非机密配置、任务关联、重要状态转换、验证结果以及清理状态。避免记录 cookie、凭证、完整控制 URL 或不必要的账户内容。