qq音乐登录参数详细分析及密码加密最新版

QQ音乐网页版登录参数全解析

大家可以关注我的 Github https://github.com/GitHub-ZC/
大家可以加入我的 QQ群
大家可以关注一下我的微信公众号:每天都有精彩资源推荐
微信公众号

一.首先访问QQ空间网页版。利用chrome控制台抓一下包,看一看具体提交参数。

首先我们看见访问这个链接

https://ssl.ptlogin2.qq.com/login?u=123456789&verifycode=!3EM&pt_vcode_v1=0&pt_verifysession_v1=2e3060f09b71ca20b267ab21ad475baa8749952f0ac785d525d487e641a123a47b92acab5bf40192507083fdbea117fb&p=MntTzJEwktsASZZHxF2Ncnw7H*-oUMK9bnzyFdefOAl8CJGOTvfiQGfpsi7hJQ8qc5K8eddhrKcCTO792b9zhW6RAz4KKkKAUz0z7Dm-KHxETj68Ho-qDenTIK7QClfgmcAvjkzDyHn8I1972dxXFz1XE1qX3nTiSGvwPS7I-feVEKvyQhTCDa1kSjtSZ8GXrNmVUh93YutlqI9MB6gJgXm6gCyQBy2B3bEclgDYr1-DkhpmJ6U4lfVk40OVz3Chbk1K-5V5Thmj6n5PEIycJaOW8HkHXMj-BgHMeqtml2qrm2GoMAN8fPrv9wxngDx9IcvwsWx*DoaRIcCX4g__&pt_randsalt=2&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=3-7-1660982920964&js_ver=22080914&js_type=1&login_sig=xoceG9emyg0bJ97jtStWoqMM10cwNZfK3qdpRCh0Evdo05M-7mffl6Dm0C0bt36v&pt_uistyle=40&aid=716027609&daid=383&pt_3rd_aid=100497308&ptdrvs=q88le-jw2YIbJPWzcbRCB-7Qa4ZdDv6hU04RJhihxRvwPUCBefa6ouEsHzsypHJH&sid=7448187206683891317&&o1vId=49283d5cbb01a744d46314da4608d929

在这里插入图片描述

u: 123456789
verifycode: !3EM
pt_vcode_v1: 0
pt_verifysession_v1: 2e3060f09b71ca20b267ab21ad475baa8749952f0ac785d525d487e641a123a47b92acab5bf40192507083fdbea117fb
p: MntTzJEwktsASZZHxF2Ncnw7H*-oUMK9bnzyFdefOAl8CJGOTvfiQGfpsi7hJQ8qc5K8eddhrKcCTO792b9zhW6RAz4KKkKAUz0z7Dm-KHxETj68Ho-qDenTIK7QClfgmcAvjkzDyHn8I1972dxXFz1XE1qX3nTiSGvwPS7I-feVEKvyQhTCDa1kSjtSZ8GXrNmVUh93YutlqI9MB6gJgXm6gCyQBy2B3bEclgDYr1-DkhpmJ6U4lfVk40OVz3Chbk1K-5V5Thmj6n5PEIycJaOW8HkHXMj-BgHMeqtml2qrm2GoMAN8fPrv9wxngDx9IcvwsWx*DoaRIcCX4g__
pt_randsalt: 2
u1: https://graph.qq.com/oauth2.0/login_jump
ptredirect: 0
h: 1
t: 1
g: 1
from_ui: 1
ptlang: 2052
action: 3-7-1660982920964
js_ver: 22080914
js_type: 1
login_sig: xoceG9emyg0bJ97jtStWoqMM10cwNZfK3qdpRCh0Evdo05M-7mffl6Dm0C0bt36v
pt_uistyle: 40
aid: 716027609
daid: 383
pt_3rd_aid: 100497308
ptdrvs: q88le-jw2YIbJPWzcbRCB-7Qa4ZdDv6hU04RJhihxRvwPUCBefa6ouEsHzsypHJH
sid: 7448187206683891317
o1vId: 49283d5cbb01a744d46314da4608d929

具体重要参数分析
u: 登陆的QQ号,和下面check的uin一致
verifycode:下面check返回的参数
pt_verifysession_v1: 下面check返回的参数
pt_randsalt: 下面返回的参数
ptdrvs: 下面返回的参数
sid:下面返回的参数
login_sig 、 o1vId 一个加密后的数据,统一环境是固定的,可以不需要
action 拼接的字符串,3-7是固定的,这个不重要,后面是事件戳
p: 加密后的密码

经过作者分析 login_sig 和 o1vId 都是浏览器固定的参数

粗略分析我们就知道哪些字段比较难搞了,u是用户名、verifycode是类似验证码的东西、pt_verifysession_v1类似id的字符串、p就应该是密码了。

我们分析的重点在verifycode、pt_verifysession_v1、P三个字段了,然后再看post请求之前的请求,发现了一个有价值的get请求:

二.检查账号接口

https://ssl.ptlogin2.qq.com/check?regmaster=&pt_tea=2&pt_vcode=1&uin=123456789&appid=716027609&js_ver=22080914&js_type=1&login_sig=xoceG9emyg0bJ97jtStWoqMM10cwNZfK3qdpRCh0Evdo05M-7mffl6Dm0C0bt36v&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump&r=0.6040831742269639&pt_uistyle=40&daid=383&pt_3rd_aid=100497308&o1vId=49283d5cbb01a744d46314da4608d929

在这里插入图片描述

ptui_checkVC(‘0’,‘!OPX’,‘\x00\x00\x00\x00\x07\x5b\xcd\x15’,‘a066e9d2a7b7e0cf7e92c68f65dd577e5e86d4512f303923e79cf9ca8fe28a2472c62eb9f78597b2af6075960c1a4b17’,‘2’,‘FSvNMi5TuSOLEcUB3KkGjdxdqp0qniDck8Hf0CQDplMA*PLVm8-zhOEjri5WTKT-’,‘4371625609126778505’)

第一个参数是验证方式,叫ptVcodeV1
第二个参数是验证码verifyCode
第三个参数是uin,其实就是输入的QQ号的十六进制编码
第四个参数是ptVerifysessionV1,也是用来验证的
第五个参数是密码加密的盐ptRandSalt
第六个参数是ptdrvs
第七个参数是sid

经过作者的分析,这个get请求已经返回verifycode、pt_verifysession_v1参数,那我们需要重点分析的是password的加密方式了。
第一个0代表不需要验证码,如果是1代表需要验证码 会走另一个流程.第二个参数和第三个参数会带入到密码加密中进行运算,再看这个请求的参数:

发现大多数都是固定参数,用自己的方法重写 r 和 uin 参数就行

三.登录参数分析

经过上面的分析 verifycode、pt_verifysession_v1参数 已经有了解决办法
我们继续看 p 参数,查找发出该请求的相应js位置
在这里插入图片描述
跟进之后我们可以看到加密 p 参数是这个函数

let getEncryption = function (t, e, n, o) {
    n = n || "",
        t = t || "";
    for (var o = o ? t : l(t), t = l(w(o) + e), n = u["default"].strToBytes(n.toUpperCase(), !0), i = Number(n.length / 2).toString(16); i.length < 4;)
        i = "0" + i;
    u["default"].initkey(t),
        n = u["default"].encrypt(o + u["default"].strToBytes(e) + i + n),
        u["default"].initkey("");
    for (var r = Number(n.length / 2).toString(16); r.length < 4;)
        r = "0" + r;
    return n = a["default"].rsa_encrypt(w(r + n)),
        setTimeout(function () {
            !function (t, e) {
                if (!(Math.random() > (e || 1)))
                    try {
                        var n = location.protocol + "//ui.ptlogin2.qq.com/cgi-bin/report?id=" + t;
                        document.createElement("img").src = n
                    } catch (o) { }
            }(488358, 1)
        }, 0),
        s["default"].encode(w(n)).replace(/[\/\+=]/g, function (t) {
            return {
                "/": "-",
                "+": "*",
                "=": "_"
            }[t]
        })
}

其中最麻烦的就是 加密 salt 的处理,经过代码的调试

经过反复的代码调试,关于 salt 获取,主要是通过 代码 加密 QQ 号获取

function (str) {
    var maxLength = 16;
    str = parseInt(str);
    for (var hex = str.toString(16), len = hex.length, i = len; i < maxLength; i++)
        hex = "0" + hex;
    for (var arr = [], j = 0; j < maxLength; j += 2)
        arr.push("\\x" + hex.substr(j, 2));
    var result = arr.join("");
    return eval('result="' + result + '"'),
    result
}

具体加密的代码

https://github.com/GitHub-ZC/wp_MusicApi/blob/main/util/login_qq.js

到这里,我们就分析完 登录 的具体参数 , 但是想要获取 具体 Cookie 信息, 还是需要再 跳转 两条接口,再获取 登陆身份信息。

具体登录 Cookie 代码获取 在 GitHub 中

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取QQ好友列表√ 录张GIF感受一下UI 部分代码结构: 文件夹说明: 完成功能: QQ群官网登录√ 取Cookie√ 变量:全_cookiess 取QQ号√ 变量:全_superuin 取QQ skey√ 变量:全_skey 取QQ bkn√ 变量:全_bkn 取QQ头像√ 方法:Get_QQHEAD() QQ好友列表功能: 取QQ好友列表√ 方法:QQ好友_列表初始化() 取QQ好友昵称√ 变量:局_Name(列表初始化 方法内) 取QQ好友账号√ 变量:局_Uin(列表初始化 方法内) 取QQ好友头像√  方法:取好友QQ头像() QQ群聊列表功能: 取QQ群聊列表√ 方法:QQ群聊_列表初始化() 取QQ群聊名称√ 变量:局_Name(列表初始化 方法内) 取QQ群聊群号√ 变量:局_Uin(列表初始化 方法内) 取QQ群聊头像√  方法:取群聊QQ头像() 相关方法: Get_Friend_List()‘取QQ好友列表 创建自窗口句柄()‘创建QQ列表,QQ群聊列表句柄 QQ好友_列表初始化()‘获取QQ列表,QQ群聊数据 不足: 判断用户是否在线× (因为现在好像还没有可以判断手机用户在线状态的接口....我就没写判断是否电脑在线了...) QQ资料获取× QQ群聊列表无法显示× 开源这个程序主要是想各位帮忙看看源码.....其实获取QQ群列表的代码也写好了。 但是无法显示,调来调去也不知道是哪里的问题。 (列表生成是用同一套代码的,QQ列表可以生成但是QQ群列表无法生成。)
在Java中,可以使用不同的方法对登录密码进行MD5加密。一种常见的方法是使用md5算法对密码进行加密。可以在代码中导入相关的库,如`import java.util.Scanner;`和`import java.util.Random;`,然后使用相应的方法对密码进行加密。例如,可以使用以下代码对密码进行MD5加密: ``` Scanner sc = new Scanner(System.in); System.out.println("请输入密码:"); String password = sc.next(); System.out.println("加密后的密码:" + Md5.md5(password)); ``` 此外,还可以对密码进行加盐,将用户的用户名作为盐进行加密。例如: ``` System.out.println("加密加盐后的密码1:" + Md5.md5(username + password)); System.out.println("加密加盐后的密码2:" + Md5.md5(username.charAt(new Random().nextInt(username.length())) + password)); ``` 另一种常见的方法是使用Spring的工具类DigestUtils来对密码进行加密。可以使用`import org.springframework.util.DigestUtils;`导入相关的库,然后使用`DigestUtils.md5DigestAsHex(password.getBytes())`方法对密码进行加密。例如: ``` String password = "1234567"; String md5encryption = DigestUtils.md5DigestAsHex(password.getBytes()); ``` 需要注意的是,在数据库中存储密码时,要确保密码字段的长度足够,以免导致截断错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java md5加密](https://blog.csdn.net/weixin_65637841/article/details/124889207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [java 注册登录实现md5加密](https://blog.csdn.net/ttter_/article/details/126961743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值