Skip to main content

browscreen

Python MIT License

简体中文 | English

浏览器画面与鼠标指针预览服务。browscreen(browser+screen)通过 Chrome DevTools Protocol(CDP)连接已有 Chrome,将当前视口截图和外部提供的指针坐标合成 PNG,用于网页预览、图片接口和 webhook 推送。

功能

  • 默认每 300 毫秒采集当前视口,网页、图片接口和 webhook 共用最新帧。
  • 读取工作目录的 .cdp 连接浏览器,读取 .mouse 在 CSS 视口坐标上合成指针。
  • 浏览器失效后清空旧图,在限定时间内重读端点并恢复采集。
  • 正常退出时清空已有 .mouse,保留 .cdp 和外部浏览器。

服务采用 Python 3.14、FastAPI 和 Pydantic v2,一个进程运行一个采集循环。浏览器启动、页面导航和环境隔离由调用方管理;预览页只读,不转发鼠标或键盘操作。

安装

准备 uv 和 Python 3.14,从 GitHub 获取源码后安装:

git clone https://github.com/Pegasus-Yang/Browscreen.git
cd Browscreen
uv sync --locked --no-dev \
  -i http://mirrors.aliyun.com/pypi/simple/ \
  --trusted-host mirrors.aliyun.com
.venv/bin/browscreen version

需要安装 Python 时先执行 uv python install 3.14。当前安装方式为源码或自行构建的 wheel;详见安装与运行。

快速开始

准备一个已有工作目录,以及启用了远程调试、包含打开页面的 Chrome。将实际调试地址写入 .cdp:

work_dir="/absolute/path/to/workspace"
printf '%s\n' 'http://127.0.0.1:9222' > "$work_dir/.cdp"
uv run --no-sync browscreen --work-dir "$work_dir"

打开 http://127.0.0.1:8000/ 查看画面。另一个终端向同一目录的 .mouse 写入 320,180,即可在下一个新帧显示指针。工作目录和 Chrome 由外部系统准备,示例路径和端口需按实际环境替换。

.cdp 尚未可用时 HTTP 保持可访问,默认等待 60 秒,等待预算持续到首个有效 PNG 生成。超时后修正端点并重启服务。

命令行

安装后提供一个 browscreen 命令。在源码安装环境中,可通过 .venv/bin/browscreen 或 uv run --no-sync browscreen 调用。

命令 用途
browscreen --help 查看全部命令与参数
browscreen version / browscreen --version 查询安装版本并退出,无需工作目录
browscreen --work-dir <目录> 启动服务,默认 INFO 日志
browscreen -v --work-dir <目录> 启动服务并开启 DEBUG 和 HTTP 访问日志

默认省略网页轮询、HTTPX 请求和重复重试细节;状态变化、超时及异常仍会记录。同一 webhook 连续失败仅首次告警,恢复后记录一次;每帧仍按原规则发送。完整参数与日志说明见命令行参考。

HTTP 接口

接口 用途
GET / 只读网页预览
GET /api/screenshot 最新合成 PNG,附带帧编号、UTC 采集开始时间和 no-store
POST /api/webhooks 注册 HTTP(S) 接收地址,向后续新帧发送 PNG

截图与发送顺序执行,每帧向所有接收地址并发尝试一次。慢 webhook 会降低采集频率,每次发送最多等待 3 秒;失败不自动重试、不跟随重定向。注册保留至进程退出。协议与错误码见使用说明。

文档

开发与贡献

开发环境需要 Node.js 22 或更高版本,以运行预览脚本回归,无需 npm 依赖:

uv sync --locked --group dev \
  -i http://mirrors.aliyun.com/pypi/simple/ \
  --trusted-host mirrors.aliyun.com
.venv/bin/python -m pytest -q -W error

默认测试使用模拟浏览器端点;真实 Chrome 验证需要另行执行。缺少 Node.js 时预览测试会跳过,不代表前端验证通过。

问题和建议请提交到 GitHub Issues。提交改动前请阅读贡献指南。项目由 Pegasus-Yang 维护。

许可证

项目采用 MIT 许可证。

Metadata

Release files for browscreen 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for browscreen 0.2.1
File Size Uploaded Provenance
browscreen-0.2.1.tar.gz 88.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for browscreen 0.2.1
File Interpreter ABI Platform
browscreen-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 110.4 kB

Release files / browscreen-0.2.1.tar.gz

Download URL browscreen-0.2.1.tar.gz
Size 88.8 kB
Tags Source
SHA-256 checksum
How to use checksums
10318d2edac4a4033f3a339d1ad5bea4922a5ff7c08b69ec632d32732cefa41c
BLAKE2b-256 checksum
How to use checksums
f9d226243dcd0c88161eb674eac025b601e009af5571339e7d3d0300b92ccc26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / browscreen-0.2.1-py3-none-any.whl

Download URL browscreen-0.2.1-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1fc8d2ecc7a84853df67ec0f08370de3a180954a66c61dc9b1c92cca016535b0
BLAKE2b-256 checksum
How to use checksums
d67dc3617a712f3f9f262600edb19cc9248f723552ea584248bcd53032ad421a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for browscreen 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page