V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ellermister
V2EX  ›  分享创造

解放微信存储空间!一键清理群聊记录,减少十几 GB 体积!

  •  3
     
  •   ellermister · 283 天前 · 6341 次点击
    这是一个创建于 283 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    释放你的安卓微信内部存储空间,一键解放微信存储空间的工具。

    主要原理:

    通过解密微信的数据库,过滤出群聊天记录,并找出相关的缓存文件、图片、视频等,一并删除。最后,删除这些数据库记录,从而缩减数据库的大小。

    为什么会做这个?

    由于记忆力有限,可能不想删除所有的聊天记录,而是希望保留联系人记录,以便在需要时可以参考上下文。

    然而,微信甚至不像 QQ 那样,可以手动点击接收图片。微信默认会接收所有群组的消息、图片和视频缓存等,群里聊的每一个字节都存到了你的手机里。

    此外,微信的文件分类管理非常混乱,这些文件甚至被隐藏在 /data 目录中,只有具备 root 权限的用户才能进行处理。即使你有 root 权限,也无法轻易找出哪些文件可以删除,哪些文件不能删除。

    长期以来,虽然你的联系人资料可能并不占用太多存储空间,但群组的资料却可能占据了大部分空间。

    为什么你不退群?

    没有习惯退群,即使退了,群组之前的记录仍会像狗皮膏药一样永远存储在你的手机中,无法轻易清除。

    为什么不用内置聊天管理?

    内置的聊天管理功能根本无法满足清理需求,缺乏一键选择群组的功能。

    经过测试,即使勾选了清理选项,导出数据后你会发现数据库和缓存中仍然存在数据,内置功能并没有完全清理干净,就像删除了一个软连接一样。(测试自 8.0.2 版本)

    功能:

    • 清理所有群产生的聊天记录、图片、视频和音频缓存,从而缩减数据库大小。
    • 可选择只清理联系人,这一功能一般用不上。
    • 顺便清理其他目录:小程序、基础缓存、检查更新残留、record 缓存、avatar 缓存、FTS5Index*、webview 内核缓存、wepkg 缓存等。
    • 清理其他表项:公众号推送列表、转发通知消息、已经删除的关联记录表、用户头像关联缓存等。
    • UI 界面手动精细操作

    UI 界面操作

    支持操作:

    • 搜索昵称备注
    • 全选/取消全选所有好友
    • 全选/取消权限所有群组
    • 单选任意会话

    wechat-clean

    效果

    这是搞了好几天的成果,虽然还是很大,但已经减少了十几 GB 的体积!

    好在是可以弄成一键工具进行清理了。

    1689426978066

    IOS 用户

    对于没有 root 的 Android 或者 IOS 用户来说无法实现。

    可以许愿未来哪一天宇宙级产品经理愿意实现自定义备份功能了,就有解了!

    开源地址

    https://github.com/ellermister/wechat-clean

    49 条回复    2024-01-29 15:31:08 +08:00
    Tink
        1
    Tink  
       283 天前
    清理之后原来的图片还能看吗
    dianso
        2
    dianso  
       283 天前
    清理之后还能看吗
    ellermister
        3
    ellermister  
    OP
       283 天前
    @Tink @dianso

    清理后图片当然不能看了,聊天记录也就一起删除了。选择不需要的会话进行删除就行。
    LawlietZ
        4
    LawlietZ  
       283 天前
    微信不是有这个功能吗
    ellermister
        5
    ellermister  
    OP
       283 天前
    @LawlietZ 微信不能全选,按分类选,不能搜索删除。删除也无法删除干净。
    wanwaneryide
        6
    wanwaneryide  
       283 天前
    @ellermister 按会话清理的话,这个不是微信自带的功能吗?
    ellermister
        7
    ellermister  
    OP
       283 天前
    @wanwaneryide 微信不能全选,按分类选,不能搜索删除。删除也无法删除干净。
    pkxutao
        8
    pkxutao  
       282 天前
    你把微信的数据库解密了?也就是说,你能访问微信本地的聊天内容吗?
    ellermister
        9
    ellermister  
    OP
       282 天前
    @pkxutao 当然可以啊,不然怎么识别哪些文件能不能删除
    pkxutao
        10
    pkxutao  
       282 天前
    @ellermister #9 在非 root 情况下可以做到导出聊天记录不?或者能恢复删除的聊天记录不?我觉得这个需求量更大哈哈哈
    ellermister
        11
    ellermister  
    OP
       282 天前
    @pkxutao 可以通过某些厂商自带的备份功能,拿到 zip ,从 PC 端解码,但因为不能 hook ,所以密钥得自己计算,有可能计算不出来。

    而且已经删除的聊天记录不存在主库,存在 FTS5IndexMicroMsg_encrypt.db ,它的加密参数不一样,你可以搜索这个关键字获取更多知识。
    miniblink
        12
    miniblink  
       282 天前
    这工具不错
    Martens
        13
    Martens  
       282 天前
    微信的数据库好像是 sqlcipher
    ellermister
        14
    ellermister  
    OP
       282 天前
    @Martens 嗯,兼容的。微信自己搞了个 wcdb (卧槽 DB ),你可以看看。
    wenning
        15
    wenning  
       282 天前
    如果能导出微信聊天记录进行备份也是不错的.这样手机上就可以定期直接全清了
    lhbc
        16
    lhbc  
       282 天前 via Android
    装在备用机上,定期重装
    chotow
        17
    chotow  
       282 天前
    🤣 配图里好多张某的粉丝群
    lovelylain
        18
    lovelylain  
       282 天前 via Android
    @ellermister 以前微信自带的清理很废,但是现在的还行啊,不过要删两次才能彻底删除,第一次只删图片视频文件,第二次删语音和文字。你这个能删图片视频文件语音只保留文字吗?
    dianso
        19
    dianso  
       282 天前
    @ellermister #3 误会了,我以为是删除缩略图这些,每次打开原图还会再生成缩略图占用更大体积,不打开就不占用。

    原来是彻底清除啊。

    我一般都是将重要数据备份到电脑端,定期随机重装,然后聊天记录恢复。
    x86
        20
    x86  
       282 天前
    张小龙真爱粉啊
    ellermister
        21
    ellermister  
    OP
       282 天前 via Android
    @lovelylain 你说的那几次我不知道是啥。
    我是说设置/一般/存储空间那里对聊天室清理,之前是清理不干净,图片和数据库依然存在残留。
    ellermister
        22
    ellermister  
    OP
       282 天前 via Android
    @lovelylain 你可以把那几行删除数据库记录的代码屏蔽掉编译下就行。


    另外在这里说明下,微信数据库只要你在线记录所有加的群的聊天记录,记录每一个文字和表情符号,图片语音缓存。

    别人发了一个表情,你以为就占用几个字节,实际上他存了一个 xml 结构体,一个二进制的实体,还有一堆群用户关联的信息,还有索引信息。我估计几百 K 都少了吧。

    很多群一天到晚全是消息,全存到你的手机。群里发个公众号或者小程序或者浏览器分享的图文信息,又是一大块 xml ,全塞到你的手机里。
    ellermister
        23
    ellermister  
    OP
       282 天前 via Android
    @x86

    @chotow

    那个是 mock 的数据要正向一些!😂
    anjingdexiaocai
        24
    anjingdexiaocai  
       282 天前 via Android
    如果要 root 的话,那我还是备份到电脑,然后卸载软件,再备份回来😂
    wayne3602
        25
    wayne3602  
       282 天前 via Android
    问一下,如果可以做成模块,是不是就可以利用 lspatch 等免 root 工具让无 root 用户使用了?毕竟无 root 用户还是居多的,对于家人,让他们 root 更不现实,而他们的群聊天记录往往比我们还多
    ellermister
        26
    ellermister  
    OP
       282 天前 via Android
    可以的,劫持到微信的 db 连接,就行。只是我不会,调试也太麻烦,懒得弄。
    @wayne3602
    yhm2046
        27
    yhm2046  
       282 天前
    好人一生平安,请问下我有一台 pixel2xl 手机进不了系统了可以恢复内存里面的聊天记录吗?
    Jirajine
        28
    Jirajine  
       282 天前
    既然解密了微信的聊天记录数据库,那么对其进行导出到通用格式或 html 这种易于浏览的格式应该更有价值,至少 dump 一份原始数据库的未加密版放 db 软件里浏览。
    另外关于计算密钥的部分是不是过时了,Android 早就不能获取 IMEI 了,新版本密钥的生成方式肯定也不一样,frida 脚本应该是很不错的方式。
    @wayne3602 如果你能够 patch 微信,并且安装使用 patch 后的微信,且微信允许你这么做,还不封你号,那么用 frida 也是一样的,frida 也可以通过 patch 的方式注入到特定应用中。
    villivateur
        29
    villivateur  
       282 天前
    我觉得更大的意义是能解密微信聊天记录啊,如果能做一个导出聊天记录的功能就更好了
    opengps
        30
    opengps  
       282 天前
    漂亮,微信的臃肿确实不是自带聊天记录管理能解决的,重点是哪些 emo 表情的 data 存储根本清理不掉
    shinsekai
        31
    shinsekai  
       282 天前
    其实借助电脑备份一下聊天记录,卸载后再转回来应该就可以实现同样的效果。另外 iOS 聊天获取可以通过 itunes 备份吧
    wayne3602
        32
    wayne3602  
       282 天前 via Android
    @Jirajine 参考微信模块-微 x
    allplay
        33
    allplay  
       282 天前 via Android
    常规手段操作:备份聊天记录至电脑,只选择你要保存的;卸载微信,清除残余文件;重装微信,把聊天记录恢复过来。
    这样确实能消除微信内被秘密备份的不可删除数据,且不必 root 。缺点是每次备份恢复时间稍长,一年弄一次即可。
    thetbw
        34
    thetbw  
       282 天前
    导出和备份聊天记录感觉用户量更大,还有找到之前删除的好友这种,毕竟后悔药
    lqzhgood
        35
    lqzhgood  
       282 天前
    推一下自己写的聊天记录归档工具,可以导出微信记录做冷备份,而且不管用没用到的字段都会导出,确保数据完整

    [卖瓜 🍉] Shmily-聊天记录归档 支持 QQ 、Wechat 、SMS 等
    https://v2ex.com/t/944851
    zzz22333
        36
    zzz22333  
       282 天前
    @thetbw 同感
    ellermister
        37
    ellermister  
    OP
       282 天前
    @villivateur 之前已经有人做了微信备份聊天记录到文件的项目,可以在 GitHub 搜一下,也是需要 root 。你也可以用我的这个源码改,如果你是只用一次也没必要,可以 dump 出不加密的 DB ,在电脑里随时用 SQL 工具看。

    我有想过,弄个服务在 Android 后台,用浏览器打开界面就能搜关键词,搜聊天记录,真 like 搜索,微信现在[牛逼]的搜索功能,明明聊天记录有,就是搜不到,太[牛逼]了。暂时感觉我自己没需求了,懒得搞。


    @thetbw 我想不起来主动删除的好友,但是如果是被别人删除的,那么 rcontact 表里就有你想要的,like %关键词% 查找就行。另外还有特别关注、拉黑的好友等,包括你加的所有群的群成员都在里面。



    @anjingdexiaocai
    @allplay 从手机备份到电脑是一种方式,但是依然是不能只备份联系人,不能搜索选择全选的操作。就会导致备份一大堆垃圾数据上去,如果你只有几十个少量联系人愿意手动挑选,那么你确实不需要这种功能。


    @shinsekai IOS 备份的也是全量备份,参考上一条,而且我是免费计划用户,只有 5GB ,无法备份。


    @yhm2046 把你存储卡的数据导出来到电脑里,你慢慢折腾,网上文章不少,先从解密数据库开始。可以计算 key ,从配置文件找 KEY 和 IMEI ,另外如果你打包的得当,可以在另外一台设备上登录的并拥有完整数据。


    我自己已经把微信垃圾清理干净了,备份到电脑,再恢复到全新 iPhone 上,最近会话和好友和聊天记录都在。但失去了好友请求记录,包含你什么时间加的好友,发的什么备注信息,反过来一样,有一个时间线先后信息,辅助记忆。

    有点想换回 Android ,虽然感觉少了点什么,但也还能用。
    cheese
        38
    cheese  
       282 天前
    Releases 里的安装包无法使用,下载后改成 apk 后缀,手机安装的时候提示安装包损坏
    ellermister
        39
    ellermister  
    OP
       282 天前
    @cheese 他不是 apk 程序,是命令行交互的程序。你需要在 shell 终端执行。
    cheese
        40
    cheese  
       282 天前
    @cheese #38 乌龙了!!!原来不是直接安装的 apk
    wtdd
        41
    wtdd  
       282 天前
    聊胜于无,看原理,这和 root 之后直接删图片视频等文件夹,区别不大吧
    ellermister
        42
    ellermister  
    OP
       282 天前
    @wtdd 我的目的是仅删除群的所有记录。另外还要压缩数据库体积。
    huihuiHK
        43
    huihuiHK  
       281 天前
    [email protected] 是你嘛?
    ellermister
        44
    ellermister  
    OP
       281 天前
    @huihuiHK 做咩野?
    yagamil
        45
    yagamil  
       281 天前
    如果只是删除群的所有记录,按着群,然后直接删除就可以了。

    不过实际这样,你把所有群消息删除完了,实际体积还有一部分是有残余的。吐槽下 wx 的架构,这体积占用太恐怖了。
    ellermister
        46
    ellermister  
    OP
       281 天前 via Android
    @yagamil 基本无残留了,你看描述。
    skvi
        47
    skvi  
       100 天前 via Android
    从 Android 到聊天记录到电脑,一直提示不在同一个网络,macos 中给了 wechat 获取 location 的权限!双端的网络接口都关了 ip tracking ,甚至电脑开热点都不识别!更离谱的是有一次识别出来了,也说不在同一 ssid !
    ellermister
        48
    ellermister  
    OP
       89 天前
    @skvi mac 不清楚,如果 win 笔记本,试试关闭防火墙。热点好多都不太行,得连局域网 WIFI ,WIFI 别用公司那种,公司那种有可能会开 LAN TO LAN 的防火墙。
    skvi
        49
    skvi  
       89 天前 via Android
    @ellermister 相同环境,我换 weixin 其他账号可以,wechat 不行,但是我同事 wechat 又可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3027 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.