浏览器自动化 — 配置 bsession 环境,单次抓取网站信息,创建一次性或循环的脚本化自动化,或调试现有的...
/浏览器技能是一项面向实际任务的技能,主要用于您帮助用户在 bsession Docker 容器内自动设置浏览器—— 无论是初始设置、 快速交互获取、 脚本自动化( 一拍或重复) , 或。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
您帮助用户在 bsession Docker 容器内自动化浏览器操作——无论是初始环境搭建、快速交互式抓取、脚本化自动化(一次性或周期性任务),还是调试已有会话。
这是一个全局技能——可在任意代码仓库中使用。bsession 安装于 ~/.bsession/,且 bsession CLI 已加入系统 PATH。
执行任何操作前,请先确定如何访问 bsession。按以下顺序检查:
bsession 在 PATH 中 → 使用 bsession~/.bsession/bsession 存在 → 使用 ~/.bsession/bsession./bsession → 使用 ./bsessiondocker exec agent-browser echo ok 成功)→ 使用 docker exec agent-browser python3 /app/session.py 作为 CLI同理,解析工作区(workspace)路径:
~/.bsession/workspace/ 存在 → 使用该路径./workspace/ → 使用该路径docker exec agent-browser ls /workspace/conf → 通过 docker exec 访问文件在整个会话中,所有命令均需使用上述已解析的路径。
~/.bsession/ —— bsession 源码与 docker-compose 配置所在目录~/.bsession/workspace/(默认值,可覆盖)—— 或按上述逻辑解析所得路径解析用户输入的斜杠命令参数:
list → 列表模式(显示所有可用脚本与会话)setup → 设置模式(安装并配置 bsession)fetch → 抓取模式(交互式一次性提取,可选持久化)new → 创建模式(生成脚本模板——一次性或周期性任务)run → 运行模式(执行已保存的会话并展示结果)除设置模式外,其余所有模式运行前,均需验证容器是否正在运行:
docker exec agent-browser echo ok 2>/dev/null
若该命令失败,请提示用户执行以下任一操作:
/browser setup 进行全新安装;或bsession 项目目录后运行 docker compose up -d/browser 或 /browser list)列出所有可用脚本、其状态及功能说明。
bsession list
遍历 ~/.bsession/workspace/scripts/ 下每个 .py 文件,读取其模块级文档字符串(即文件顶部三重引号包裹的字符串)。
遍历 ~/.bsession/workspace/conf/ 下每个 .conf 文件,读取 [env] 区段以展示当前配置。
输出如下格式的摘要信息:
Session Status Type Description ───────────────────────────────────────────────────────────────── uscis running recurring USCIS 案件状态监控器 price-check stopped one-shot Amazon 商品价格爬虫 可用命令: /browser调试某个会话 /browser new 创建新的自动化任务 /browser fetch 快速一次性抓取
/browser setup)运行安装脚本:
bash ~/.openclaw/workspace/skills/browser/scripts/install.sh
支持传入选项:
bash ~/.openclaw/workspace/skills/browser/scripts/install.sh --workspace /path/to/workspace bash ~/.openclaw/workspace/skills/browser/scripts/install.sh --vnc-password secret bash ~/.openclaw/workspace/skills/browser/scripts/install.sh --repo https://github.com/gaxxx/bsession.git
运行前请向用户询问自定义选项。该脚本将自动完成 Docker 环境检查、uv/Python 安装、镜像构建、容器启动及 CLI 初始化等全部流程。
/browser fetch )一次性操作:打开指定 URL,提取信息并返回结果。不生成脚本、不创建配置文件、不启用循环。
docker exec agent-browser python3 -c "
import urllib.request
try:
urllib.request.urlopen('http://localhost:9222/json/version', timeout=2)
print('IN_USE')
except:
print('FREE')
"
若端口 9222 已被占用,则尝试 9223、9224 等后续端口。在空闲端口上启动临时 Chrome 实例:
docker exec agent-browser python3 -c "
import sys; sys.path.insert(0, '/app')
from lib.browser import start_chrome
pid = start_chrome(PORT, '/workspace/data/profile-tmp')
print(f'Chrome started, pid={pid}')
"
docker exec agent-browser agent-browser --cdp PORT open "URL" sleep 5 docker exec agent-browser agent-browser --cdp PORT snapshot
如检测到 Cloudflare 验证页,则处理如下:
docker exec agent-browser python3 -c "
import sys; sys.path.insert(0, '/app')
from lib.browser import ab, is_cloudflare, wait_for_cloudflare
snap = ab(PORT, 'snapshot')
if is_cloudflare(snap):
wait_for_cloudflare(PORT, snap)
snap = ab(PORT, 'snapshot')
print(snap)
"
docker exec agent-browser agent-browser --cdp PORT fill REF "value" docker exec agent-browser agent-browser --cdp PORT click REF docker exec agent-browser agent-browser --cdp PORT snapshot
解析关键信息,并以清晰格式呈现。
返回结果后,始终询问用户是否希望将其保存为可复用脚本。若用户确认,则在 ~/.bsession/workspace/ 下创建对应的一次性脚本与配置文件。
docker exec agent-browser python3 -c " import sys; sys.path.insert(0, '/app') from lib.browser import stop_chrome stop_chrome(PORT) "
/browser new )向用户提问:
随后依据下方参考章节中的约定,在 ~/.bsession/workspace/conf/ 和 ~/.bsession/workspace/scripts/ 中生成对应模板。
/browser run )bsession show bsession run bsession logs -n 50 /browser )bsession list、bsession show ,并读取日志与脚本内容bsession restart 导入语句:
import os, re, sys, time
sys.path.insert(0, "/app")
from lib.browser import (
ab, ab_quiet, find_ref, is_cloudflare, wait_for_cloudflare,
send_webhook, make_logger,
)
从环境变量加载配置:
port = int(os.environ.get("CDP_PORT", 9222))
session_name = os.environ.get("SESSION_NAME", "")
webhook_url = os.environ.get("N8N_WEBHOOK_URL", "")
check_interval = int(os.environ.get("CHECK_INTERVAL", 1800))
核心执行流程: 打开 URL → 等待加载 → 截图 → 处理 Cloudflare → 查找元素 → 交互操作 → 解析结果
一次性任务: 执行完毕即退出。周期性任务: 使用 while True 包裹主逻辑,配合 sleep,比对状态变化,并在状态变更时触发 Webhook。
ab(port, cmd, *args) / ab_quiet(port, cmd, *args) —— 执行 agent-browser 命令find_ref(snapshot, pattern) / find_all_refs(snapshot, pattern) —— 解析可访问性树(accessibility tree)is_cloudflare(snapshot) / wait_for_cloudflare(port, snapshot, ...) —— Cloudflare 验证页处理send_webhook(url, payload) —— 向 Webhook 地址 POST JSON 数据make_logger(session_name) —— 创建带时间戳的日志记录器相关专题
热门下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章