Brosee 是一个基于 Playwright 和大型语言模型(LLM)的浏览器自动化框架,它结合了代码的精确性和自然语言的灵活性。
与完全依赖AI的自动化工具不同,Brosee采用了务实的设计理念:让开发者自主决定在流程的哪个环节使用精准的代码,又在哪个环节调用AI来应对不确定性。
- 🤖 自然语言与代码融合:既支持自然语言指令,也支持精确的代码控制
- 🎯 智能元素定位:通过AI理解页面结构,精准定位交互元素
- 📊 页面结构分析:自动提取和理解页面结构,便于后续操作
- 🌐 多浏览器支持:基于Playwright,支持Chrome等
- ⚡ 异步支持:完全异步的API设计,高性能执行
- 👐 人类参与机制:支持等待人类操作(如验证码、登录等复杂场景)
# 克隆项目
git clone https://github.com/brosee-ai/brosee.git
cd brosee
# 创建并激活虚拟环境(推荐)
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# 安装依赖
pip install -e .复制并配置环境文件:
cp .env.sample .env编辑 .env 文件,配置以下关键参数:
# Playwright Configuration
CDP_ENDPOINT=http://localhost:9222
# LLM Configuration (示例使用阿里云Qwen)
LLM_CONFIG='{"api_key": "YOUR_API_KEY", "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", "model": "qwen-plus"}'Brosee通过Chrome DevTools Protocol (CDP)连接浏览器:
# Windows
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\my_data"
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/tmp/chrome_data"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="/tmp/chrome_data"直接使用Brosee的API编写自动化脚本:
import asyncio
from brosee import Browser, Page
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(**{...})
async def main():
# 连接到浏览器
async with Browser(cdp_endpoint="http://localhost:9222", llm=llm) as browser:
# 打开页面
page = await browser.open(url="https://example.com")
# 使用增强的locator方法
search_box = await page.locator(prompt="搜索输入框")
await search_box.fill("Brosee")
# 使用自然语言执行操作
await page.run("点击搜索按钮")
# 获取页面内容
content = await page.markdown()
print(f"页面内容:\n{content}")
asyncio.run(main())💡 提示:更详细的API说明请参考 document/browser.md 和 document/page.md 文件。
通过Web UI拖拽创建工作流:
# 启动HTTP服务器
python start.py http
# 访问Web界面
# http://localhost:8989在Web界面中,你可以:
- 通过可视化编辑器创建自动化工作流
- 拖拽组件构建复杂的浏览器操作序列
- 实时预览和调试自动化流程
通过Model Context Protocol (MCP)让LLM或智能体调用Brosee:
# 启动MCP服务器
python start.py mcp
# MCP服务地址: http://localhost:9090MCP服务提供以下工具:
browser_run: 控制浏览器(打开/关闭/切换页面等)page_run: 在页面内执行操作(点击/输入等)
- 网页自动化测试:快速构建测试脚本,减少维护成本
- 数据抓取:智能处理复杂页面结构和动态内容
- 业务流程自动化:自动化重复的网页操作任务
- 网页监控:定期检查网页变化和状态
- 原型开发:快速验证自动化想法和流程
- 人类参与流程:处理需要验证码、复杂登录等场景
- Python 3.8+
- 支持的操作系统:Windows、macOS、Linux
- Chrome浏览器(用于远程调试)
- LLM API访问权限(OpenAI、阿里云、本地模型等)
Brosee提供了多种等待人类参与的方法:
# 等待人类完成操作
await page.wait_for_human(
message="请完成必要的操作后点击确认按钮",
timeout=300 # 5分钟超时
)
# 等待人类登录
result = await page.wait_for_login(timeout=300)
if result.success:
print("登录成功")在自动化过程中显示提示信息:
# 显示不同类型的消息
await page.toast_success("操作成功完成!", "成功")
await page.toast_warning("这是一个警告消息", "警告")
await page.toast_info("这是一条信息", "信息")
await page.toast_error("操作执行失败", "错误")# 获取页面结构规范
spec = await page.spec()
print(f"页面主要元素: {spec.summary}")
# 获取页面文档结构
doc = await page.document()
print(f"页面内容摘要: {doc.content}")示例代码需要LLM配置才能运行。为了保护您的API密钥不被泄露,我们提供了以下配置方式:
- 复制模板文件并配置您的API密钥:
# 复制LLM配置模板
cp examples/llms.py.template examples/llms.py
# 编辑 examples/llms.py 文件,填入您的实际API密钥- 或者,您可以通过环境变量配置LLM:
# 设置环境变量
export OPENAI_API_KEY="your-api-key"
export LLM_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export LLM_MODEL="qwen-plus"我们欢迎社区贡献!请查看我们的贡献指南了解如何参与。
# 克隆仓库
git clone https://github.com/brosee-ai/brosee.git
cd brosee
# 创建并激活虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# 安装开发依赖
pip install -e ".[dev]"
# 安装 pre-commit hooks
pre-commit install
# 运行测试
pytest本项目采用 MIT 许可证。
- Playwright - 强大的浏览器自动化库
- LangChain - LLM应用开发框架