把QQ空间里的历史说说完整备份下来:GetQzonehistory 实操笔记

发布时间:2026/9/20 10:28:29
把QQ空间里的历史说说完整备份下来:GetQzonehistory 实操笔记 把QQ空间里的历史说说完整备份下来GetQzonehistory 实操笔记【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory你大概率遇到过这种情况想把自己这些年发在QQ空间里的说说完整备份网页却只能一条条翻页看也没有批量导出入口。GetQzonehistory 把这件事变成跑一条命令的事在终端里扫一次码它就在后台把你的说说历史分页拉完最后交给你 Excel 表格、一批本地图片和一个网页版 HTML。它全程跑在终端里。登录后先做一次二分探测在 0~1000 万区间里数出你的互动消息总数大约 23 次请求然后按每批 10 条抓消息列表每批硬等约 8 秒可见说说列表则按每页 30 条单独抓一遍合并去重后落盘6 张 Excel 表、一个pic/图片目录、一份网页版 HTML。三千条的账号端到端约 40 分钟。它内部怎么工作程序先替你把登录做完。util/LoginUtil.py 向QQ空间登录接口要一张二维码存到resource/temp/QR.png再用 pyzbar 解码后直接在终端里打印白底黑块的 ASCII 二维码不用切窗口就能用手机扫。之后轮询间隔 3 秒扫码成功后走check_sig换取完整 cookie写进resource/user/QQ号。下次启动会自动弹出已登录账号列表输入序号即可切换多账号就是这么支持的。后面的所有Qzone请求都要靠两把钥匙。一把是g_tk由bkn(p_skey)计算拿 cookie 里的p_skey做 djb2 滚动哈希初值 5381再取低 31 位另一把是uin即你的QQ号从 cookie 里剥掉前缀o0*得到。util/RequestUtil.py 把这两样连同 cookie 一起塞进每个请求程序的网络身份就是它们三个。抓取分两条线。消息线你被的说说、评论、转发混在一起走feeds2_html_pav_all接口由get_message(offset, 10)每批取 10 条函数内部等 5 秒主循环再等 3 秒等效 10 条/8 秒。可见说说线走 util/GetAllMomentsUtil.py 的get_visible_moments_list()emotion_cgi_msglist_v6接口每页 30 条replynum100表示每条说说最多带 100 条评论结果缓存在resource/fetch-all/QQ号/下两个 json 文件里命中缓存就整段免请求。这很像去图书馆档案室窗口调旧档整架抱不走只能按页调取办事员一次只放行一小把你拿太快了还会被叫停。类比到此为止实际不同的是程序不只是调档还顺手做了分拣归档——两条数据线的重叠部分会先剥掉昵称 前缀再用is_any_mutual_exist逐条比对重复的只留一份。收尾是 main.py 的save_data()。它往resource/result/QQ号/写 6 张 Excel全部列表、好友列表、说说列表、转发列表、留言列表、其他列表图片下载到pic/子目录链接会从中图改成高清图/m替换成/sQQ 表情[em]xxx[/em]全部渲染成 qzonestyle 图片标签文件名清洗非法字符并截断到 40 个字符。最后用同一份数据渲染出网页版 HTML浏览器打开接近QQ空间页面。另有个细节程序注册了 SIGINT/SIGTERM 信号处理CtrlC 中途退出也会先落盘已有数据。三个目录的职责写在resource/config/config.ini里resource/config/config.ini - temp / user / result 三个目录路径 resource/user/QQ号 - 登录cookie一个账号一个文件 resource/result/QQ号/ - 6张xlsx pic/图片 网页版html怎么跑起来先 clone 代码并进入目录这一步只是给咱们一份干净的工作副本——仓库本身是只读的任何文件都不要在里面改、增、删git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory再建虚拟环境、装依赖。项目用到 pandas、openpyxl、pyzbar 等 11 个库走虚拟环境是为了不污染系统 Pythonzbar 共享库的问题也不会连累其他项目python -m venv myenv source myenv/bin/activate # Windows 用 .\myenv\Scripts\activate pip install -r requirements.txt跑之前先装 zbar 共享库Linux 用sudo dnf install -y zbar或 aptmacOS 用brew install zbar。不装的话import 阶段就会提示无法找到 zbar 共享库然后直接退出。Windows 上更省事的路子是用 release 页打包好的单文件。然后执行python main.py。终端打印二维码后用QQ App 扫码看到用户QQ号,昵称登录成功就说明登录这步做对了接下来它先花 2~3 分钟二分探测总数再进入主循环。结束时会出现青色字导出成功请查看 QQ号 文件夹内容程序还会自动打开结果目录Windows 走os.startfilemacOS 走openLinux 走xdg-open并打印最早一条说说的时间和各列表条数。判断成功的标志看最早时间那行不是看打印了多少批。只想要可读版本的话fetch_all_message.py 更轻它只抓可见说说列表直接产出所有可见说说.md图片存到同一目录。还有一条铁律要记住所有生成数据放在resource/下不写回仓库。cookie 等于凭证resource/user/等同于把QQ空间交出去不进仓库、不提交、不发给别人。流程清楚了再看它值不值这个等待。时间花多少风险在哪中等体量账号的账大概是这样维度指标数值覆盖导出产物6 张 xlsx pic/图片 网页版 html覆盖数据范围已删除、仅自己可见的说说不在消息列表由可见列表补充含 2014 年前体验登录方式终端二维码无需切换浏览器时间消息列表速度10 条 ≈ 8 秒一万条约 2.2 小时时间总数预探测约 23 次请求2~3 分钟代价账号风险连续高频请求会触发风控登录失效3 秒/5 秒等待是写死的保护互动量几千条以内的账号半小时内能跑完。万条以上的大号要做好挂一整晚的准备。缓存只覆盖可见说说那条线第二跑时resource/fetch-all/里的 json 命中就整段跳过消息列表每次都会重新拉。提前知道的几个坑很多人以为挂了就该重跑。实际上程序注册了信号处理CtrlC 也会先把已有数据存盘cookie 还在缓存里再跑输入账号序号就行。正确做法是相信断点保护不用急着重来。很多人以为装完依赖就能跑。实际上pyzbar依赖系统级 zbar 共享库pip 包里没有。正确做法是先装 zbarLinuxsudo dnf install -y zbarmacOSbrew install zbar确认 import 不报错再启动。很多人以为等够时间就能拿全。实际上消息列表不含已删除和仅自己可见的说说。正确做法是让main.py自动从可见说说列表补漏并去重再用输出里最早的一条说说发布在这行核对覆盖是否到位。很多人以为 cookie 只是导出数据会跟着表格一起提交进仓库。实际上仓库只读resource/user/是全项目最敏感的文件泄露等于交出账号。正确做法是让它留在本地resource/user/下备份完成后自行清理。还能往哪延伸跑通基础流程后有几个方向值得看想改导出样式网页版 HTML 模板在 util/ToolsUtil.py改模板即可想要纯 Markdown 存档直接跑 fetch_all_message.py分页参数count10、num30集中在 util/RequestUtil.py 和 util/GetAllMomentsUtil.py 的请求函数里改节奏看这两处想加功能或遇到解析不了的报错去项目 Issue 区提反馈README 里也提到作者有配套食用教程一句话概括用 cookie 走Qzone自己的接口分页拉、排序、落盘。今天就能做的最小动作只有一个clone 下来跑python main.py把第一次扫码走完。那些你都不记得发过的东西用到的时候才看得出价值。【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考