One沙箱操作(1) 前提条件 在控制台完成AIO沙箱模版创建 在执行下文所有代码前,请先按照环境变量设置部分,完成环境变量设置 AllInOne 沙箱概述 多个单功能沙箱使用时的痛点:多个单功能沙箱(如代码执行,浏览器)迫使 Agent 通过 NAS/OSS 跨沙箱传输数据,增加了延迟与复杂度。 AIO沙箱 (AllInOne Sandbox) 是集成 Browser(无头浏览器)与Code Interpreter(代码执行) 能力的统一云端隔离环境,避免了跨沙箱数据传输。 在AIO沙箱中,您可以使用 Code Interpreter 和 Browser 两类 sandbox 的功能。 您可以在沙箱中直接操作浏览器,我们已经为您预装了 puppeteercode(nodejs) 和 playwright(python),您可以在代码解释器中执行代码,操作内置的浏览器。 以下是AIO沙箱内置的能力: 能力 访问端口/路径 说明 代码执行 49999 兼容 E2B 协议,支持 Python / JS 等多语言 浏览器VNC 6080 浏览器VNC的websocket地址 浏览器外部代理 9223 通过代理访问浏览器CDP的地址 浏览器CDP 9222 浏览器CDP的地址,可以在沙箱内使用playwright等库直接访问 终端 & 文件系统操作 49983 文件系统与命令执行接口 AllInOne 沙箱操作 快速示例 在代码解释器中执行如下的代码,操作内置的浏览器 python from e2bcodeinterpreter import Sandbox from dotenv import loaddotenv loaddotenv() 注意:修改下面模版为您的模版名称或者模版id sandbox Sandbox.create(template"mytestaiotemplate") print(f'创建沙箱成功{sandbox}') 在沙箱里执行浏览器操作代码(沙箱里内置了playwright库) pythoncode""" import asyncio from playwright.asyncapi import asyncplaywright async def run(): async with asyncplaywright() as playwright: chromium playwright.chromium browser await chromium.connectovercdp(" 在沙箱内直接访问CDP print("连接CDP成功") context browser.contexts[0] page context.pages[0] print("获取现有上下文和页面") await page.goto(" print("导航到 title await page.title() print(f"获取页面标题: {title}") await browser.close() print("关闭连接") await run() """ sandbox.runcode( pythoncode, onstdoutlambda data: print(data), onstderrlambda data: print(data), onresultlambda data: print(data), onerrorlambda data: print(data) )
来自: