AI沙箱可以运行浏览器自动化,但具体是否适合取决于你的工作流实际需求。像 Novita Sandbox 这样的沙箱为你的智能体提供一个完整的、隔离的 Linux 环境:你可以安装无头浏览器、运行 Playwright 或 Puppeteer、浏览页面、提取数据、提交表单、截取结果——所有这些都在一个由智能体控制的临时容器内完成。但它不会提供持久化的托管浏览器基础设施、会话池、住宅代理,也无法像专用浏览器自动化平台那样跨任务保持长期有状态的浏览器会话。
本指南涵盖 AI 沙箱适用的场景、不适用的场景、需要事先了解的硬性限制,以及 Novita Sandbox 如何应对每种情况。
“沙箱中的浏览器自动化”究竟意味着什么
当你在 AI 沙箱中运行浏览器自动化时,你并非在使用托管的浏览器云服务。你是在一个隔离的 Linux 环境中安装无头浏览器二进制文件,并自行运行它。你的智能体(或你的代码)通过调用 Playwright、Puppeteer、Selenium 或任何等效库来控制该浏览器。沙箱提供操作系统、CPU 和内存、文件系统和网络接口。你提供浏览器、自动化逻辑和指令。
这种模式具有实际优势:
- 完全的环境控制。 你可以安装任何浏览器版本、任何扩展、任何依赖项。没有任何东西被锁定在预构建的镜像中。
- 每个任务的隔离性。 每个沙箱都是一个独立的容器。崩溃的脚本、触发下载的页面、或修改文件系统的智能体操作都会被限制在容器内,不会影响其他任何内容。
- 可从 LLM 进行编程。 由于沙箱暴露了 shell 和文件系统,LLM 可以实时编写浏览器自动化脚本、执行它们、观察输出并迭代,而无需通过专有的浏览器 API 表面进行路由。
Novita Sandbox 平均启动时间低于 200 毫秒(Novita Sandbox 文档,于 2026-06-28 检查),并按实际 vCPU 和内存使用量按秒计费(定价页,于 2026-06-28 检查),因此为每个浏览器任务启动新环境的开销很低。
AI 沙箱适用的场景
智能体网络研究和一次性爬取
如果你的智能体需要访问页面、提取结构化数据、跟踪链接并返回结果,沙箱是一个自然的选择。智能体编写或运行 Playwright 脚本,启动无头 Chromium 实例,收集所需内容,然后丢弃沙箱。你获得隔离性、可重现性,并且没有在无关任务间泄露 cookie 或会话状态的风险。
示例工作流:
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create()
script = """
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/pricing")
text = page.inner_text("table")
print(text)
browser.close()
"""
result = sandbox.commands.run(
f"pip install playwright -q && playwright install chromium --with-deps -q && python3 -c '{script}'"
)
print(result.stdout)
sandbox.kill()
这种模式在竞争研究、数据收集、表单检查和链接爬取等每个任务自包含的场景中非常有效。
沙箱化评估与智能体测试
如果你正在测试一个浏览器使用智能体,或评估 AI 如何处理网络任务,你需要一个在运行之间重置且不积累副作用的环境。沙箱通过设计提供了这一点。每次评估运行都有干净的起点——没有缓存的凭据、没有遗留的 cookie、没有前一次运行修改的系统文件。
像 browser-use 和 Skyvern 这样的工具正是为此原因被设计在沙箱环境中运行。沙箱是智能体行动的受控表面;你观察发生的情况并将其拆除。
原型和演示工作流
当你构建一个结合 LLM 推理与网络交互的概念验证时——比如价格监控、表单填充器、网络 QA 机器人——沙箱让你能快速迭代,而无需配置持久化基础设施。你可以更改浏览器自动化逻辑,在隔离容器中测试它,完成后丢弃环境。
涉及网络的代码执行
如果你的智能体主要进行计算,但偶尔需要获取页面、解析渲染后的 DOM 或验证 URL,沙箱可以将其作为代码执行能力的自然扩展来处理。你不需要为偶然的网络访问单独使用浏览器服务。
构建前需了解的硬性限制
会话持久性默认是临时的
Novita Sandbox 实例在 sandbox.kill() 后不会保留状态。Cookie、localStorage、缓存的认证令牌、浏览器配置文件和下载的文件会在沙箱结束时消失。如果你的工作流要求跨多个智能体轮次保持登录的浏览器会话,你需要:
- 在会话期间保持沙箱存活(根据 Novita Sandbox 文档,于 2026-06-28 检查,最长支持 24 小时),或
- 显式保存和恢复浏览器状态(Playwright 支持
storage_state导出/导入),或 - 为该部分工作流使用专用的有状态浏览器平台。
为保持会话连续性而运行长寿命沙箱是可行的,但这意味着需要在浏览器操作之间为空闲计算付费。对于用户登录一次然后智能体交互数小时的工作流,具备会话管理的专用浏览器服务通常更具成本效益。
网络访问反映部署配置
默认情况下,Novita Sandbox 实例具有出站互联网访问权限,用于安装包和页面请求。当你在自己的 VPC(支持 AWS 和 GCP)内部署 Novita Sandbox 时,可以收紧网络行为。在该配置中,你控制出站规则,可以限制仅访问内部 URL,或通过自己的代理路由流量。
这对浏览器自动化的意义:如果你需要住宅代理、IP 轮换或特定的地理位置出口地址,你需要自行配置(例如,在 Playwright 启动选项中设置代理)。沙箱不包含内置代理层。
资源大小对浏览器工作负载至关重要
无头 Chromium 并不轻量。在容器内运行浏览器会在智能体其他操作的基础上增加内存压力。Novita Sandbox 按实际 vCPU 和内存计费,因此大型浏览器任务的成本高于纯计算任务。为稳定的无头浏览器会话分配至少 1-2 GB 内存。对于并行浏览(多个标签页或并发页面),请相应调整大小。
安装增加延迟
首次在全新沙箱中安装 Playwright 及其浏览器二进制文件时,根据网络条件以及是否获取完整浏览器包,需要 30-90 秒。对于延迟敏感的工作流,要么将依赖项烘焙到自定义环境镜像中,要么在流水线中缓存它们。如果启动时间很重要,请提前规划。
安全边界
在沙箱中运行浏览器自动化提供了有意义的隔离控制,但对于每种威胁模型,它并不能保证绝对包含。以下是隔离实际覆盖的内容:
文件系统隔离和下载处理。 每个沙箱实例都有自己的文件系统。浏览器下载文件、脚本写入磁盘或智能体操作修改配置文件——包括浏览器保存到默认下载目录的任何内容——都保留在该容器内。如果你的智能体需要对下载的文件进行操作(解析 CSV、检查 PDF),它可以在沙箱内安全地进行。如果需要将下载的内容传回调用方,请在会话结束前使用沙箱文件 API 显式复制它。
进程隔离。 浏览器进程在容器内运行。浏览器中的崩溃、内存泄漏或无限循环不会影响其他沙箱或主机。
会话隔离和凭据包含。 由于每个任务可以从干净的容器开始,因此无关任务之间不存在隐式的凭据、cookie、localStorage 或浏览器历史记录共享。这对于不同用户或任务共享相同基础设施的智能体工作流非常重要。对服务进行身份验证的会话——获取访问令牌、会话 cookie 和任何本地缓存的凭据——这些值仅限定在该沙箱实例内。
截图捕获和视觉输出。 沙箱内的无头浏览器通过 Playwright(page.screenshot())或 Puppeteer(page.screenshot())原生支持截图。截图写入沙箱文件系统,可供智能体读取。这支持视觉验证工作流、审计证据收集以及计算机使用风格的智能体循环——该循环在决定下一步操作前评估渲染后的页面状态。
DOM 操作日志和回放。 Playwright 的 tracing API 允许你记录每次 DOM 交互的跟踪信息——点击、导航、表单输入、网络请求——并将其保存为 .zip 跟踪文件。在沙箱内,在会话开始时启用跟踪,运行自动化,然后在退出时保存跟踪:
context = browser.new_context()
context.tracing.start(screenshots=True, snapshots=True)
page = context.new_page()
# ... 自动化步骤 ...
context.tracing.stop(path="/tmp/trace.zip")
保存的跟踪是浏览器操作的完整审计记录。你的智能体可以将其从沙箱文件系统复制出来,以便离线审查,在 Playwright Trace Viewer 中回放,并包含在合规性或 QA 工作流中。
审计追踪。 对于审计证据重要的较长工作流——验证智能体只执行了授权操作,没有泄露数据或点击意外按钮——将沙箱隔离(爆炸半径限制)与 Playwright 跟踪(逐步记录)结合使用,可同时提供包含保证和可人工审查的操作日志。这对于受监管的工作流、浏览器智能体的 QA 以及需要检查每个回合中确切发生情况的 RL 评估非常有用。
隔离无法抵御的情况。 如果浏览器访问的网站返回恶意 JavaScript,并且你的智能体有权评估任意代码,那么恶意代码将在容器内以智能体进程在该容器内拥有的任何权限运行。沙箱限制了爆炸半径,但智能体在沙箱内的自身权限仍然适用。除非你的任务明确要求,否则不要授予沙箱进程对敏感外部资源(数据库、生产 API、云凭据)的写入权限。对在沙箱内运行的进程使用最小权限原则,就像对待任何计算环境一样。
避免使用“沙箱使浏览器自动化完全安全”这样的表述。正确的表述是:沙箱隔离执行、减少爆炸半径、防止主机级污染——对于大多数智能体浏览器自动化用例来说,这是一组有意义且有用的控制。
何时使用专用浏览器自动化工具
AI 沙箱并不总是正确答案。遇到以下情况时,请使用专用浏览器自动化平台:
- 你需要会话池和预热浏览器实例。 Browserbase、Browserless 或 Playwright Cloud 等服务管理一个随时可用的浏览器会话池。对于高吞吐量爬取或需要亚秒级浏览器可用性的工作流,这种基础设施比每个请求启动新沙箱更高效。
- 你需要开箱即用的住宅代理支持。 如果你的用例需要特定 IP 地理位置、ISP 多样性或 CAPTCHA 处理服务,内置代理集成的浏览器自动化平台是更好的起点。
- 你的工作流纯粹是浏览器驱动,无需代码执行。 如果智能体只需要控制浏览器,没有理由运行任意代码、安装依赖项或与文件系统交互,那么完整的 Linux 沙箱环境超出了你的需求。
- 你需要非常长期、有状态的会话。 需要保持温暖数天或数周的会话最好由专为浏览器会话持久性构建的服务来管理。
界限大致如下:如果你的智能体需要浏览器作为更广泛计算工作流的一部分——研究、数据处理、代码生成、测试——AI 沙箱自然适合。如果浏览器是整个产品,并且你需要围绕它进行托管基础设施,请使用为此构建的工具。
综合决策标准
| 场景 | AI 沙箱 | 专用浏览器工具 |
|---|---|---|
| 智能体网络研究(一次性爬取) | 是 | 可选 |
| LLM 驱动的表单填写,单个任务 | 是 | 可选 |
| Browser-use / Skyvern 智能体评估 | 是(按设计) | 不需要 |
| 持续数天的会话 | 否 | 是 |
| 高并发并行爬取(100+ 并发) | 可能,但成本高 | 是 |
| 住宅代理 / IP 轮换 | 通过代理配置自行实现 | 内置 |
| 代码执行 + 偶尔网络获取 | 是 | 不需要 |
| 沙箱化的 CI 测试浏览器流程 | 是 | 可选 |
如何开始使用 Novita Sandbox
安装 SDK:
pip install novita-sandbox
设置你的 API 密钥:
export NOVITA_API_KEY=your_api_key_here
运行一个简单的浏览器自动化测试:
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create()
result = sandbox.commands.run(
"pip install playwright -q && playwright install chromium --with-deps -q && "
"python3 -c \""
"from playwright.sync_api import sync_playwright; "
"p = sync_playwright().start(); "
"b = p.chromium.launch(); "
"page = b.new_page(); "
"page.goto('https://example.com'); "
"print(page.title()); "
"b.close(); "
"p.stop()\""
)
print(result.stdout)
sandbox.kill()
Novita Sandbox 文档 介绍了 VPC 部署、资源配置、文件系统访问以及 browser-use 和 Skyvern 智能体的集成模式。
结论
当任务是智能体驱动、以代码为中心或受益于每个任务的隔离性时,AI 沙箱是浏览器自动化的实际选择。Novita Sandbox 为你提供一个干净的 Linux 环境,启动快、按秒计费,并且足够灵活,可以运行任何你需要的无头浏览器堆栈。主要限制是临时会话、无内置代理层以及浏览器安装延迟——如果你为此进行设计,这些都是可管理的。对于需要将浏览器会话作为持久化基础设施大规模管理的工作流,专用浏览器自动化平台是更好的选择。大多数生产级智能体架构同时使用两者:沙箱用于智能体的通用计算,浏览器服务用于工作流中需要它的部分。
常见问题
沙箱中如何隔离 cookie 和凭据?
每个沙箱实例都会获得一个干净、空的浏览器配置文件。没有 cookie、存储的密码、会话令牌或 localStorage 条目会从其他沙箱运行或主机环境继承。如果一个任务向服务进行了身份验证并存储了会话 cookie,该 cookie 仅存在于该沙箱实例中,并在沙箱结束时被丢弃。在单独的沙箱实例中并发运行的任务没有共享的浏览器状态。这就是使沙箱化浏览器自动化对多用户或多任务基础设施安全的关键隔离属性。
我可以在 Novita Sandbox 中运行 Playwright 或 Puppeteer 吗?
两者都可以在沙箱的 Linux 环境中运行。使用 pip install playwright && playwright install chromium --with-deps(或 Node.js 等效命令)安装包和浏览器二进制文件,然后正常运行脚本。首次安装会增加 30-90 秒,因此如果启动延迟很重要,请缓存依赖项。
沙箱是否具有用于浏览器自动化任务的互联网访问权限?
默认情况下,提供出站互联网访问用于页面导航和包安装。如果你在 AWS 或 GCP 上的自有 VPC 内部署 Novita Sandbox,则可以控制出站规则,并根据需要限制或路由流量。
如何在多个智能体轮次中保持浏览器会话登录?
要么在轮次之间保持沙箱实例存活(会话最长可运行 24 小时),要么使用 Playwright 的 storage_state 在每轮结束时导出 cookie 和 localStorage,并在下一轮开始时导入。
让 AI 智能体在沙箱内控制浏览器是否安全?
沙箱提供了有意义的隔离——浏览器进程、文件系统写入和下载都留在容器内,不会影响主机。最小权限原则仍然适用:除非任务要求,否则不要授予沙箱进程对生产数据库、云凭据或外部 API 的写入权限。
AI 沙箱与 Browserbase 或 Browserless 等专用浏览器自动化服务相比如何?
沙箱提供了一个完整的 Linux 环境,你拥有浏览器安装和自动化逻辑的所有权——灵活,但需要你管理设置,并且没有会话池。专用浏览器服务提供温暖的、托管的浏览器实例,内置代理支持和会话持久性。当浏览器自动化是更广泛智能体工作流的一部分时,使用沙箱;当浏览器基础设施是核心产品需求时,使用专用服务。
在 Novita Sandbox 中运行浏览器自动化的成本是多少?
Novita Sandbox 按实际 vCPU 和内存使用量按秒计费。一个无头 Chromium 会话通常需要至少 1-2 GB 内存。有关当前确切费率,请参阅 Novita Sandbox 定价页面(于 2026-06-28 检查)。
