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