zkcoi 4686ab5ec9 fix: 统一 README 与仓库的标识引用
- README 安装说明/项目结构中的脚本文件名由错误的「可视化自动点击器.user.js」改为实际文件名 auto-click.js
- 补上 README 引用但缺失的 MIT LICENSE 文件,修复死链
2026-09-30 18:17:57 +08:00
2026-09-20 13:55:46 +08:00

可视化自动点击器

Version License Tampermonkey

一个 Tampermonkey 用户脚本:在任意网页上可视化拾取多个点击位置,按设定顺序串行自动点击,每一步可单独设置点击间隔,支持循环、随机抖动与配置持久化。


功能特性

特性 说明
🎯 可视化选点 开启拾取后鼠标变十字光标,悬停元素实时高亮并显示元素标签,点击即添加为步骤
🔢 多点串行 支持任意多个点击位置,严格按列表顺序依次执行
⏱ 逐步骤间隔 每个步骤可单独设置点击间隔(毫秒),互不影响
📍 双定位模式 优先生成唯一 CSS 选择器(元素移动也不丢);生成失败自动回退为屏幕比例坐标
🏷 页面编号标记 每个步骤在页面上对应位置显示编号徽标,随滚动/元素移动自动跟随,点击可编辑
🔁 循环执行 可设置循环次数(0 = 无限),并设置每轮之间的间隔
🎲 随机抖动 让间隔随机浮动,模拟真人节奏,降低被自动化检测识别的概率
🖱 按住时长 可设置 mousedown 与 mouseup 之间的间隔,应对需要"长按"的组件
💾 配置持久化 按域名自动保存,下次打开页面自动恢复;支持导出/导入 JSON
🛡 异常自愈 事件构造五级降级 + 全流程错误捕获,异常直接显示在面板日志中

安装

方式一:从 Gitea 直接安装(推荐)

  1. 浏览器安装 Tampermonkey 扩展
  2. 打开本仓库的 auto-click.js 文件,点击「Raw 原始文件」
  3. Tampermonkey 会自动识别并弹出安装页面,点击「安装」即可
  4. 后续 Tampermonkey 会自动检测更新

方式二:手动粘贴

  1. Tampermonkey → 仪表盘 → 「+」新建脚本
  2. 删除默认内容,粘贴 auto-click.js 的全部内容
  3. Ctrl + S 保存,刷新目标页面生效

⚠️ 更新脚本后,务必刷新已打开的页面,否则内存中运行的仍是旧版本。


使用教程

1. 拾取点击位置

  1. 点击面板上的 「🎯 拾取位置」 按钮
  2. 鼠标指针变为 十字光标,页面顶部出现提示条
  3. 移动鼠标 → 目标元素出现 橙色高亮框,框上标签显示元素类型与尺寸
  4. 单击左键 → 该位置被添加为一步,元素上闪一圈绿光
操作 效果
单击 拾取一个位置后自动退出拾取模式
按住 Shift 点击 连续拾取多个位置,不退出
Esc 取消拾取

2. 设置间隔与参数

  • 每步间隔:步骤列表右侧的数字输入框,含义是"上一步完成后,等待多少毫秒再点击这一步",单位毫秒
  • 全局参数:循环次数、轮间隔、等待超时、按住时长、抖动范围

3. 运行

  • 点击 「▶ 运行」 开始串行执行,当前执行的步骤徽标会绿色脉冲
  • 再次点击(按钮变为 「⏹ 停止」)即可随时停止

快捷键与菜单

操作 说明
Alt + P 显示 / 隐藏面板
Esc 取消拾取 / 关闭弹出菜单
脚本菜单 Tampermonkey 图标 → 显示面板 / 开始停止 / 拾取位置 / 重置面板

参数说明

全局参数

参数 默认值 说明
循环 1 执行轮数,0 表示无限循环
轮间隔 1000 ms 每轮结束后等待多久开始下一轮
超时 5000 ms 等待目标元素出现的最大时间,超时则跳过该步
按住 0 ms mousedown 与 mouseup 之间的间隔,模拟长按
抖动 0 ms 每步间隔的随机浮动范围,详见下文
仅启用项 勾选 跳过在列表中被禁用(编号划掉)的步骤

抖动(Jitter)是怎么算的

实际等待 = 该步基础间隔 + random(-抖动, +抖动)

示例:基础间隔 1000ms、抖动 200ms → 实际等待可能是 820ms、1130ms、960ms……

  • 每一步独立随机,不是全程只摇一次
  • 结果做了 Math.max(0, ...) 保底,不会出现负数
  • 只影响"等待多久",不改变点击坐标,也不会跳过步骤

推荐取值

场景 基础间隔 抖动
普通网页 800 ~ 1500 ms 100 ~ 300 ms
有反爬检测的站点 1500 ~ 3000 ms 400 ~ 800 ms
调试阶段 任意 0(便于复现问题)

步骤定位模式

模式 徽标样式 说明
选择器定位 蓝色圆形 使用自动生成的唯一 CSS 选择器,元素移动/滚动也不丢失
坐标定位 橙色方块 使用屏幕比例坐标,适用于选择器无法唯一生成的元素

选择器未命中时会自动回退到坐标点击并记入日志;徽标变灰表示当前页面未匹配到该选择器。


配置导入导出

  • 导出:点击「导出」,配置 JSON 自动复制到剪贴板(失败时在面板内弹出可手动复制的文本框)
  • 导入:点击「导入」,粘贴 JSON 文本

配置以域名为维度保存,存储键为 zkcoi_vac_cfg_v1_<域名>。旧版本(v1.0.1 及之前)的配置会在首次加载时自动迁移,不会丢失。


常见问题

点击「拾取位置」后没反应?

按以下顺序排查:

  1. 面板日志是否出现「v1.0.2 已就绪」——没有说明脚本未运行,检查 @match 是否覆盖该站点,或页面是否处于 iframe 中
  2. 点「拾取」后鼠标是否变为十字光标——没有说明按钮事件被页面拦截,改用脚本菜单里的「拾取点击位置」入口
  3. 前两步正常但点击元素无反应——查看面板日志中的红色报错,用「📋 复制日志」发给我

日志无法选中复制?

v1.0.2 起日志区已支持直接鼠标框选,也可点击 「📋 复制日志」 一键复制全部(自动附时间戳与页面 URL)。

目标按钮点了没反应?

JS 派发的点击是"不可信事件"(isTrusted = false),少数场景可能不响应:

  • 校验 isTrusted 的组件
  • 复杂拖拽或手势验证码
  • 位于 iframe 内的元素(脚本已声明 @noframes,无法直接操作内部 DOM)

解决办法:把「按住时长」调大(如 80 ~ 150 ms),或把该步骤切换为坐标模式(徽标菜单 →「改为坐标」)。

运行时报错 Failed to convert value to 'Window'

已在 v1.0.2 修复。原因是 Tampermonkey 沙箱中的 window 是代理对象,不能直接作为 MouseEvent 的 view。现在改用 document.defaultView,并提供五级降级构造链。


更新日志

v1.0.2

  • 修复 Tampermonkey 沙箱下 MouseEvent 构造失败导致点击完全不生效的问题(五级降级链)
  • 日志区支持鼠标框选,新增「📋 复制日志」「清空日志」按钮,复制三级回退
  • 错误日志自动给日志框描红,并提示可复制反馈
  • 日志上限由 60 行提高到 100 行
  • 标识替换为官网与作者信息;存储键迁移至 zkcoi_ 前缀(自动迁移旧配置)

v1.0.1

  • 修复 CSS.escape 被局部变量遮蔽导致拾取后静默失败(脚本无法添加步骤)的核心 bug
  • 拾取模式增加十字光标、按钮状态切换等明确反馈
  • 拾取/运行期间的异常直接写入面板日志
  • 点击 iframe 时给出明确提示

v1.0.0

  • 首个版本:可视化拾取、多点串行点击、逐步骤间隔、循环、抖动、配置持久化

项目结构

.
├── auto-click.js   # 用户脚本本体,安装这一个文件即可
└── README.md                  # 本文档

技术说明

  • 纯原生 JavaScript,无任何外部依赖
  • 面板使用 Shadow DOM 渲染,样式与页面完全隔离,不污染也不受页面样式影响
  • 事件派发序列:pointerover → mouseover → pointermove → mousemove → pointerdown → mousedown → (hold) → pointerup → mouseup → click
  • 选择器生成策略:优先 id,其次 tag + class,再退化到 nth-of-type,并对每一层做唯一性校验

许可

MIT License © 2026 zkcoi

免责声明

本脚本仅用于提升个人在自有或已授权页面上的操作效率。请遵守目标网站的服务条款与相关法律法规,勿用于刷量、薅羊毛、恶意攻击等违反规则的用途。因使用本脚本造成的任何后果由使用者自行承担。


作者:zkcoi | 官网:https://www.zkcoi.com

S
Description
No description provided
Readme MIT
50 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 100%