985860b2a2
- architecture.md: 新增反检测为核心第一性原理,新增 §3 反检测设计(13 个指纹维度全覆盖) - anti-detection.md: 新增反检测专项文档(14 节,详尽列举检测方式和应对策略) - api.md: POST /pages 新增 profile 参数,新增 GET /profiles 端点 - cli.md: 新增 --profile 全局选项,新增 visionl profiles 命令 - contributing.md: 新增反检测开发规范、检测站点验证要求 - README.md: 更新项目定位和特性描述
307 lines
5.1 KiB
Markdown
307 lines
5.1 KiB
Markdown
# VisionL CLI 命令参考
|
||
|
||
> 适用版本:v1
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
# 全局安装(需要先构建)
|
||
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`
|
||
|
||
打开新页面。
|
||
|
||
```bash
|
||
visionl page open <url> [--alias <name>] [--profile <id>]
|
||
```
|
||
|
||
**示例:**
|
||
|
||
```bash
|
||
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`
|
||
|
||
列出所有已打开页面。
|
||
|
||
```bash
|
||
visionl page list
|
||
# {"ok":true,"data":[{"id":"p_a1b2c3d4","url":"...","alias":"baidu",...}]}
|
||
```
|
||
|
||
### `visionl page info`
|
||
|
||
查看页面详情。
|
||
|
||
```bash
|
||
visionl page info <id|alias>
|
||
visionl page info baidu
|
||
```
|
||
|
||
### `visionl page kill`
|
||
|
||
关闭指定页面。
|
||
|
||
```bash
|
||
visionl page kill <id|alias>
|
||
```
|
||
|
||
### `visionl page kill-all`
|
||
|
||
关闭所有页面。
|
||
|
||
```bash
|
||
visionl page kill-all
|
||
```
|
||
|
||
---
|
||
|
||
## 页面操作
|
||
|
||
### `visionl click`
|
||
|
||
点击指定元素。
|
||
|
||
```bash
|
||
visionl click <id|alias> <selector>
|
||
|
||
# 示例
|
||
visionl click baidu "#su"
|
||
```
|
||
|
||
### `visionl type`
|
||
|
||
在输入框中输入文本。
|
||
|
||
```bash
|
||
visionl type <id|alias> <selector> <text>
|
||
|
||
# 示例
|
||
visionl type baidu "#kw" "VisionL浏览器"
|
||
```
|
||
|
||
### `visionl scroll`
|
||
|
||
滚动页面。
|
||
|
||
```bash
|
||
visionl scroll <id|alias> [--down <px>] [--bottom]
|
||
|
||
# 示例
|
||
visionl scroll baidu --down 300
|
||
visionl scroll baidu --bottom
|
||
```
|
||
|
||
### `visionl navigate`
|
||
|
||
页面跳转。
|
||
|
||
```bash
|
||
visionl navigate <id|alias> <url>
|
||
```
|
||
|
||
### `visionl eval`
|
||
|
||
在页面中执行 JavaScript。
|
||
|
||
```bash
|
||
visionl eval <id|alias> <js-code>
|
||
|
||
# 示例
|
||
visionl eval baidu "document.title"
|
||
# {"ok":true,"data":{"result":"百度一下,你就知道"}}
|
||
```
|
||
|
||
### `visionl wait`
|
||
|
||
等待条件满足。
|
||
|
||
```bash
|
||
visionl wait <id|alias> [--selector <sel>] [--ms <n>]
|
||
|
||
# 等待选择器出现
|
||
visionl wait baidu --selector "#content"
|
||
# 等待 2 秒
|
||
visionl wait baidu --ms 2000
|
||
```
|
||
|
||
---
|
||
|
||
## 内容获取
|
||
|
||
### `visionl screenshot`
|
||
|
||
获取页面截图。
|
||
|
||
```bash
|
||
visionl screenshot <id|alias> [-o <file.png>]
|
||
|
||
# 输出 base64(默认)
|
||
visionl screenshot baidu
|
||
|
||
# 写入文件
|
||
visionl screenshot baidu -o screenshot.png
|
||
```
|
||
|
||
### `visionl text`
|
||
|
||
获取页面纯文本。
|
||
|
||
```bash
|
||
visionl text <id|alias>
|
||
# {"ok":true,"data":{"text":"百度一下,你就知道\n..."}}
|
||
```
|
||
|
||
### `visionl html`
|
||
|
||
获取页面 HTML 源码。
|
||
|
||
```bash
|
||
visionl html <id|alias>
|
||
# {"ok":true,"data":{"html":"<!DOCTYPE html>..."}}
|
||
```
|
||
|
||
---
|
||
|
||
## 指纹配置
|
||
|
||
### `visionl profiles`
|
||
|
||
列出可用的指纹配置模版。
|
||
|
||
```bash
|
||
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。
|
||
|
||
```bash
|
||
visionl daemon start [--port <n>]
|
||
|
||
# 默认端口 9527
|
||
visionl daemon start
|
||
# 指定端口
|
||
visionl daemon start --port 8080
|
||
```
|
||
|
||
### `visionl daemon stop`
|
||
|
||
优雅关闭 daemon(不杀死已打开的页面)。
|
||
|
||
```bash
|
||
visionl daemon stop
|
||
```
|
||
|
||
### `visionl daemon status`
|
||
|
||
查看 daemon 运行状态。
|
||
|
||
```bash
|
||
visionl daemon status
|
||
# {"ok":true,"data":{"running":true,"pid":12345,"port":9527}}
|
||
```
|
||
|
||
---
|
||
|
||
## REST 直通
|
||
|
||
直接向 daemon 发送原始 HTTP 请求。
|
||
|
||
```bash
|
||
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 直接解析:
|
||
|
||
```json
|
||
{"ok":true,"data":{"id":"p_a1b2c3d4","url":"https://example.com","title":"Example"}}
|
||
```
|
||
|
||
### 人类可读(--pretty)
|
||
|
||
```bash
|
||
visionl page open https://example.com --pretty
|
||
# ✓ 页面已打开
|
||
# ID: p_a1b2c3d4
|
||
# URL: https://example.com
|
||
# 标题: Example Domain
|
||
# 状态: active
|
||
```
|
||
|
||
---
|
||
|
||
## 退出码
|
||
|
||
| 退出码 | 含义 |
|
||
|--------|------|
|
||
| 0 | 成功 |
|
||
| 1 | 一般错误(页面不存在、选择器未找到等) |
|
||
| 2 | daemon 不可达 |
|
||
| 3 | 无效参数 |
|