Home
Softono

QQ History Backup

Open source MIT Python
390
Stars
24
Forks
2
Issues
8
Watchers
2 years
Last Commit

 About QQ History Backup

QQ聊天记录备份导出,支持无密钥导出,图片导出。无需编译有GUI界面。Backup Chating History of Instant Messaging QQ.

Platforms

Web Self-hosted iOS Android

Languages

Python

Links

Need Help Installing QQ History Backup?

We provide expert installation service for this software. Our team will install, configure, and secure QQ History Backup on your server. plans start at just $30.

QQ History Backup

View on GitHub

QQ聊天记录导出

本项目用于将 非 QQNT 的 Android 端 QQ/TIM 的聊天记录数据库转换为 HTML 文件,并转换图片、语音等部分特殊消息。

关于其他平台(Windows, MacOS, iOS…)

请看 QQBackup/qq-win-db-key

维护情况

省流:没时间维护,欢迎新 maintainer 与 PR(或者可以自行开个fork)。请提交到dev分支。

同时,请参看qq-win-db-key 中列出的改进版

运行方式

  1. 一切操作之前,你需要先安装 Python 3.x(建议使用可下载的最高版本,已知支持3.12),可参考此文章(Windows)
  2. 然后,在当前目录打开终端,Windows 用户若不懂可以看这篇博文
  3. 输入以下命令永久加速相关依赖的下载(换源):pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  4. 安装依赖:pip install -r requirements.txt
  5. 若是运行 GUI,就python GUI.py
  6. 若是直接运行命令行版,就修改好QQ_History.py最下面的内容,并运行:python QQ_History.py

声明

本项目仅供学习交流使用,严禁用于任何违反中国大陆法律法规、您所在地区法律法规、QQ软件许可及服务协议的行为,本人不承担任何相关行为导致的直接或间接责任。

本项目理论仅能将可以通过正常方法查看的聊天记录导出,而不能进行包括但不限于已删除聊天记录恢复在内的操作。

本项目不对生成内容的完整性、准确性作任何担保,因此生成的一切内容没有法律效力,您不应当将其用于学习与交流外的任何用途。

简介

作为国内最常用的聊天工具之一,QQ 为了用户留存度,默认聊天记录备份无法脱离 QQ 被独立打开。

目前版本往往需要通过命令行运行,本方法在之前版本的基础上简化了操作,制作了GUI方便使用;并且不再需要提供密钥,自动填入备注/昵称,添加了QQ表情、图片和语音的一并导出。

如果你不使用打包后的版本,请首先运行以下命令以安装依赖:pip install -r requirements.txt

获取聊天记录文件夹方法

注:以下提到的“电脑”泛指一切可以运行此程序的环境,如安卓手机上的 Termux 也属于此列

注:以下内容假设您使用的是 QQ 而非 TIM,如果您在使用 TIM,请将com.tencent.mobileqq改为com.tencent.tim,将MobileQQ改为Tim

如果手机已获得 root 权限,聊天记录可在以下路径找到。

/data/data/com.tencent.mobileqq/

我们需要的文件只有databases/<QQ号>.dbdatabases/slowtable_<QQ号>.dbfiles/kc,因此您可以将整个文件夹压缩后传输到电脑上,亦或将这三个文件单独放在同一个目录中传输。本程序会自动识别这两种不同的目录结构。

如果没有 root 权限,可以通过手机自带的备份工具备份整个 QQ,拷贝备份文件到电脑,解压找到 com.tencent.mobileqq

具体方法可以参见

怎样导出手机中的QQ聊天记录? - 益新软件的回答 - 知乎 https://www.zhihu.com/question/28574047/answer/964813560

关于苹果设备导出,参见此讨论;对于安卓系统导出内容的提取,请自行在互联网查询。

如果同时需要在聊天记录中显示图片,拷贝手机中 /sdcard/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/chatpic/chatimgGUI.exe 同一文件夹中或者拷贝过来的com.tencent.mobileqq目录下。

(QQ)如果同时需要在聊天记录中显示语音,拷贝手机中 /sdcard/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/<QQ号>/pttGUI.exe 同一文件夹中或者拷贝过来的com.tencent.mobileqq目录下。

(TIM)如果同时需要在聊天记录中显示语音,拷贝手机中 /sdcard/Android/data/com.tencent.tim/Tencent/Tim/ptt/<QQ号>GUI.exe 同一文件夹中或者拷贝过来的com.tencent.mobileqq目录下,并重命名为ptt

GUI使用方法

GUI_image

  • com.tencent.mobileqq:选择导出的相应文件夹,对于备份方式,一般为apps/com.tencent.mobileqq
  • 表情版本:默认为新版QQ表情。如果你的聊天记录来自很早以前,可以切换为旧版的表情
  • 导出所有记录:若此项选择“是”,则QQ号/群号:私聊/群聊:选项会被忽略。
  • 导出图片:若此项与前一项均选择“是”,必须把chatimg目录复制到生成的output_xxx目录下,图片才能正常显示
  • 合并图片:默认为否
    • 不启用合并图片好处在于:1. 使导出的 HTML 文件具有可读性;2. 减小 HTML 文件体积方便打开
    • 启用合并图片好处:拷贝时不需要和 emoticon 以及 chatimg 文件夹一起拷贝,更加方便

输出截图

screenshot screenshot

如果没有启用合并图片,拷贝生成的聊天记录时需要一起拷贝 emoticon 以及 chatimg 文件夹.

有 bug 的话提 issue,记得附上 log.txt 里的内容以及终端的报错内容。

TODO

  • 支持群聊导出
  • 支持自动查找密钥
  • 使用好友/群聊昵称作为默认用户名
  • 自动合并 db 和 slow-table
  • 支持新 QQ emoji
  • 支持单一文件导出
  • 支持音频导出
  • 支持视频导出
  • 支持合并转发消息导出
  • 支持戳一戳导出
  • 支持缩略图
  • 支持卡片分享
  • 重构代码
  • 加入 i18n 与自定义翻译支持
  • 支持使用silk-v3-decoder转换音频文件
  • 使用 Jinja2 生成 HTML 文件
  • 允许插入自定义 CSS 与 自定义 JS
  • 分析并试图优化解密相关函数
  • 更新预览图
  • 基于 GitHub Actions 以 PyInstaller 生成在 Windows 下的可执行文件

FAQ

  • 聊天记录中显示 [图片] 是因为什么?

    解码出的图片路径在 chatimg 找不到相应文件。可能原因为在手机中没有加载过该文件,导致图片没有存在手机里。

CHANGELOG

v2

  • 直接从 files/kc 提取明文的密钥,不用再手动输入或解密
  • 支持群聊记录导出
  • 支持 私聊/群聊 的 备注/昵称 自动填入
  • 支持 slowtable 的直接整合
  • 支持新版 QQ 表情

v2.2

  • 支持导出图片至聊天记录
  • 支持合并图片至单一文件方便传输

v2.3

  • 支持读取不同的目录结构
  • 支持单独导出一个私聊对话或群聊对话
  • 部分修复解密函数存在的 bug
  • 支持批量导出
  • 修复导出的 HTML 中的字符转义

v2.4

  • 支持读取音频

致谢

  1. roadwide/qqmessageoutput

  2. WincerChan/export.py

  3. Yiyiyimu/QQ-History-Backup (本仓库的来源,致敬!同时,源代码基于 MIT 协议使用。)

  4. ZhangJun2017/QQChatHistoryExporter (参考了 Protobuf 相关内容)

适配新类型笔记

  1. 下载 protoc 这一可执行文件,设置可执行权限(仅 Linux 类系统)并移动到适当位置(位于 PATH 环境变量中的目录)

  2. 编辑proto/RichMsg.proto,增加新类型(可以参照此项目

  3. 切换到目录proto中,运行compile,在 Windows 下需先将其改名为compile.bat

  4. 编辑QQ_History.py中的decrypt,加入msgtype对应判断与处理代码

  5. 记得写文档