从零打通微信数据到博客发布:一次 AI Agent 集成实践
⚠️ 2026-05-26 更新:微信账号被封风险警告
本文最初版本记录了通过扫描微信进程内存、解密本地 SQLCipher 数据库来提取文章的方法。这种方法已被微信安全机制检测并导致账号被封禁。
如果你只是想发布公众号文章到博客,请直接跳到文末的安全方案,使用朋友转发链接的方式即可,不要碰任何微信进程和解密工具。
前言
最近在做一个自动化工作流:把微信公众号上看到的好文章,自动提取、整理、发布到个人博客。
听起来很简单对吧?但实际上,它牵出了一整条技术链路——从 Windows 进程内存扫描,到 SQLCipher 数据库解密,再到 Hexo 博客构建部署。这篇文章就记录这个打通的过程和方法。
背景与目标
需求其实很直接:我有一个 Hexo 博客,希望每次在微信上看到有价值的公众号文章时,能自动或半自动地整理到博客上。
理想的工作流是这样的:
1 | 微信收到文章 → 自动提取 → 学习内化 → 生成博客 → 部署上线 |
前两个环节是最大的挑战:怎么”自动提取”微信里的数据?
第一关:理解微信的数据存储
微信 4.x 的新格式
如果你很久没研究过微信桌面版的数据存储,可能会以为它还在用 WeChat Files 那个老目录。实际上,微信 4.x 版本引入了全新的存储体系——xwechat_files。
新的目录结构大致是这样的:
1 | xwechat_files/ |
所有核心数据都存储在 SQLite 数据库中,但——这些数据库全部经过 SQLCipher 加密。
SQLCipher 是什么
SQLCipher 是 SQLite 的加密扩展,对每个数据库页面进行 AES 加密,并附带 HMAC 完整性校验。简单说,没有密钥,这些 .db 文件就是一堆乱码。
微信使用的是 SQLCipher 4,具体参数:
- 加密算法:AES-256-CBC
- 密钥派生:PBKDF2-HMAC-SHA512(256,000 次迭代)
- 页面大小:4096 字节
- 每个数据库有独立的 salt(存储在文件头的 16 字节中)
第二关:密钥在哪里
既然数据库是加密的,密钥在哪里?
答案在意料之中,也在情理之中:密钥存储在微信进程(Weixin.exe)的运行内存中。
进程内存扫描
Windows 上读取其他进程的内存,核心 API 是:
OpenProcess— 打开目标进程,获取句柄VirtualQueryEx— 枚举进程的虚拟内存区域ReadProcessMemory— 读取指定内存区域的内容
但有个前提:需要管理员权限。因为 PROCESS_VM_READ 权限对非管理员进程是受限的。
从海量内存中找到密钥
微信进程的内存空间很大(动辄数 GB),直接全量扫描是不现实的。关键是要知道 找什么。
通过分析 SQLCipher 的密钥存储习惯,微信在内存中保存密钥的格式是:
1 | x'<64位十六进制密钥><32位十六进制盐值>' |
这个模式非常具有辨识度:以 x' 开头,接着是 64 个 hex 字符(0-9, a-f),然后是可选的 32 个 hex 字符,最后以 ' 结尾。
扫描策略:
- 只扫描可写私有内存(PAGE_READWRITE + MEM_PRIVATE)——密钥存在堆上,不在代码段或映射文件中
- 使用
pymem.pattern_scan_all搜索x'特征 - 对每个命中的位置,读取后续字节,验证 hex 格式
- 按出现频率排序,频率最高的就是正确的密钥
运行扫描后,从数十 GB 的虚拟地址空间中,可以提取到约 40-50 个候选密钥。
验证密钥的正确性
找到候选密钥后,需要验证它是否真的能解密数据库。验证方法很巧妙:
- 读取数据库文件的前 16 字节(salt)
- 用密钥和 salt 派生出 HMAC 密钥
- 校验数据库第一页的 HMAC 签名
- 匹配成功 → 密钥正确
意外发现:不同数据库用不同密钥
在验证过程中发现一个有趣的现象:同一个微信账号的不同数据库,使用的加密密钥不同。
| 数据库 | 密钥 |
|---|---|
biz_message_*.db(公众号消息) |
密钥 A |
session.db(会话) |
密钥 B |
contact.db(联系人) |
密钥 C |
这意味着不能用一个密钥解密所有数据库。这给那些只支持单密钥的工具带来了兼容性问题。
第三关:现有工具的局限
在探索过程中,尝试了两个主流的微信 CLI 工具:
wx-cli (@jackwener/wx-cli)
这是一个 Node.js 编写的 CLI 工具,提供了 18 个命令来查询微信数据。但它有两个关键问题:
- 只支持老版微信格式:它寻找的是
WeChat Files目录路径,而微信 4.x 用的是xwechat_files - 单密钥模型:所有数据库共享一个
master_key,但微信 4.x 每个库的密钥不同
即使手动配置文件路径和密钥,也无法正常工作。
wechat-cli (@canghe_ai/wechat-cli)
一个 npm 包,自带内存密钥提取功能。在 Windows 上安装受限——npm 包只提供了 macOS arm64 二进制。
huohuoer/wechat-cli
另一个 Python 实现的 CLI 工具(v0.2.4),设计思路清晰、AI 友好的 JSON 输出。实际测试中通过 conda 创建 Python 3.10 环境后能在 Windows 上正常运行:
1 | # 实测可用的安装方式 |
内存扫描能提取全部 28 个数据库密钥,查询功能正常。
解决方案:ZedeX/weixin-decrypte-script
另一个可用的开源工具集。优势在于:
- Python 3.8+ 兼容,Windows 原生支持
- 支持微信 4.x 的
xwechat_files格式 - 自动扫描进程内存提取密钥
- 提供解密、读取、API 服务的完整工具链
实际测试中,在已有 conda 环境内安装 pymem 依赖后,扫描全部 5 个微信子进程,成功提取到 28/29 个数据库密钥。
⚠️ 但上述工具最终都因扫描微信进程内存触发了安全检测,导致账号被封禁。 详见下文「血的教训」。
第四关:处理公众号文章内容
解密数据库只是第一步。从数据库中读到的公众号文章消息是 XML 格式的:
1 | <msg> |
而且消息体经过 Zstandard (zstd) 压缩,需要先解压才能解析。
提取出文章 URL 后,再通过 HTTP 抓取获取完整正文,最终生成博客文章。
完整工作流(旧方案,已废弃)
⚠️ 以下方案因扫描微信进程内存已被封号,仅供参考,请勿效仿。
旧方案的全流程:
1 | 1. 微信运行中 → 扫描 Weixin.exe 进程内存 → 提取 SQLCipher 密钥 |
整个过程从手动执行到半自动,再到脚本化一键完成——但这条路已经被微信封死。
最终推荐方案
如果你也想做公众号文章到博客的自动化,建议直接用最轻量的方案:
1 | 朋友/自己转发链接 → 复制 URL → fetch_article.py 抓取 → generate_blog.py 生成 → deploy 上线 |
不需要管理员权限,不需要解密任何数据库,不需要扫描进程内存。微信零感知。
具体工具链见 wechat-to-blog skill。
安全方案:手动转发 + 自动发布
如果你和我一样只是想发文章到博客,不要碰微信数据库。最安全也最简单的工作流:
1 | 朋友转发链接 → 你复制链接 → 脚本抓取全文 → AI 整理 → 生成博客 → 部署上线 |
这套方案用到的工具完全不涉及微信内部数据:
fetch_article.py— 用 curl 模拟浏览器抓取公众号文章页面,提取标题和正文(纯 HTTP 请求,不碰微信进程)generate_blog.py— 将提取的内容整理成 Hexo Markdown 文件deploy_blog.py— 执行hexo generate+ 部署到 GitHub Pages
三个脚本在一个独立的 wechat-to-blog skill 里,只处理公开的 URL 内容和本地文件,对微信零侵入。
实际操作流程
1 | # 1. 朋友发了链接,你复制后执行 |
整个过程不到 30 秒,零风险。
经验与教训
0. ⚠️ 不要扫描微信进程内存(血的教训)
这是最重要的教训:任何读写微信进程内存、解密微信数据库的操作,都会被微信的安全机制检测到,导致账号被封禁。
2026年5月,我在测试 wechat-cli 和 weixin-decrypte-script 等工具后,微信直接封停了账号。这些工具的原理——OpenProcess + ReadProcessMemory 扫描进程内存、SQLCipher 数据库解密——触发了微信的反外挂检测。
如果你的目的只是发博客文章,完全不需要走这条路。
1. 不要假设旧工具能用
微信的本地数据存储格式在 4.x 版本发生了根本性变化。很多基于旧版微信的工具已经失效。遇到问题时,第一反应应该是检查目标软件版本,而不是在错误的方向上调试。
2. 进程内存是宝藏——但别碰
桌面应用的敏感数据(密钥、令牌、解密后的内容)几乎必然出现在进程内存中。只要有权访问进程内存,就能找到这些数据。但微信对此有严格的检测机制,碰了就会封号。
3. 简单方案胜过复杂方案
一开始我走入了误区:觉得”自动化”就必须从数据库源头打通。实际上最简单的方案——朋友转发链接,我复制到脚本里抓取——已经能满足 100% 的需求,而且零风险。在开始复杂的技术方案之前,先问问自己:有没有更简单的做法?
wx-cli 虽然不兼容新版本,但它的设计思路(AI 友好的 JSON 输出、命令式交互)值得借鉴。
4. 权限问题永远是门槛
读取进程内存需要管理员权限。但安全方案(URL 抓取)不需要任何特殊权限,普通用户就可运行。
隐私与安全说明
安全方案的特点:
- 零侵入:只通过 HTTP 请求访问公开的公众号文章 URL,不碰微信进程和数据
- 可控输出:发布到博客的内容需要人工审核,不会自动公开私人信息
- 低权限:不需要管理员权限,普通用户即可运行
总结
打通微信文章到博客的自动化,最终落地的是一条安全、简单的路径:
- 获取文章 → 朋友转发链接,你手动复制
- 抓取内容 →
fetch_article.py通过 HTTP 抓取公开页面 - 整理发布 →
generate_blog.py生成 Hexo 文章 +deploy_blog.py部署上线
最初尝试的数据库解密方案虽然技术上更有趣,但最终证明是错误的方向——不仅复杂度高,而且导致了微信账号被封。
如果你也在做类似的数据集成,建议先问自己:最简单的方案是什么? 很多时候,手动复制一个链接比逆向整个系统要明智得多。
本文为技术实践记录,不涉及具体密钥、账号信息及本地路径。