浏览器沙箱 快速入门
接入Agent 沙箱服务
本文指导您快速接入Agent 沙箱服务。本服务兼容了E2B SDK,您可以使用E2B SDK快速接入。
环境准备
- 运行环境
E2B提供的官方SDK,若使用Python语言,则请使用python3及以上。SDK安装E2B SDK 2.0及以上版本。
- 您可以根据需要确定需要使用的Agent沙箱服务地域,目前支持北京,广州,苏州。以下是各地域沙箱服务的访问Endpoint, 请您根据需要获取接入Agent沙箱服务域名
| 地域 | Endpoint |
|---|---|
| 北京 | sandbox-execute.bj.baidubce.com |
| 广州 | sandbox-execute.gz.baidubce.com |
| 苏州 | sandbox-execute.su.baidubce.com |
- 认证鉴权
在您选定的地域的官网控制台 API Keys页面,点击新建,创建并存储API Key。API Key 需在客户端的环境变量中配置,用于后续访问沙箱服务。您在选定的地域新建API KEY并保存,后续在环境变量中使用。
安装依赖库
安装E2B python依赖库和browser-use库
1pip install e2b-code-interpreter python-dotenv browser-use
配置环境变量
您可以通过以下三种常见方式设置环境变量,推荐您使用 dotenv 文件来配置环境变量。
dotenv文件
在您的项目文件夹创建 .env 文件,在其中配置环境变量。假设您使用广州的Agent沙箱服务,您可以在.env文件中写入如下内容并保存。E2B_DOMAIN环境变量设置为Agent沙箱服务域名;E2B_API_KEY设置为您准备工作中创建的API Key
1E2B_DOMAIN=sandbox-execute.gz.baidubce.com
2E2B_API_KEY=bsx_xxxxxxxx
然后在您的代码中使用 dotenv 库来引入,通过该种方式引入的环境变量在当前代码范围内生效。
1from dotenv import load_dotenv
2load_dotenv()
Shell 配置环境变量
(1)临时设置:只在当前 Shell Session 生效)
1export E2B_DOMAIN=sandbox-execute.gz.baidubce.com
2export E2B_API_KEY=bsx_xxxxxxxx
(2)写入 Shell 配置文件(永久生效)
以 zshrc 为例:
1echo 'export E2B_DOMAIN=sandbox-execute.gz.baidubce.com' >> ~/.zshrc
2echo 'export E2B_API_KEY=bsx_xxxxxxxx' >> ~/.zshrc
3source ~/.zshrc
os.environ
在您的代码代码文件中添加:
1import os
2os.environ["E2B_DOMAIN"]="sandbox-execute.gz.baidubce.com"
3os.environ["E2B_API_KEY"]="bsx_xxxxxxxx"
使用浏览器沙箱构建 browser use agent
browser use agent 可以帮助用户使用自然语言控制操作浏览器沙箱执行任务,其依赖于大语言模型能力(需要按token用量单独计费)。如使用千帆平台提供的大模型推理服务,可参考https://cloud.baidu.com/doc/WENXINWORKSHOP/s/2m3fihw8s。
将如下Python代码写入main.py文件
1from browser_use import Agent, BrowserSession
2from browser_use.llm import ChatOpenAI
3from browser_use.browser import BrowserProfile
4from e2b_code_interpreter import Sandbox
5
6from dotenv import load_dotenv
7import asyncio
8
9load_dotenv()
10
11async def main():
12 print("开始创建沙箱...")
13 # 创建沙箱实例
14 sandbox = Sandbox.create(
15 timeout=600, # 超时时间(秒)
16 template="browser-use-v1" # 该模板包含 chromium 浏览器,且暴露 9222 端口用于远程连接
17 )
18 host = sandbox.get_host(9222) # 获取沙箱 9222 端口的地址
19 https_cdp_url = f"https://{host}"
20 print(f"BrowserCDP wss URL: {https_cdp_url}")
21 vnc = sandbox.get_host(6080)
22 https_vnc_url = f"https://{vnc}/vnc.html"
23 # 浏览器访问https_vnc_url,可查看浏览器沙箱的可视化界面
24 print(f"BrowserCDP https vnc URL: {https_vnc_url}")
25
26 # 填入CDP URL
27 browser_session_wss_url = f"wss://{host}"
28 print(f"BrowserCDP wss URL: {browser_session_wss_url}")
29
30 browser_session = BrowserSession(
31 cdp_url=https_cdp_url,
32 browser_profile=BrowserProfile(
33 headless=False,
34 user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.X.X Safari/537.36",
35 timeout=3000000,
36 keep_alive=True
37 )
38 )
39
40 # 需要填入千帆的api_key,如果使用其他模型或其他模型服务供应商,请自行修改
41 llm=ChatOpenAI(model="deepseek-v3.1-250821",api_key="xxx",base_url="https://qianfan.baidubce.com/v2")
42
43 agent = Agent(
44 task="请访问 https://cloud.baidu.com/products/index.html 并分析一下百度智能云目前都提供了哪些产品",
45 llm=llm,
46 browser_session=browser_session,
47 use_vision=True
48 )
49 result = await agent.run()
50 print(result)
51
52if __name__ == "__main__":
53 asyncio.run(main())
如您想手动控制浏览器,可自行使用CDP协议控制沙箱。
Chrome DevTools Protocol(CDP) 是一套开放协议,允许外部程序通过 Chrome 浏览器提供的接口与其进行交互。CDP 提供了丰富的功能,使开发者可以远程控制 Chrome 浏览器,包括操作 DOM、监控网络请求、调试代码、截取屏幕快照等。
运行您的代码
1python main.py
