
一键解析加密账单:PHP实现微信支付宝自动化对账工具
“账单不难管,难的是每次都要手动点开压缩包,然后去找密码……”
作为一个软件开发者,我除了本职工作,也经常接些副业项目。加上日常各种零碎的支出,其实每天的消费记录都不少。
因为家里有一台自己的服务器,我一直尝试把一些个人信息收集起来,比如智能设备的健康数据、电脑使用记录等等,再集中在一个小网站上做可视化统计。消费记录,自然是其中的重要一环。
但在这整条“账单自动化”链路中,有一步始终特别烦人:
每月下载账单 → 找密码解压 → 打开 CSV → 清洗数据 → 导入系统
更麻烦的是,压缩包的密码通过公众号/服务号发来,而账单本身发到邮箱,你得手动去翻邮件下载,再手动复制密码、解压、处理数据。
虽然信息提取和入库我早已脚本化,但“下载 + 解压 + 找密码”这块,始终让我觉得冗余又机械。
直到某天上厕所时突然想到:
账单都发到邮箱了,我干嘛不让服务器自己监听,收到就自动处理?
一旦这一步打通,剩下唯一的问题就是——
怎么让程序自己解开带密码的压缩包?
我的目标很简单
我那个展示统计信息的网站是 PHP 写的,那干脆就用 PHP 解决这整个账单处理流程。
目标就四个字:全自动化。
具体来说就是:
- 自动解析支付宝、微信账单的 zip 压缩包;
- 无需手动输入密码,自动暴力破解;
- 解压出内部 CSV 后自动提取数据;
- 拆成 Composer 包,按需引入。
暴力但有效的解决方案
微信和支付宝的账单压缩包有个共同特点:密码是 6 位纯数字(比如支付密码的后六位)。
也就是说,总共只有 100 万种组合,从 000000
到 999999
。
对电脑来说,这点穷举量根本不叫事。但如果用 PHP 来暴力破解……就有点像拿自行车拉货了。
PHP 作为解释型语言,每行代码都得“边跑边翻译”,又要频繁创建变量、垃圾回收,性能开销很大。真让它跑完一轮,全核 CPU 干到 100%,可能也得跑个几分钟,体验非常拉跨。
所以我干脆请出 C 语言,用多线程 pthread
调用 libzip
的底层 API 来解压:
- 秒级完成密码破解;
- 多线程并发不拖后腿;
- 性能消耗低,不影响主机运行。
项目地址(已开源)
代码我已经开源,逻辑非常直白,欢迎参考:
- 微信账单解析器
🔗 https://github.com/zxc7563598/php-wechat-bill-parser - 支付宝账单解析器
🔗 https://github.com/zxc7563598/php-alipay-bill-parser
之所以拆成两个包,是因为它们的解压逻辑、编码格式、字段结构等略有差异。也考虑到有些人可能只需要其中一个平台,所以没必要整合成一个大包。
最后
在写这个工具之前,我每个月都得花十几分钟:下载账单、找密码、解压、清洗、导入……虽然听起来不长,但真的是每次都烦,而且完全是重复劳动。
现在整个流程已经完全自动化:
- 服务器监听到账单邮件通知
- 自动下载 zip 压缩包
- 自动解压 + 数据解析
- 存入数据库
- 网页前端实时展示图表
我唯一需要做的,就是每月把账单导出发送到邮箱。其它的,服务器自动搞定。
仓库地址就在上面,感兴趣的朋友欢迎 Star、一起来交流。如果你也曾为这些小事烦恼过,希望这个工具对你有帮助。也欢迎分享给身边有同样需求的人。
- 感谢您的赞赏