GetQzonehistory(获取QQ发布的历史说说)

免责声明【必读】

本工具仅供学习和技术研究使用,不得用于任何商业或非法行为,否则后果自负。

本工具的作者不对本工具的安全性、完整性、可靠性、有效性、正确性或适用性做任何明示或暗示的保证,也不对本工具的使用或滥用造成的任何直接或间接的损失、责任、索赔、要求或诉讼承担任何责任。

本工具的作者保留随时修改、更新、删除或终止本工具的权利,无需事先通知或承担任何义务。

本工具的使用者应遵守相关法律法规,尊重QQ的版权和隐私,不得侵犯QQ或其他第三方的合法权益,不得从事任何违法或不道德的行为。

本工具的使用者在下载、安装、运行或使用本工具时,即表示已阅读并同意本免责声明。如有异议,请立即停止使用本工具,并删除所有相关文件。

该项目通过获取QQ空间的历史消息列表来获取该账号下发布的所有说说(当然消息列表中没有的就获取不到,例如一些仅自己可见的说说)B站有详细食用教程

比较常问的几个问题:

1.为什么我获取了显示0条? 这个bug很抽象,目前我也找不到具体成因,但是如果拉下代码运行就不会出现这个问题,有能力的大佬可以在git上提一下pr。

2.为什么我获取到的内容不全,因为有的时候访问不太稳定,网络环境波动或者请求超时都会导致获取到的内容少一点,建议换个时间重新爬一下。

3.目前不支持手机或平板,mac也有对应的版本可以下载,下载的时候看自己的型号对应下载。

然后统一回复一下报错类型

1.提示WinError + 你的QQ号 :这个是因为程序没有解压出来就直接运行,或者是放到了一些没有权限的特殊位置,解压出来或者使用管理员运行即可

2.一直在获取消息列表数量或者卡住不动,重新登录或者切换一下网络环境,比如连接一下手机热点

3.获取内容是基于QQ空间的消息列表,有些没有交互到的说说内容无法获取,同样的照片也是,文本内容不多也是同理,如果想找回说说配图,可以去QQ空间pc版相册回收站恢复一下,重新获取就可以看到之前的配图

主要实现还是通过模拟登录QQ空间来获取历史消息列表,然后进行数据分析,最后将爬取的说说存放到/resource/result目录下

由于对python编程还不是很熟悉,所以代码有很多疏漏,可以通过自己的想法来完善代码

目录结构

project/
├── resource/                # 资源目录
│   ├── config/              # 配置目录,文件保存位置配置
│   │   └── config.ini
│   ├── result/              # 导出结果的目录,格式为“你的qq.xlsx”
│   │   ├── ...
│   │   └── ...
│   ├── temp/                # 缓存目录
│   │   ├── ...
│   │   └── ...
│   ├── user/                # 用户信息
│   │   ├── ...
│   │   └── ...
├── util/                    # 单元工具目录
│   ├── ConfigUtil.py        # 读取配置
│   ├── GetAllMomentsUtil.py # 获取未删除的所有说说
│   ├── LoginUtil.py         # 登录相关
│   ├── RequestUtil.py       # 请求数据相关
│   └── ToolsUtil.py         # 工具
├── main.py                  # 主程序入口
├── fetch_all_message.py     # 主程序入口
├── README.md                # 项目说明文件
├── requirements.txt         # 依赖项列表
└── LICENSE                  # 许可证文件

安装

使用虚拟环境(推荐)

# 克隆储存库
git clone https://github.com/LibraHp/GetQzonehistory.git
# 打开目录
cd GetQzonehistory
# 创建名为 myenv 的虚拟环境
python -m venv myenv
# 激活虚拟环境。在终端或命令提示符中运行以下命令:
# 对于 Windows:
myenv\Scripts\activate
# 对于 macOS/Linux:
source myenv/bin/activate
# 安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
# 运行脚本
python main.py

使用本机环境(不推荐)

# 克隆储存库
git clone https://github.com/LibraHp/GetQzonehistory.git
# 打开目录
cd GetQzonehistory
# 安装依赖
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
# 运行脚本
python main.py

参考

#-*- coding = utf-8 -*-
#Time : 2021/1/20 
#Author : 小柠檬
#File : QQ空间扫码登录模板.py
import requests
from PIL import Image
import time
import re

def bkn(pSkey):
    #计算bkn
    t,n,o = 5381,0,len(pSkey)

    while n < o:
        t += (t << 5) + ord(pSkey[n])
        n += 1

    return t & 2147483647

def ptqrToken(qrsig):
    #计算ptqrtoken
    n,i,e = len(qrsig),0,0

    while n > i:
        e += (e << 5) + ord(qrsig[i])
        i += 1

    return 2147483647 & e

def QR():
    #获取 qq空间 二维码
    url = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=4&t=0.8692955245720428&daid=5&pt_3rd_aid=0'

    try:
        r = requests.get(url)
        qrsig = requests.utils.dict_from_cookiejar(r.cookies).get('qrsig')

        with open(r'C:\Users\Administrator\Desktop\QR.png', 'wb') as f:
            f.write(r.content)

        im = Image.open(r'C:\Users\Administrator\Desktop\QR.png')
        im = im.resize((350, 350))
        print(time.strftime('%H:%M:%S'),'登录二维码获取成功')
        im.show()

        return qrsig

    except Exception as e:
        print(e)

def cookie():
    #获取 QQ空间 cookie
    qrsig = QR()
    ptqrtoken = ptqrToken(qrsig)

    while True:
        url = 'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptqrtoken=' + str(ptqrtoken) + '&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-' + str(time.time()) + '&js_ver=20032614&js_type=1&login_sig=&pt_uistyle=40&aid=549000912&daid=5&'
        cookies = {'qrsig': qrsig}

        try:
            r = requests.get(url, cookies=cookies)

            if '二维码未失效' in r.text:
                print(time.strftime('%H:%M:%S'),'二维码未失效')

            elif '二维码认证中' in r.text:
                print(time.strftime('%H:%M:%S'),'二维码认证中')

            elif '二维码已失效' in r.text:
                print(time.strftime('%H:%M:%S'),'二维码已失效')

            else:
                print(time.strftime('%H:%M:%S'), '登录成功')

                cookies = requests.utils.dict_from_cookiejar(r.cookies)
                uin = requests.utils.dict_from_cookiejar(r.cookies).get('uin')
                regex = re.compile(r'ptsigx=(.*?)&')
                sigx = re.findall(regex, r.text)[0]
                url = 'https://ptlogin2.qzone.qq.com/check_sig?pttype=1&uin=' + uin + '&service=ptqrlogin&nodirect=0&ptsigx=' + sigx + '&s_url=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&f_url=&ptlang=2052&ptredirect=100&aid=549000912&daid=5&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0'

                try:
                    r = requests.get(url, cookies=cookies, allow_redirects=False)
                    targetCookies = requests.utils.dict_from_cookiejar(r.cookies)
                    pSkey = requests.utils.dict_from_cookiejar(r.cookies).get('p_skey')
                    break

                except Exception as e:
                    print(e)

        except Exception as e:
            print(e)

        time.sleep(3)

    return targetCookies

def test():
    url = 'https://act.iwan.qq.com/trpc.iwan.mission_system_server.MissionSystemSvr/dealSimpleMission?missionId=mZZrWSzG7&gameId=26080&sPlat=0&sArea=2&serverId=&sRoleId=1&platformId=9&platformid=9&guid=53383d1eb5b611e89d19a042d48ad00a&device=453C45EA-B7B4-40C8-AE8C-F823796AF191&token=1324739766&acctype=qq'
    cookies = cookie()
    r = requests.get(url,cookies=cookies)
    print(r.text)

if __name__ == '__main__':
    test()

更新日志

2024-09-29,版本 GUI-1.0.2 最近的

1.修复了Mac用户无法创建导出文件夹的问题
2.优化代码逻辑,出错概率大大降低
3.适配深色模式
4.优化显示逻辑
5.修复list index out of range报错的问题
6.修复时间格式化失败导致爬取失败的问题
7.修复昵称包含特殊字符时无法登录的问题


我应该下载哪个版本?

窗户

  • Windows 64位系统: xxx-win-x64-vxxx.zip

macOS 版

  • MacOS Intel芯片: xxx-macOS-x64-vxxx.zip
  • MacOS Apple M芯片: xxx-macOS-aarch64-vxxx.zip

来源于:https://github.com/LibraHp/GetQzonehistory/releases

官方网站

https://github.com/LibraHp/GetQzonehistory

官方下载链接

https://github.com/LibraHp/GetQzonehistory/releases

温馨提示:本文最后更新于2024年11月10日 23:47:31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
本文资源整理自网络,仅供学习和研究使用,请在下载后24小时内删除,谢谢合作!
如果觉得本文有用就按Ctrl+D收藏,方便以后随时翻看,免得想看时又找不着 或 发现更多
十一 10

本站历史上的今天

    "吼吼~~~,往年的今天站长不知道跑哪里偷懒去了~~~"
© 版权声明
THE END
喜欢就支持一下软技收集吧
点赞7赞赏 分享
评论区 抢沙发

    快来评论吧!