讲师中心 微信公众号
AI工具推荐 视频效率加速

browser

Polar Sponsor
爱发电 赞助
.NET 9.0

浏览器自动化 — 配置 bsession 环境,单次抓取网站信息,创建一次性或循环的脚本化自动化,或调试现有的...

/浏览器技能

功能概述

/浏览器技能是一项面向实际任务的技能,主要用于您帮助用户在 bsession Docker 容器内自动设置浏览器—— 无论是初始设置、 快速交互获取、 脚本自动化( 一拍或重复) , 或。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

/browser 技能

您帮助用户在 bsession Docker 容器内自动化浏览器操作——无论是初始环境搭建、快速交互式抓取、脚本化自动化(一次性或周期性任务),还是调试已有会话。

这是一个全局技能——可在任意代码仓库中使用。bsession 安装于 ~/.bsession/,且 bsession CLI 已加入系统 PATH。

路径解析

执行任何操作前,请先确定如何访问 bsession。按以下顺序检查:

  1. bsession 在 PATH 中 → 使用 bsession
  2. ~/.bsession/bsession 存在 → 使用 ~/.bsession/bsession
  3. 当前目录下存在 ./bsession → 使用 ./bsession
  4. 以上均未找到,但容器正在运行(docker exec agent-browser echo ok 成功)→ 使用 docker exec agent-browser python3 /app/session.py 作为 CLI

同理,解析工作区(workspace)路径:

  1. ~/.bsession/workspace/ 存在 → 使用该路径
  2. 当前目录下存在 ./workspace/ → 使用该路径
  3. 执行 docker exec agent-browser ls /workspace/conf → 通过 docker exec 访问文件

在整个会话中,所有命令均需使用上述已解析的路径。

常量(默认值)

  • BSESSION_HOME:~/.bsession/ —— bsession 源码与 docker-compose 配置所在目录
  • WORKSPACE:~/.bsession/workspace/(默认值,可覆盖)—— 或按上述逻辑解析所得路径
  • bsession CLI:按上述逻辑解析所得

路由逻辑

解析用户输入的斜杠命令参数:

  • 无参数 或 list → 列表模式(显示所有可用脚本与会话)
  • setup → 设置模式(安装并配置 bsession)
  • fetch → 抓取模式(交互式一次性提取,可选持久化)
  • new → 创建模式(生成脚本模板——一次性或周期性任务)
  • run → 运行模式(执行已保存的会话并展示结果)
  • 其他情况 → 调试模式(检查/修复已有会话)

前置检查(除 setup 外的所有模式)

除设置模式外,其余所有模式运行前,均需验证容器是否正在运行:

docker exec agent-browser echo ok 2>/dev/null

若该命令失败,请提示用户执行以下任一操作:

  • 运行 /browser setup 进行全新安装;或
  • 进入 bsession 项目目录后运行 docker compose up -d

列表模式(/browser 或 /browser list)

列出所有可用脚本、其状态及功能说明。

步骤 1:获取会话状态

bsession list

步骤 2:读取脚本文档字符串(docstring)

遍历 ~/.bsession/workspace/scripts/ 下每个 .py 文件,读取其模块级文档字符串(即文件顶部三重引号包裹的字符串)。

步骤 3:读取配置文件

遍历 ~/.bsession/workspace/conf/ 下每个 .conf 文件,读取 [env] 区段以展示当前配置。

步骤 4:以表格形式呈现

输出如下格式的摘要信息:

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,提取信息并返回结果。不生成脚本、不创建配置文件、不启用循环。

步骤 1:查找可用的 CDP 端口

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}')
"

步骤 2:导航并提取内容

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)
"

步骤 3:解析与交互

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

步骤 4:返回结果

解析关键信息,并以清晰格式呈现。

步骤 5:提供持久化选项

返回结果后,始终询问用户是否希望将其保存为可复用脚本。若用户确认,则在 ~/.bsession/workspace/ 下创建对应的一次性脚本与配置文件。

步骤 6:清理资源

docker exec agent-browser python3 -c "
import sys; sys.path.insert(0, '/app')
from lib.browser import stop_chrome
stop_chrome(PORT)
"

创建模式(/browser new )

向用户提问:

  1. 目标 URL 是什么?
  2. 是一次性任务还是周期性任务?
  3. 需要检测或提取哪些内容?
  4. 结果应发送至何处(Webhook、文件等)?
  5. 需要哪些环境变量?

随后依据下方参考章节中的约定,在 ~/.bsession/workspace/conf/.conf 和 ~/.bsession/workspace/scripts/.py 中生成对应模板。

运行模式(/browser run )

  1. 验证会话是否存在:bsession show
  2. 运行该会话:bsession run
  3. 等待执行完成并实时查看日志:bsession logs -n 50
  4. 展示结果。若执行失败,则自动切换至调试模式。

调试模式(/browser )

  1. 收集状态信息:bsession list、bsession show ,并读取日志与脚本内容
  2. 诊断问题:Cloudflare 卡住、元素未找到、进程崩溃、数据错误、进程已退出等
  3. 修改脚本或配置文件后,执行 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。

参考:lib/browser.py

  • 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) —— 创建带时间戳的日志记录器
目录

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

0

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

0

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn