# python_broswer_use_chrome **Repository Path**: enzoism/python_broswer_use_chrome ## Basic Information - **Project Name**: python_broswer_use_chrome - **Description**: Python开发的直接操作Chrome打开一个演示网页 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python Browser Use Chrome AI驱动的浏览器自动化工具,使用LangChain和browser-use实现智能浏览器控制。 ## 功能特性 - **AI对话控制**:使用LangChain和GLM-4模型实现自然语言控制浏览器 - **Docker容器化**:Chromium运行在Docker容器中,环境隔离 - **实时VNC访问**:通过noVNC提供Web界面的浏览器访问 - **Chrome DevTools Protocol**:使用CDP实现高效的浏览器控制 - **WebSocket实时通信**:支持实时聊天和浏览器操作反馈 ## 技术栈 ### 后端 - **Flask**:Web应用框架 - **Flask-SocketIO**:WebSocket支持 - **LangChain**:LLM应用框架 - **browser-use**:浏览器自动化库 - **Docker**:容器化Chromium ### 前端 - **原生HTML/CSS/JavaScript**:简单高效的前端界面 - **WebSocket**:实时通信 ## 项目结构 ``` python_broswer_use_chrome/ ├── src/ │ └── python_broswer_use_chrome/ │ ├── __init__.py # 包初始化 │ ├── config.py # 配置管理 │ ├── app.py # Flask应用主文件 │ ├── main.py # 启动脚本 │ ├── chat_handler.py # 聊天处理器 │ ├── browser_controller.py # 浏览器控制器 │ ├── chromium_docker_manager.py # Docker容器管理 │ ├── novnc_manager.py # noVNC管理器 │ └── static/ # 静态文件 │ ├── index.html │ ├── browser.html │ ├── styles.css │ └── app.js ├── pyproject.toml # 项目配置 ├── .env.example # 环境变量示例 └── README.md # 项目文档 ``` ## 安装 ### 1. 克隆项目 ```bash git clone cd python_broswer_use_chrome ``` ### 2. 使用uv安装依赖 ```bash # 安装uv(如果尚未安装) curl -LsSf https://astral.sh/uv/install.sh | sh # 创建虚拟环境并安装依赖 uv sync ``` ### 3. 配置环境变量 ```bash # 复制环境变量示例文件 cp .env.example .env # 编辑.env文件,填入你的配置 # 特别是GLM_API_KEY ``` ### 4. Docker配置 确保Docker已安装并运行: ```bash docker --version ``` ## 使用 ### 快速启动(推荐) 使用提供的启动脚本,它会自动检查依赖并启动应用: ```bash ./start.sh ``` 启动脚本会自动检查: - Docker 是否运行 - 端口是否被占用(3000, 3001, 5000, 6080, 9222, 9223) - 虚拟环境是否存在 - 环境变量配置是否正确 ### 手动启动 ```bash # 1. 激活虚拟环境 source .venv/bin/activate # 2. 运行应用 python -m python_broswer_use_chrome.main ``` 或者使用uv运行: ```bash uv run python -m python_broswer_use_chrome.main ``` ### 访问Web界面 打开浏览器访问: ``` http://localhost:5000 ``` ## API端点 ### 健康检查 - `GET /api/health` - 服务健康状态 ### 浏览器控制 - `GET /api/browser/status` - 获取浏览器状态 - `POST /api/browser/start` - 启动浏览器 - `POST /api/browser/stop` - 停止浏览器 - `POST /api/browser/navigate` - 导航到URL - `GET /api/browser/screenshot` - 截取屏幕 ### Chromium Docker管理 - `GET /api/chromium/status` - 获取容器状态 - `POST /api/chromium/start` - 启动容器 - `POST /api/chromium/stop` - 停止容器 - `POST /api/chromium/remove` - 删除容器 - `POST /api/chromium/restart` - 重启容器 ### noVNC管理 - `GET /api/novnc/status` - 获取noVNC状态 - `POST /api/novnc/start` - 启动noVNC ### 聊天 - `POST /api/chat` - 发送聊天消息 ## WebSocket事件 ### 客户端发送 - `connect` - 连接服务器 - `disconnect` - 断开连接 - `chat_message` - 发送聊天消息 - `browser_control` - 浏览器控制命令 ### 服务器发送 - `connected` - 连接成功 - `message_received` - 消息已接收 - `ai_response` - AI响应 - `chat_error` - 聊天错误 - `browser_action` - 浏览器操作 - `browser_action_result` - 浏览器操作结果 ## 配置说明 ### LLM配置 - `GLM_URL` - GLM API地址 - `GLM_API_KEY` - GLM API密钥(必须) - `GLM_MODEL_NAME` - 模型名称(默认:glm-4.6) ### 服务器配置 - `HOST` - 监听地址(默认:0.0.0.0) - `PORT` - 监听端口(默认:5000) - `DEBUG` - 调试模式(默认:True) ### Chrome配置 - `CHROME_BINARY` - Chrome二进制路径 - `CHROME_DEBUG_PORT` - Chrome调试端口(默认:9222) ### Docker配置 Chromium Docker容器默认配置: - Web UI端口:3000 - VNC端口:3001 - 调试端口:9222 ## 开发 ### 运行测试 ```bash uv run pytest ``` ### 代码风格 项目遵循PEP 8代码风格规范。 ## 故障排查 ### 1. 浏览器无法启动 **症状**: 右侧浏览器面板显示 "Connection Failed" **解决步骤**: 1. **检查 Docker 是否运行** ```bash docker ps ``` 如果报错,请启动 Docker Desktop 2. **检查 Chromium 容器状态** ```bash docker ps -a | grep chromium ``` 3. **查看容器日志** ```bash docker logs chromium ``` 4. **检查端口占用** ```bash lsof -i :3000 # Chromium Web UI lsof -i :9223 # Chrome Debug (socat) ``` ### 2. 端口被占用 **解决方法**: ```bash # 停止并删除容器 docker stop chromium docker rm chromium ``` ### 3. 聊天功能不可用 **检查步骤**: ```bash # 确认 API 密钥已配置 cat .env | grep GLM_API_KEY ``` 确保 `.env` 文件中的 `GLM_API_KEY` 已设置为有效值。 ### 4. 完全重置 ```bash # 停止并删除容器 docker stop chromium docker rm chromium # 重新安装依赖 uv sync # 重新启动 ./start.sh ``` ## 许可证 MIT License ## 作者 enzoism (1397092195@qq.com) ## 致谢 - [LangChain](https://github.com/langchain-ai/langchain) - 强大的LLM应用框架 - [browser-use](https://github.com/browser-use/browser-use) - 浏览器自动化工具 - [Flask](https://flask.palletsprojects.com/) - 轻量级Web框架