Go to file
2026-05-06 14:47:24 +08:00
wechat_clicker close quicktime player for video click 2026-05-06 14:47:24 +08:00
.gitignore v0.1 2026-04-22 19:28:54 +08:00
CLAUDE.md close quicktime player for video click 2026-05-06 14:47:24 +08:00
config.example.yaml find wechat while closing block non-chat tabs in wechat 2026-04-24 18:07:40 +08:00
main.py 解决了图片点击问题 2026-04-23 18:39:49 +08:00
project.md update video click 2026-05-06 14:31:56 +08:00
README.md v0.1 2026-04-22 19:28:54 +08:00
requirements.txt v0.1 2026-04-22 19:28:54 +08:00

WeChat 消息自动点击器

自动点击微信桌面端未读消息中的图片和文件,触发原始文件下载到本地目录。

背景

微信桌面端不会自动下载图片/文件的原始数据,需要用户手动点击预览后才会触发下载。本工具通过 macOS 辅助功能 API 自动完成这个操作,配合信息收集系统实现群聊数据的自动化入库。

系统要求

  • macOS Sonoma 14+
  • Python 3.11+
  • 微信桌面端 v4.1.9+(已登录)

安装

1. 安装 Python 依赖

cd wechat_msg_clicker
pip install -r requirements.txt

依赖包:

  • pyobjc-framework-Quartz — macOS 图形框架绑定
  • pyobjc-framework-ApplicationServices — 辅助功能 API 绑定
  • pyobjc-framework-Cocoa — macOS 应用框架绑定
  • PyYAML — 配置文件解析

2. 授权辅助功能权限

脚本需要 macOS 辅助功能权限才能操作微信 UI 元素:

  1. 打开 系统设置 > 隐私与安全性 > 辅助功能
  2. 点击左下角 +
  3. 添加你使用的终端应用(如 Terminal.app 或 iTerm2
  4. 如果通过 Python 直接运行,还需要添加 Python 解释器路径(如 /Users/你的用户名/miniconda3/bin/python3
  5. 确保添加后开关为 开启 状态

首次运行时如果未授权,脚本会弹出系统提示框引导你授权。

3. 准备配置文件

cp config.example.yaml config.yaml

按需编辑 config.yaml,主要配置项:

配置项 默认值 说明
scan.interval_seconds 30 扫描间隔(秒)
scan.max_chats_per_scan 5 每次最多处理几个聊天
schedule.start_hour 8 工作开始时间
schedule.end_hour 23 工作结束时间
filter.mode all 过滤模式all / whitelist / blacklist
filter.blacklist 微信系统号 排除的聊天名称
media.click_images true 是否点击图片
media.click_files true 是否点击文件
media.click_videos false 是否点击视频(默认关闭)
media.max_media_per_chat 20 每个聊天最多点击几个媒体

4. 确保微信就绪

  • 微信桌面端已启动并登录
  • 微信窗口保持可见(不能最小化到 Dock
  • 建议在专用电脑上运行,脚本运行时会操作微信前台窗口

验证流程

建议按以下顺序逐步验证,确认每步正常后再进入下一步:

Step 1验证 UI 访问

python main.py --dump-ui

预期输出:微信的 UI 元素树,包括窗口、按钮、聊天列表等信息。

如果报错

  • 辅助功能权限未授予 → 检查系统设置中的辅助功能授权
  • 微信未运行 → 确保微信桌面端已启动
  • 未找到微信主窗口 → 确保微信已登录,窗口未最小化

Step 2试运行扫描

python main.py --dry-run --once --debug

预期输出:扫描聊天列表,显示有未读消息的聊天和媒体数量,但不会实际点击

检查日志确认:

  • 能正确识别未读聊天
  • 聊天名称解析正确
  • 未读数量解析正确

Step 3单次完整执行

python main.py --once --debug

这会执行一次完整的循环:扫描 → 点击聊天 → 点击图片/文件 → 关闭预览 → 关闭会话。

观察过程中:

  • 微信窗口是否正常被操作
  • 图片预览是否正常打开和关闭
  • 是否能正确返回聊天列表

Step 4正式运行

python main.py

脚本会持续运行,按配置的间隔和工作时间自动处理新消息。

后台运行建议使用 nohuptmux

# 方式一nohup
nohup python main.py > /dev/null 2>&1 &

# 方式二tmux推荐方便查看日志
tmux new -s wechat
python main.py
# Ctrl+B D 分离会话
# tmux attach -t wechat 重新连接

命令参考

命令 说明
python main.py 持续运行
python main.py --once 单次扫描后退出
python main.py --dry-run 只扫描不点击
python main.py --dump-ui 输出微信 UI 元素树
python main.py --debug 开启 DEBUG 级别日志
python main.py --config path/to/config.yaml 指定配置文件

参数可组合使用,如 python main.py --dry-run --once --debug

日志

日志同时输出到控制台和文件 wechat_clicker.log(可在配置中修改)。

日志文件自动轮转,默认最大 10MB保留 5 个备份。

注意事项

  • 封号风险:工具内置了多种拟人策略(随机延迟、长休息、工作时间限制),但自动化操作始终存在被检测的可能,请自行评估风险
  • 微信更新:微信版本更新可能改变 UI 结构,导致脚本失效。如遇到问题,先用 --dump-ui 检查 UI 变化
  • 前台占用:脚本运行时会操作微信窗口,不建议同时手动使用微信