1. // 模拟登陆115网盘
  2. #include <afxinet.h> // 包含相关的头文件
  3. /* 用抓包工具抓包可得到需要提交的数据,然后模拟提交即可。
  4. *(有的时候需要得到cookie信息,你可以使用CInternetSession::GetCookie()函数得到该cookie信息)*/
  1. try
  2. {
  3. #define MAX_COUNT 1024
  4. CInternetSession session(_T("session"));
  5. INTERNET_PORT nPort = 80;
  6. CHttpConnection* pHttpConnect = session.GetHttpConnection(_T("passport.115.com"), nPort);
  7. if(pHttpConnect)
  8. {
  9. CHttpFile* pFile = pHttpConnect->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/?ac=login"));
  10. if(pFile)
  11. {
  12. // 这里是请求头信息,由抓包工具得到该信息
  13. pFile->AddRequestHeaders(_T("POST /?ac=login HTTP/1.1"));
  14. pFile->AddRequestHeaders(_T("Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"));
  15. pFile->AddRequestHeaders(_T("Referer: http://passport.115.com/?ac=login&goto=http%3A%2F%2Fu.115.com%2F%3Fac%3Dmy"));
  16. pFile->AddRequestHeaders(_T("Accept-Language: zh-cn"));
  17. pFile->AddRequestHeaders(_T("User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; EasyBits GO v1.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"));
  18. pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
  19. pFile->AddRequestHeaders(_T("Accept-Encoding: gzip, deflate"));
  20. pFile->AddRequestHeaders(_T("Host: passport.115.com"));
  21. pFile->AddRequestHeaders(_T("Connection: Keep-Alive"));
  22. pFile->AddRequestHeaders(_T("Cache-Control: no-cache"));
  23. // 这里是要提交的数据。说明一下: [email protected]指的是登陆的邮箱的地址,后面的XXXXXXX表示的是登陆的密码,使用的时候换成你自己的即可
  24. TCHAR szRequest[MAX_COUNT] = _T("login%5Baccount%[email protected]&login%5Bpasswd%5D=XXXXXXX&goto=http%3A%2F%2Fu.115.com%2F%3Fac%3Dmy");
  25. pFile->SendRequest(NULL, 0, szRequest, _tcslen(szRequest)+1);
  26. CString strStatus(_T(""));
  27. if(pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strStatus))
  28. {
  29. AfxMessageBox(strStatus);
  30. }
  31. pFile->Close();
  32. delete pFile;
  33. pFile = NULL;
  34. }
  35. }
  36. pHttpConnect->Close();
  37. delete pHttpConnect;
  38. pHttpConnect =NULL;  session.Close();
  39. }
  40. catch (CInternetException* e)
  41. {
  42. e->ReportError();
  43. e->Delete();
  44. }

http://blog.csdn.net/visualeleven/article/details/6656224

04-30 22:45