通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程 ...

种地  金牌会员 | 2024-3-31 16:32:24 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 922|帖子 922|积分 2766


最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注。
step 1
首先需要获取到 Qrsig 的值(流程已更改)
Request URL:
https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=3&d=72&v=4&t=0.1957881457063695&daid=383&pt_3rd_aid=102013353&u1=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump
返回数据在浏览器 Set-Cookie 中。

实现代码:
[code]                // 初始化URL                URL_COMPONENTSA crackedURL = { 0 };                 char URL_STRING[] = "https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=3&d=72&v=4&t=0.7009436033346066&daid=383&pt_3rd_aid=102013353&u1=https://graph.qq.com/oauth2.0/login_jump";                 char szHostName[128] = { 0 };                char szUrlPath[256] = { 0 };                 crackedURL.dwStructSize = sizeof(URL_COMPONENTSA);                crackedURL.lpszHostName = szHostName;                crackedURL.dwHostNameLength = ARRAYSIZE(szHostName);                crackedURL.lpszUrlPath = szUrlPath;                crackedURL.dwUrlPathLength = ARRAYSIZE(szUrlPath);                InternetCrackUrlA(URL_STRING, (DWORD)strlen(URL_STRING), 0, &crackedURL);                 // 初始化首次会话                HINTERNET hInternet = InternetOpenA("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);                if (hInternet != NULL){                        HINTERNET hHttpSession = InternetConnectA(hInternet, crackedURL.lpszHostName, INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);                        if (hHttpSession != NULL){                                HINTERNET hHttpRequest = HttpOpenRequestA(hHttpSession, "GET", crackedURL.lpszUrlPath, NULL, "", NULL, INTERNET_FLAG_SECURE, 0);                                if (hHttpRequest != NULL){                                        BOOL bRet = FALSE;                                        // 发送HTTP请求                                        bRet = HttpSendRequest(hHttpRequest, NULL, 0, NULL, 0);                                        if (bRet){                                                // 查询HTTP请求状态                                                DWORD dwRetCode = 0;                                                DWORD dwSizeOfRq = sizeof(DWORD);                                                bRet = HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL);                                                if (bRet){                                                        // 读取整个Headers                                                        char lpHeaderBuffer[1024] = { 0 };                                                        dwSizeOfRq = 1024;                                                        HttpQueryInfo(hHttpRequest, HTTP_QUERY_RAW_HEADERS, lpHeaderBuffer, &dwSizeOfRq, NULL);                                                        // 从Cookie中提取qrsig的值                                                        char* qrsig = lpHeaderBuffer + dwSizeOfRq;                                                        while (qrsig != lpHeaderBuffer){                                                                if (strstr(qrsig, "qrsig=")){                                                                        // 退出之前,修正偏移                                                                        qrsig += sizeof("qrsig");                                                                        char* pEndBuffer = strstr(qrsig, ";");                                                                        *pEndBuffer = 0;                                                                        break;                                                                }                                                                qrsig--;                                                        }                                                         // 关闭句柄                                                        InternetCloseHandle(hHttpRequest);                                                        InternetCloseHandle(hHttpSession);                                                         cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表