给AI Agent用的浏览器自动化神器PinchTab

简介

什么是 PinchTab ?

PinchTab 是一个高性能的浏览器自动化桥接器和多实例协调工具。它允许用户通过 HTTP API 直接控制 Chrome 浏览器,支持高效的网页操作及数据提取,适用于需要浏览器交互的 AI 代理和自动化脚本。无需复杂的配置和依赖,就能实现网页导航、截图、表单填充、数据提取等操作。

主要特点

  • 高效的浏览器控制 : 支持命令行 (CLI)和 HTTP API 两种控制方式
  • 无头/有头模式 : 可以后台运行,也可以显示浏览器窗口方便调试,,满足不同场合的需求
  • 多实例支持 :可同时并行运行多个独立的 Chrome 进程,每个实例有隔离的 Profile,适合复杂的自动化需求
  • 性能优化 : 文本提取仅需约 800 tokens/page,比截图方式节省 5-13 倍成本,更为经济有效
  • 轻量级二进制包 : 仅需 12MB 二进制文件,无外部依赖,开箱即用
  • 用户友好的 Web UI:设计现代,适配手机和桌面,提供良好的用户体验。
  • 支持 ARM64:针对 Raspberry Pi 优化,自动检测并运行 Chromium
  • 方便的安装和使用:提供简单的安装脚本和 Docker 支持,让用户能迅速部署

应用场景

  • AI Agent 自动化 — 让 AI 助手自动浏览网页、自动化内容生成、回复社交媒体等
  • 数据采集 — 高效提取网页文本内容,Token 消耗极低,,适合数据分析和市场调研
  • 自动化测试 — 模拟用户操作,进行端到端测试,便于开发者快速实施测试脚本
  • 网页截图/PDF — 生成网页截图或 PDF 文件
  • 多用户模拟:在一个时间段内模拟多个用户对同一网站的操作,适合进行性能和负载测试。

PinchTab 提供了一种高效、灵活的方式来实现浏览器自动化,广泛应用于开发和测试,非常适合需要让 AI 控制浏览器的场景。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 pinchtab ,选择第一个 pinchtab/pinchtab,版本选择 latest

本文写作时, latest 版本对应为 v0.7.6

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 新建文件夹 pinchtab 和 子目录
mkdir -p /volume1/docker/pinchtab/data

# 进入 pinchtab 目录
cd /volume1/docker/pinchtab

# 修改目录权限
chmod a+rw data

# 运行容器
docker run -d \
--restart unless-stopped \
--name pinchtab \
--shm-size=2gb \
--security-opt seccomp=unconfined \
-p 9867:9867 \
-v $(pwd)/data:/data \
-e PINCHTAB_BIND=0.0.0.0 \
-e PINCHTAB_PORT=9867 \
-e PINCHTAB_HEADLESS=true \
-e PINCHTAB_STATE_DIR=/data \
-e PINCHTAB_PROFILE_DIR=/data/chrome-profile \
pinchtab/pinchtab:latest

参数说明

文件夹 装载路径 说明
docker/pinchtab/data /data 存放 Chrome Profile 和缓存数据
  • 端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
9867 9867

网页仪表盘和 API 都在 9867 端口

  • 环境
可变
PINCHTAB_BIND 设为 0.0.0.0 允许外部访问
PINCHTAB_PORT 设为 9867
PINCHTAB_HEADLESS 设为 true 无头模式
PINCHTAB_TOKEN (可选)API 认证令牌,增强安全性
PINCHTAB_STATE_DIR 全局状态目录,存放 PinchTab 自身的运行时数据
PINCHTAB_PROFILE_DIR 浏览器用户数据目录

⚠️ 安全提示:如果暴露到公网,务必设置 PINCHTAB_TOKEN 进行认证!

【注意事项】

  • --shm-size=2gb:是 Chrome 稳定运行的关键参数,不可省略!不然容易崩溃
  • --security-opt seccomp=unconfinedDocker 容器里跑 Chrome 必须放开 seccomp

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
services:
pinchtab:
image: pinchtab/pinchtab:latest
container_name: pinchtab
restart: unless-stopped
ports:
- "9867:9867"
volumes:
- ./data:/data
environment:
- PINCHTAB_BIND=0.0.0.0
- PINCHTAB_PORT=9867
- PINCHTAB_HEADLESS=true
- PINCHTAB_TOKEN=${PINCHTAB_TOKEN:-}
- PINCHTAB_STATE_DIR=/data
- PINCHTAB_PROFILE_DIR=/data/chrome-profile

# Shared memory is critical for Chrome stability
shm_size: "2gb"
# Required for Chrome to work in container
security_opt:
- seccomp:unconfined
# Limit resources
mem_limit: 2g
# cpus: "2.0" # 群晖可能不支持

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 pinchtab 和 子目录
mkdir -p /volume1/docker/pinchtab/data

# 进入 pinchtab 目录
cd /volume1/docker/pinchtab

# 修改目录权限
chmod a+rw data

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:9867/dashboard 就能看到 PinchTab 的管理面板

界面不是重点,因为 PinchTab 支持 CLI 命令,而且后面我们都是在 AI 中操作,执行的是类似下面👇这样的命令

1
2
3
4
# 打开一个页面
curl -X POST http://192.168.0.197:9867/navigate \
-H "Content-Type: application/json" \
-d '{"url": "https://laosu.tech"}'

虽然龙虾(OpenClaw)很火,但老苏没怎么折腾,我更喜欢基于 Docker 安装的 OpenCode,可玩性比较高,通过插件,是可以实现跟 OpenClaw 一样的功能的

文章传送门:开源的AI编码代理OpenCode

OpenCode

OpenCode 中输入

1
2
3
4
5
https://github.com/pinchtab/pinchtab 

我用这个在服务器上安装了一个 docker,访问地址是 http://192.168.0.197:9867/dashboard

用 pinchtab 为 https://laosu.tech 首界面截一张图

OpenCode 会先学习怎么使用,任务完成之后

打开截图,应该是缺中文字体

但不影响 AI 获取内容

OpenCode 记住了这个软件,以后再想调用就简单了,只要说  “用 pinchtab 打开 xxx” 或 “截图 xxx 网站” 就行

OpenCode 的记忆功能,是老苏安装了记忆插件: https://github.com/csuwl/opencode-memory-plugin

常见问题快速对照

现象 可能原因 解决办法
容器启动就退出 没加 --security-opt seccomp=unconfined 必须加上
仪表盘打不开 / Connection refused 端口没映射 检查 -p 9867:9867
Chrome 崩溃 / OOM 共享内存不够 加上 --shm-size=2gshm_size: 2gb
想多个独立浏览器实例 默认已支持多实例 instance_id 参数区分(看文档)
希望加密码保护 API 设置 PINCHTAB_TOKEN=xxx 环境变量

参考文档

pinchtab/docker-compose.yml at main · pinchtab/pinchtab
地址:https://github.com/pinchtab/pinchtab

PinchTab | PinchTab Docs
地址:https://pinchtab.com/docs/