影刀RPA微信4.0@名片获取剪切板文本写入Excel方便下次@人复用v20260509
评论
收藏

影刀RPA微信4.0@名片获取剪切板文本写入Excel方便下次@人复用v20260509

经验分享
小可耐教你学影刀RPA【哔哩哔哩同名】
2026-05-09 16:29·浏览量:145
小可耐教你学影刀RPA【哔哩哔哩同名】
影刀高级开发者
发布于 2026-05-09 15:59更新于 2026-05-09 16:29145浏览

影刀RPA源码案例库

https://my.feishu.cn/wiki/Vz0JwAXByi0WmTkFNBmcKrtJnTe

视频教程

影刀RPA微信4.0@名片获取文本写入Excel方便下次@人复用

前言

玩微信PC端自动化、聊天机器人、快捷回复的朋友,大概率都遇到过一个痛点:普通复制@昵称,粘贴到微信只是纯文本,无法触发真正的@提醒

很多人好奇:微信@一个人复制后,剪贴板到底藏了什么格式?Python怎么读取、怎么伪造设置剪贴板?今天就把我全程提问、踩坑、实操落地的完整过程整理成干货,从原始问题、拆解过程到最终可直接运行的代码,全部分享给大家,看完你也能轻松搞定微信@人剪贴板自动化。

一、我的原始提问初衷

平时做Python桌面自动化、微信PC端相关开发,一直有个刚需:

  1. 想搞懂微信@一个人时,剪贴板到底是什么数据类型

  2. 用Python怎么读取这种专属剪贴板数据;

  3. 能不能用Python手动设置剪贴板,伪造出可被微信识别的@人内容;

  4. 拿到微信原生@人剪贴板的原始格式列表后,能否直接复用还原剪贴板。

一开始以为只是普通文本剪贴板,深入后才发现:微信根本不用普通文本格式,而是自定义了专属富文本格式+多格式混合存储,这也是为什么直接拼@昵称粘贴无效的核心原因。

二、微信@人剪贴板原始数据解析

我在微信PC端复制@好友后,拿到了完整剪贴板格式列表,先给大家看原生结构:

[
    {'id': 49161, 'name': 'DataObject', 'value': 'f4080c0000000000'},
    {'id': 13, 'name': 'CF_UNICODETEXT', 'value': '\u2005@Kendall\u2005'},
    {'id': 1, 'name': 'CF_TEXT', 'value': '?@Kendall?\x00\x00\x00\x00\\'},
    {'id': 49720, 'name': 'WeChat_RichEdit_Format', 'value': '<WeChatRichEditFormat><EditElement type="0"><![CDATA[\u2005@Kendall\u2005]]></EditElement></WeChatRichEditFormat>'},
    {'id': 49719, 'name': 'QQ_Unicode_RichEdit_Format', 'value': '<QQRichEditFormat><EditElement type="0"><![CDATA[\u2005@Kendall\u2005]]></EditElement></QQRichEditFormat>'},
    {'id': 49718, 'name': 'x-application-mimetype-xwechat', 'value': '1778310146'},
    {'id': 49171, 'name': 'Ole Private Data', 'value': '超长二进制私有数据'},
    {'id': 16, 'name': 'CF_LOCALE', 'value': '\x04\x08'},
    {'id': 7, 'name': 'CF_OEMTEXT', 'value': '?@Kendall?'}
]

核心关键格式拆解(重点记这3个就行)

  1. CF_UNICODETEXT(ID=13)
    可视文本,前后带不可见空白字符\u2005,不是单纯的@昵称,少了隐藏字符微信就不认。

  2. WeChat_RichEdit_Format(ID=49720)
    微信专属富文本XML格式,新版微信@人固定type="0",包裹带隐藏字符的@内容,是微信识别@人的核心标识。

  3. x-application-mimetype-xwechat(ID=49718)
    存储好友微信内部唯一ID,也是绑定身份的关键,没有这个ID,无法精准匹配对应好友。

其余格式都是兼容、本地化、私有OLE数据,不用管,只需要保留上面3个核心格式就能实现完美还原

三、最终落地成果:Python完整实现代码

1. 传入原生格式列表,一键还原设置微信@人剪贴板

只需把微信原生剪贴板格式列表传入函数,自动解析、自动写入剪贴板,粘贴到微信直接触发@提醒,可直接运行:

import win32clipboard
import win32con

def set_clipboard_from_wechat_format(format_list):
    # 提取微信@人必需的三个核心格式
    target_map = {
        "WeChat_RichEdit_Format": None,
        "x-application-mimetype-xwechat": None,
        "CF_UNICODETEXT": None
    }

    for item in format_list:
        name = item["name"]
        if name in target_map:
            target_map[name] = item["value"]

    wechat_xml = target_map["WeChat_RichEdit_Format"]
    wechat_inner_id = target_map["x-application-mimetype-xwechat"]
    uni_text = target_map["CF_UNICODETEXT"]

    if not all([wechat_xml, wechat_inner_id, uni_text]):
        raise Exception("缺少微信@人必备剪贴板格式,无法还原")

    # 打开并清空剪贴板
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    try:
        # 写入微信富文本格式 49720
        win32clipboard.SetClipboardData(49720, wechat_xml.encode("utf-8") + b"\x00")
        # 写入微信内部ID格式 49718
        win32clipboard.SetClipboardData(49718, str(wechat_inner_id).encode("utf-8"))
        # 写入标准Unicode文本
        win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, uni_text)
        print("✅ 微信@人剪贴板设置完成,可直接去微信粘贴使用!")
        print(f"📌 粘贴内容:{uni_text}")
        print(f"🆔 绑定好友内部ID:{wechat_inner_id}")
    finally:
        win32clipboard.CloseClipboard()

# 微信原生剪贴板格式列表
if __name__ == "__main__":
    clipboard_raw = [
        {'id': 49161, 'name': 'DataObject', 'value': 'f4080c0000000000'},
        {'id': 13, 'name': 'CF_UNICODETEXT', 'value': '\u2005@Kendall\u2005'},
        {'id': 1, 'name': 'CF_TEXT', 'value': '?@Kendall?\x00\x00\x00\x00\\'},
        {'id': 49720, 'name': 'WeChat_RichEdit_Format', 'value': '<WeChatRichEditFormat><EditElement type="0"><![CDATA[\u2005@Kendall\u2005]]></EditElement></WeChatRichEditFormat>'},
        {'id': 49719, 'name': 'QQ_Unicode_RichEdit_Format', 'value': '<QQRichEditFormat><EditElement type="0"><![CDATA[\u2005@Kendall\u2005]]></EditElement></QQRichEditFormat>'},
        {'id': 49718, 'name': 'x-application-mimetype-xwechat', 'value': '1778310146'},
        {'id': 49171, 'name': 'Ole Private Data', 'value': '0000000068010000010000000500000000000000010000000d00000000000000000000000000000001000000ffffffff01000000fd7f0000010000000000000000000000000000000100000000000000000000000000000001000000ffffffff01000000fd7f00000100000000000000000000000000000038c2000000000000000000000000000001000000ffffffff01000000000000000100000000000000000000000000000037c2000000000000000000000000000001000000ffffffff01000000000000000100000000000000000000000000000036c2000000000000000000000000000001000000ffffffff010000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'},
        {'id': 16, 'name': 'CF_LOCALE', 'value': '\x04\x08'},
        {'id': 7, 'name': 'CF_OEMTEXT', 'value': '?@Kendall?'}
    ]
    # 执行设置剪贴板
    set_clipboard_from_wechat_format(clipboard_raw)

2. 环境依赖

只需安装Windows剪贴板依赖:

pip install pywin32

四、个人提问&踩坑经验分享

  1. 不要想当然认为是普通文本
    一开始误以为微信@人就是简单@昵称,直接拼接文本设置剪贴板,结果粘贴只是纯文字,没有@弹窗提醒。后来才明白:微信靠自定义格式+隐藏字符+内部ID三重校验,缺一不可。

  2. 微信版本不同,剪贴板格式ID不一样
    旧版微信是49683格式、type=9;新版微信PC端变成49720、type=0,不能套用网上老旧教程,一定要以自己当前微信抓包到的剪贴板格式为准

  3. 不用纠结冗余格式
    抓取到的剪贴板有八九种格式,DataObject、Ole私有数据、LOCALE这些完全不用处理,只保留3个核心格式就能完美还原,减少无用代码。

  4. 复用原生格式列表最省事
    不用自己手动拼接XML、构造隐藏字符,直接抓取微信原生复制后的格式列表,写代码自动解析复用,兼容性拉满,适配所有微信版本。

  5. 自动化开发核心思路
    做微信PC自动化、快捷回复、机器人@人功能,不用逆向微信协议,从剪贴板格式入手是最简单、最稳定、无封号风险的方案。

五、总结

微信@人剪贴板看似简单,实则藏了自定义富文本、隐藏字符、内部身份ID三层逻辑。通过一步步提问、拆解原生数据、编写适配代码,最终实现了传入任意微信@人剪贴板格式列表,就能一键还原可识别@的剪贴板

对于做Python自动化、微信工具开发的朋友,掌握剪贴板多格式解析与伪造,能轻松实现一键@人、批量回复、快捷话术等功能,避开协议逆向的复杂坑,低成本落地需求。

收藏3
全部评论1
最新
发布评论
评论