我不想再点八百遍了,于是做了个“行彻记录仪”

admin 2026-08-21 05:09:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了一款名为行彻记录仪的Chromium浏览器扩展,用于自动化重复的网页操作如表单填报、数据采集和安全运营。它支持网页操作录制、AI生成脚本、元素拾取、变量系统、截图和文件上传等功能。核心优势在于通过录制或AI生成流程,一键执行重复任务,提升工作效率。项目提供脚本管理和E2E测试,适合安全运营和日常RPA场景。 综合评分: 88 文章分类: 安全运营,AI安全,安全开发,实战经验,安全工具


我不想再点八百遍了,于是做了个“行彻记录仪”

原创

赛赛 赛赛

W啥都学

2026年8月20日 08:15 北京

在小说阅读器读本章

去阅读

Chromium / Chrome / Edge 浏览器扩展

🤔 为什么会有这个项目?

我只是一个点鼠标的猴子

某个写不完需求的晚上,我盯着浏览器发呆,脑子里全是这些画面:

同一个操作,一天点 八百遍:打开 → 填表 → 提交  → 下一单

我就想,既然这些操作本身就有规律,那为什么不让浏览器自己做?

于是就有了该项目就诞生了

🧭 项目简介

因此它特别适合:

  • • 表单填报
  • • 数据采集
  • • 后台系统操作
  • • 安全运营平台
  • • 工单处理
  • • 告警处置
  • • 重复性测试
  • • 批量截图
  • • 网页数据整理
  • • 日常 RPA 类工作

一句话:把你在浏览器里重复做的事情,记录一次,以后让浏览器自己做


✨ 核心特性

| 能力 | 说明 | | — | — | | 🎙️ 网页录制 | 记录输入、点击、按键、复制、粘贴等操作 | | 🌐 跨标签页 | 多个标签页操作自动汇总到同一个脚本 | | 🎯 元素拾取 | 可视化选择网页元素,自动生成选择器 | | 🛠️ 流程编辑 | 添加、删除、排序、分组、启用/禁用步骤 | | ▶️ 一键启动 | 保存脚本后无需打开编辑面板即可执行 | | ⏸️ 暂停 / 继续 | 流程执行过程中随时暂停 | | ⚡ 速度倍率 | 支持 1x / 2x / 5x / 10x | | 🔀 跨页面执行 | 根据步骤来源页面自动跳转 | | 📑 新标签页模式 | 支持在真实新标签页中执行 | | 📋 变量系统 | 复制 → 变量 → 自动填表 | | 📌 常量 | 预定义固定参数和路径 | | 🔍 内容校验 | 对页面内容进行等于 / 包含等条件判断 | | 🛡️ 备选选择器 | 主选择器失效时自动尝试备用选择器 | | 📷 整页截图 | 自动滚动并拼接超长页面 | | 🖼️ 区域截图 | 鼠标框选指定区域进行截图 | | 🎯 元素截图 | 直接截图指定 DOM 元素 | | 🔄 容器长截图 | 支持内部滚动容器 | | 💤 自动隐藏 | 截图时自动隐藏行彻面板 | | 📎 文件上传 | 向文件上传控件注入本地文件 | | 🤖 AI 生成脚本 | 用自然语言生成网页操作流程 | | 🤖 AI 智能体 | AI 观察页面并自主决定下一步操作 | | 💾 脚本管理 | 按站点保存、导入、导出 JSON | | 🔄 页面恢复 | 刷新 / 跨页面后自动恢复执行状态 |


🤖 AI 能力

行彻不仅可以记录你做过什么,还可以让 AI 帮你生成和执行流程

打开我想要树莓派5他会自动调用浏览器给你下单,AI 会结合当前页面元素生成对应的操作步骤


🎙️ 网页操作录制

录制模式

点击:录制

然后正常操作网页。

以下操作可以自动记录:

| 操作类型 | 说明 | | — | — | | ✏️ 输入 | 自动记录输入框、contenteditable 等内容输入 | | 🖱️ 点击 | 自动记录按钮、链接、表格行等元素点击 | | ⌨️ 按键 | 支持 Enter 等键盘操作 | | 📋 复制 | 支持 Ctrl+C,可将内容保存为变量 | | 📥 粘贴 | 支持 Ctrl+V,可记录粘贴操作 | | 🔗 页面跳转 | 自动记录页面导航及跨页面操作 | | 📷 截图 | 记录截图相关操作 | | 🌐 跨标签页 | 不同标签页中的操作可记录到同一个脚本 |

操作就会自动转换成步骤


🌐 跨标签页录制

录制开始后,浏览器中的多个标签页都可以参与录制

最终都会保存到同一个脚本中

未打开面板的标签页会显示:


🎯 元素拾取器

不需要手写 CSS Selector

点击:在页面上选元素

然后:

| 操作 | 说明 | | — | — | | 🖱️ 悬停元素 | 鼠标移动到元素上时自动高亮 | | 🎯 选择元素 | 点击目标元素完成拾取 | | 🔍 生成选择器 | 自动生成相对稳定的 CSS 选择器 | | 🔘 Div 按钮 | 支持常见 div 模拟按钮 | | 📊 表格 | 支持表格及表格内元素 | | 📑 表格行 | 可直接拾取整行元素 | | 🔗 链接 | 支持 a 等链接元素 | | ✏️ 输入框 | 支持 inputtextarea 等 | | 📝 Contenteditable | 支持可编辑区域 | | 🧩 其它元素 | 支持常见网页 DOM 元素 |


🛡️ 备选选择器

网页 UI 经常会发生一些小变化。

录制元素时可以继续添加多个备选选择器。

当主选择器失效后,会按照顺序自动尝试备用选择器。


⚡ 启动速度

支持:

1x   正常
2x   加速
5x   快速
10x  极速

同时保留最小等待时间,避免页面还没响应就继续执行


📋 变量系统

这是行彻比较核心的一套能力

| 数据 | 变量 | 工单中使用 | | — | — | — | | 告警名称 | {{name}} | 告警名称:{{name}} | | 攻击者 IP | {{src}} | 攻击来源:{{src}} | | 受害者 IP | {{dst}} | 受害地址:{{dst}} | | 严重性 | {{sev}} | 严重程度:{{sev}} |

启动后自动完成填表


变量支持

拼接

前缀-{{name}}-后缀

截取前 N 个字符

{{2-name}}

截取末尾 N 个字符

{{-2-name}}

映射替换

{{sev:严重=高危,信息=低危}}

例如:

严重

自动转换为:

高危

📌 设置常量

如果某些值不需要每次复制,可以直接定义常量:

{{base_url}}
{{project}}
{{operator}}

例如:

base_url = http://127.0.0.1

之后 URL 可以直接写:

https://www.exploit-db.com{{base_url}}

常量本身也支持变量引用。


📋 复制 / 粘贴

动态复制

默认情况下,复制步骤会在启动时重新读取页面内容

例如:

复制告警名称

第一次执行:

SQL 注入

下一次执行:

XSS

脚本不需要修改


固定复制

如果希望始终使用录制时的数据,可以切换到:固定值

| 场景 | 示例 | | — | — | | 固定测试数据 | 测试名称、测试内容等 | | 固定参数 | 环境参数、请求参数等 | | 固定账号 | 测试账号、操作账号等 | | 固定业务编号 | 工单号、项目编号等 |


区域复制

普通复制只能拿到某个元素

开启:区域复制

后,会自动向上寻找合适容器,将整个区域内容复制下来,可以一次复制整个区域


📷 截图能力

行彻内置了完整的网页截图能力。

支持:整页截图

自动获取完整页面高度

对于超长页面:

最终得到完整长图


| 截图模式 | 说明 | 适用场景 | | — | — | — | | 🔄 自动滚动截图 | 截图前自动滚动到底,触发页面加载更多内容后再进行截图 | 无限列表、数据表格、懒加载、动态内容 | | 📑 分段截图 | 超长页面按屏幕分段截图,每一屏生成一张图片 | 超长页面、不需要拼接完整长图 | | 🖱️ 框选截图 | 鼠标拖动选择矩形区域,只截取选中的范围 | 页面局部区域 | | 🎯 元素截图 | 直接选择指定 DOM 元素进行截图 | 表格、卡片、图片、指定元素 | | 📜 内部滚动长截图 | 自动识别并滚动内部容器,分段截图后自动拼接 | 微前端、嵌套页面、内部滚动区域、overflow: auto 容器 |


📦 截图缓存

截图默认存储在插件缓存中,不会直接塞满浏览器下载目录

| 功能 | 说明 | | — | — | | 🖼️ 缩略图预览 | 快速查看缓存截图 | | 🔍 大图查看 | 点击查看完整原图 | | 💾 下载 | 将截图保存到本地 | | 🗑️ 删除 | 删除不需要的缓存截图 |

也可以把截图保存为变量:

{{screenshot}}

后续步骤直接使用


📤 图片 / 文件上传

支持向:

<input&nbsp;type="file">

注入本地文件。

同时支持:


🔍 内容校验

可以读取页面内容进行断言

支持:

| 条件 | 说明 | | — | — | | 等于 | 内容完全匹配 | | 不等于 | 内容不匹配 | | 包含 | 包含指定内容 | | 不包含 | 不包含指定内容 |

同时可以分别配置:

匹配时

  • • 直接继续
  • • 只提示
  • • 提示并暂停
  • • 失败停止

不匹配时

  • • 直接继续
  • • 只提示
  • • 提示并暂停
  • • 失败停止

因此既可以做硬性断言,也可以在流程中加入人工确认点


🧩 支持的步骤

| 步骤 | 功能 | | — | — | | 📁 分组 | 整理步骤,可折叠、整组启用/禁用 | | 🔗 打开页面 | 打开指定 URL,支持变量 | | 📌 设置常量 | 定义固定变量 | | ✏️ 填内容 | 输入文本 / contenteditable | | 👆 点击 | 点击页面元素 | | ⌨️ 按键 | Enter 等键盘操作 | | ⏳ 等待 | 等待指定时间 | | 📷 截图 | 整页 / 区域 / 元素 / 滚动长图 | | 📋 复制 | 读取页面内容并保存到变量 | | 📥 粘贴 | 文本 / 图片 / 变量 | | 📎 上传文件 | 注入本地文件 | | 🔍 校验内容 | 页面内容断言 |


🛠️ 面板编辑

除了直接录制,也可以手动搭建流程。

点击:+ 添加步骤

即可添加:

  • • 打开页面
  • • 设置常量
  • • 填内容
  • • 点击
  • • 按键
  • • 等待
  • • 截图
  • • 复制
  • • 粘贴
  • • 上传文件
  • • 校验内容
  • • 分组

每一步都可以:

  • • 编辑参数
  • • 修改备注
  • • 设置执行后等待
  • • 上移 / 下移
  • • 删除
  • • 启用 / 禁用

📦 脚本管理

脚本按照站点进行保存

| 功能 | 说明 | | — | — | | ➕ 创建脚本 | 新建自动化脚本 | | ✏️ 编辑脚本 | 修改步骤和参数 | | 🗑️ 删除脚本 | 删除不需要的脚本 | | 📤 导出 JSON | 将脚本导出为 JSON 文件 | | 📥 导入 JSON | 从 JSON 文件恢复脚本 | | 🌐 按站点管理 | 根据网站分别保存和管理脚本 |

因此可以把一套流程直接导出给其它浏览器或机器使用。


🧪 开发与测试

项目自带端到端冒烟测试。

环境要求:

pip install playwright pillow numpy
playwright install chromium

执行:

python3 smoke_test.py

Linux 无显示环境:

xvfb-run -a python3 smoke_test.py

全部测试通过后输出:

ALL SCENARIOS PASSED

目前覆盖:

  • • 启动
  • • 暂停 / 继续
  • • 停止
  • • 录制
  • • 跨标签页录制
  • • 整页截图
  • • 框选截图
  • • 元素截图
  • • 自动滚动长图
  • • 元素滚动长图
  • • 跨页面执行
  • • 新标签页执行
  • • 文件上传
  • • 复制 / 粘贴
  • • 变量
  • • 一键启动
  • • 启动速度倍率
  • • 面板最小化 / 恢复

📁 项目结构

.
├── manifest.json &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# MV3 配置
├── background.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Service Worker / CDP / 跨标签页协调
│
├── content/
│ &nbsp; ├── content.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 拾取 / 录制 / 启动引擎 / 跨页续跑
│ &nbsp; ├── panel.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Shadow DOM 浮动面板
│ &nbsp; └── picker.css &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 拾取 / 框选覆盖层
│
├── lib/
│ &nbsp; ├── selectors.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 稳定选择器生成
│ &nbsp; ├── steps.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 步骤 Schema
│ &nbsp; └── store.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # chrome.storage 封装
│
├── popup/
│ &nbsp; └── ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 扩展 Popup
│
├── icons/
│ &nbsp; └── ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 扩展图标
│
├── assets/
│ &nbsp; └── ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# README 图片
│
├── mock/
│ &nbsp; └── ... &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 冒烟测试模拟站点
│
└── smoke_test.py &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# E2E 冒烟测试

🛣️ Roadmap

后续可以继续完善:

  • • [ ] 更多网页事件录制
  • • [ ] 更强的动态元素定位
  • • [ ] iframe 元素拾取优化
  • • [ ] Shadow DOM 深度支持
  • • [ ] 更丰富的变量处理
  • • [ ] 条件分支
  • • [ ] 循环执行
  • • [ ] 批量数据驱动
  • • [ ] 更完善的 AI Agent
  • • [ ] AI 自动修复失效步骤
  • • [ ] 任务历史与运行记录
  • • [ ] 流程执行统计
  • • [ ] 更多 Chromium 浏览器兼容性测试

  • 关注公众号回复:xingche 获取

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:W啥都学 赛赛 赛赛《我不想再点八百遍了,于是做了个“行彻记录仪”》

评论:0   参与:  0