ToB企服应用市场:ToB评测及商务社交产业平台

标题: 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程 [打印本页]

作者: 种地    时间: 2024-3-31 16:32
标题: 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程

最近发现之前的老代码已经不能获取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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4