Skip to content

TonyLTalentexe/wechat-send

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

wechat-send

通过 AppleScript 操控 macOS 微信客户端,给指定联系人发送文字消息。

纯键盘+剪贴板驱动,不依赖任何微信逆向或非官方协议,零封号风险。

工作原理

激活微信 → Cmd+F 搜索联系人 → Enter 选中 → 点击输入框 → 粘贴消息 → 发送

本工具模拟人类操作微信桌面客户端,通过 macOS 原生的 AppleScript + Accessibility API 实现。微信无法区分脚本操作和真人操作。

环境要求

依赖 版本 说明
macOS 12.0+ 需要 Apple Silicon 或 Intel Mac
微信 Mac 4.1.x 4.1.7 上测试通过
cliclick 5.0+ 命令行鼠标点击工具
Bash 3.2+ macOS 自带

安装

1. 安装 cliclick

brew install cliclick

2. 下载脚本

curl -o ~/tools/wechat_send.sh https://raw.githubusercontent.com/TonyLTalentexe/wechat-send/main/wechat_send.sh
chmod +x ~/tools/wechat_send.sh

或者克隆仓库:

git clone https://github.com/TonyLTalentexe/wechat-send.git
chmod +x wechat-send/wechat_send.sh

3. 授予 Accessibility 权限

首次运行时,macOS 会弹窗要求授权。前往:

系统设置 → 隐私与安全性 → 辅助功能 → 勾选你的终端应用(Terminal / iTerm2 / Ghostty 等)

使用

# 基本用法
./wechat_send.sh "联系人名称" "消息内容"

# 示例
./wechat_send.sh "张三" "明天下午3点开会"
./wechat_send.sh "工作群" "收到,已确认"

# 查看帮助
./wechat_send.sh --help

环境变量

变量 默认值 说明
WECHAT_SEND_KEY cmd 发送快捷键。cmd = Cmd+Enter,enter = Enter。取决于你的微信设置
CLICLICK /opt/homebrew/bin/cliclick cliclick 可执行文件路径。Intel Mac 通常是 /usr/local/bin/cliclick
# 如果你的微信设置为 Enter 发送
export WECHAT_SEND_KEY=enter
./wechat_send.sh "张三" "你好"

# Intel Mac 用户
export CLICLICK=/usr/local/bin/cliclick

安全机制

机制 说明
截屏存证 发送后自动截屏保存到 /tmp/wechat_send_audit/,保留最近 20 张
并发锁 mkdir 原子锁,防止多实例同时操控微信
剪贴板恢复 trap EXIT 确保异常退出也能恢复原始剪贴板
环境清理 开始前按 3 次 Esc 关闭残留弹窗
窗口校验 微信窗口小于 400x400 时��绝执行
焦点恢复 发完后自动切回调用方应用
操作通知 发送前弹 macOS 通知提醒用户勿操作

已知限制

  • 运行时占屏约 5 秒:微信必须在最前面接收键盘事件,期间请勿操作键鼠
  • 开环控制:微信 Mac 4.x 的 Accessibility tree 极浅,脚本无法读取当前聊天对象,靠截屏存证事后追溯
  • 搜索匹配风险:联系人名称需足够唯一。如果搜索结果不精确,可能发到错误对话
  • 群聊搜索:不活跃的群聊可能被"搜索网络结果"抢占排序(v2 将解决此问题)
  • 仅支持文字消息:不支持图片、文件、语音等
  • 不适合批量群发:高频使用可能触发微信风控

测试环境

  • macOS 26.3 (Sequoia) / Apple Silicon (arm64)
  • WeChat Mac 4.1.7 (build 34371)
  • cliclick 5.1

版本规划

v1(当前版本)

  • 个人聊天发送文字消息
  • Cmd+F 搜索 → Enter 选中
  • 安全机制(截屏、并发锁、剪贴板恢复)

v2(开发中)

  • 群聊分治搜索策略(Cmd+N / Cmd+F + Down×N 自动切换)
  • @ 群成员能力(--at "成员名" 参数)
  • 浏览器 fallback 自动恢复

工作流程详解

1. 参数校验 + 依赖检查(微信运行中?cliclick 已装?)
2. 获取并发锁(mkdir 原子操作,30 秒自动过期)
3. 保存当前剪贴板内容
4. 获取微信窗口坐标,计算输入框点击位置
5. 记住当前前台应用(发完后切回)
6. macOS 通知"请勿操作键鼠"
7. 激活微信 + set frontmost(双重确保前台)
8. 3×Esc 清理残留弹窗
9. Cmd+1(聊天列表)→ Cmd+F(搜索)→ 粘贴联系人名 → Enter 选中
10. cliclick 点击输入框(搜索后焦点不会自动跳到输入框)
11. 粘贴消息 → Cmd+Enter 发送
12. 截屏存证 → 清理旧截屏
13. 切回原来的前台应用
14. 恢复剪贴板

License

MIT

About

通过 AppleScript 操控 macOS 微信客户端发送文字消息。纯键盘+剪贴板驱动,零封号风险。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages