Files
VisionL/docs/development/cli.md
T
AskaEth 985860b2a2 docs: 将反检测作为核心设计原则,全面更新架构和文档
- architecture.md: 新增反检测为核心第一性原理,新增 §3 反检测设计(13 个指纹维度全覆盖)
- anti-detection.md: 新增反检测专项文档(14 节,详尽列举检测方式和应对策略)
- api.md: POST /pages 新增 profile 参数,新增 GET /profiles 端点
- cli.md: 新增 --profile 全局选项,新增 visionl profiles 命令
- contributing.md: 新增反检测开发规范、检测站点验证要求
- README.md: 更新项目定位和特性描述
2026-08-12 20:21:53 +08:00

5.1 KiB
Raw Blame History

VisionL CLI 命令参考

适用版本:v1

安装

# 全局安装(需要先构建)
npm install -g ./packages/cli

# 或开发模式
cd packages/cli && npm link

安装后可使用 visionl 命令。

全局选项

选项 说明
--pretty 人类可读格式输出(默认 JSON
--port <n> daemon 端口(默认 9527
--profile <id> 指纹配置模版(默认 desktop-chrome
--help 查看帮助

页面管理

visionl page open

打开新页面。

visionl page open <url> [--alias <name>] [--profile <id>]

示例:

visionl page open https://www.baidu.com --alias baidu --profile desktop-windows
# {"ok":true,"data":{"id":"p_a1b2c3d4","url":"https://www.baidu.com","alias":"baidu","title":"百度一下,你就知道","status":"active"}}

visionl page list

列出所有已打开页面。

visionl page list
# {"ok":true,"data":[{"id":"p_a1b2c3d4","url":"...","alias":"baidu",...}]}

visionl page info

查看页面详情。

visionl page info <id|alias>
visionl page info baidu

visionl page kill

关闭指定页面。

visionl page kill <id|alias>

visionl page kill-all

关闭所有页面。

visionl page kill-all

页面操作

visionl click

点击指定元素。

visionl click <id|alias> <selector>

# 示例
visionl click baidu "#su"

visionl type

在输入框中输入文本。

visionl type <id|alias> <selector> <text>

# 示例
visionl type baidu "#kw" "VisionL浏览器"

visionl scroll

滚动页面。

visionl scroll <id|alias> [--down <px>] [--bottom]

# 示例
visionl scroll baidu --down 300
visionl scroll baidu --bottom

visionl navigate

页面跳转。

visionl navigate <id|alias> <url>

visionl eval

在页面中执行 JavaScript。

visionl eval <id|alias> <js-code>

# 示例
visionl eval baidu "document.title"
# {"ok":true,"data":{"result":"百度一下,你就知道"}}

visionl wait

等待条件满足。

visionl wait <id|alias> [--selector <sel>] [--ms <n>]

# 等待选择器出现
visionl wait baidu --selector "#content"
# 等待 2 秒
visionl wait baidu --ms 2000

内容获取

visionl screenshot

获取页面截图。

visionl screenshot <id|alias> [-o <file.png>]

# 输出 base64(默认)
visionl screenshot baidu

# 写入文件
visionl screenshot baidu -o screenshot.png

visionl text

获取页面纯文本。

visionl text <id|alias>
# {"ok":true,"data":{"text":"百度一下,你就知道\n..."}}

visionl html

获取页面 HTML 源码。

visionl html <id|alias>
# {"ok":true,"data":{"html":"<!DOCTYPE html>..."}}

指纹配置

visionl profiles

列出可用的指纹配置模版。

visionl profiles
# {"ok":true,"data":[{"id":"desktop-chrome","name":"桌面 Chrome (通用)"},{"id":"desktop-windows","name":"Windows 10 Chrome"},...]}
模版 ID 说明 UA 平台
desktop-chrome 桌面 Chrome 通用(默认) Linux x86_64
desktop-windows Windows 10 Chrome Windows NT 10.0
desktop-mac macOS Chrome Macintosh Intel

Daemon 管理

visionl daemon start

手动启动 daemon。

visionl daemon start [--port <n>]

# 默认端口 9527
visionl daemon start
# 指定端口
visionl daemon start --port 8080

visionl daemon stop

优雅关闭 daemon(不杀死已打开的页面)。

visionl daemon stop

visionl daemon status

查看 daemon 运行状态。

visionl daemon status
# {"ok":true,"data":{"running":true,"pid":12345,"port":9527}}

REST 直通

直接向 daemon 发送原始 HTTP 请求。

visionl raw <METHOD> <path> [body]

# 示例
visionl raw POST /pages '{"url":"https://example.com"}'
visionl raw GET /pages
visionl raw GET /pages/p_abc123/text
visionl raw DELETE /pages/p_abc123

自动拉起

CLI 在执行页面命令前会自动检测 daemon 是否存活。如果 daemon 未运行,会自动启动。

自动拉起流程:

  1. 向默认端口(9527)发送 GET /health
  2. 无响应时检查 ~/.visionl/daemon.pid 中的进程是否存活
  3. 都不行则 spawn 启动 daemon
  4. 轮询健康检查,最多等待 3 秒
  5. 超时则报错退出

状态文件:

  • ~/.visionl/daemon.pid — daemon PID
  • ~/.visionl/daemon.port — daemon 端口

输出格式

JSON(默认)

每行一个 JSON 对象,LLM 直接解析:

{"ok":true,"data":{"id":"p_a1b2c3d4","url":"https://example.com","title":"Example"}}

人类可读(--pretty

visionl page open https://example.com --pretty
# ✓ 页面已打开
#   ID:    p_a1b2c3d4
#   URL:   https://example.com
#   标题:  Example Domain
#   状态:  active

退出码

退出码 含义
0 成功
1 一般错误(页面不存在、选择器未找到等)
2 daemon 不可达
3 无效参数