我們這里主要要實現的功能是通過輸入用戶名和密碼登錄網站並讀取網頁內容:
調用的庫為WinInet.h
用到工具fiddler抓包工具。
- 先抓包獲取所需參數。
- 登錄網站https://www.oschina.net/,登錄,並輸入密碼和用戶名;
- 打開fiddler工具
- 點擊登錄網頁,開始抓包參數;
- 參數如下:
- 完成抓包。
-
HINTERNET hInternet; HINTERNET hConnect; HINTERNET hRequest;
創建句柄;
- 初始化一個應用程序 hInternet = InternetOpen(_T("Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0""),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); 這里用戶代理參數是:user agent:后面一串字符串;
- 設置internet連接句柄
hConnect = InternetConnect(hInternet,_T("oschina.net"),INTERNET_DEFAULT_HTTPS_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
oschina.net 是host,注意沒有“www.” 部分https端口為443,http為80.
- 設置請求報文
hRequest = HttpOpenRequest(hConnect,_T("POST"),_T("/action/user/hash_login"),_T("HTTP/1.1"),_T("https://www.oschina.net/home/login?goto_page=http%3A%2F%2Fwww.oschina.net%2Fcode%2Fsnippet_1160014_23246"),lNULL,INTERNET_FLAG_RELOAD,0);
第五個參數為Referer值
- 向http服務器發送請求:
bSendResult = HttpSendRequest(hRequest,_T("Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n"),-1,pBuff,strlen(Buf);
其中Buf為cookie參數,郵箱與登錄密碼等信息,在Raw可以查看得到
email=xxxxxxxxxx&pwd=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&verifyCode=7bda&save_login=1&google_code=03AGdBq27D6UGJocNmdX-MTtLFIgzBZt-TLtThZchpRck-kg8JVyRzSPp8l0TX9QstJQ-T6d3CilfniziJNZYK2tj_0C482CP6h4tYSYzhD4TRKKify6RuS_s_1P92bQYsRegyML51wRVYROplk0dAE2XGuaO900zJG0mTnXFccXOeQy4qsFsE1slK9va6aES4amIgf62Xy_thtFw5PGvl4meJ_aV7Du2nnGYgR4z9F_AQMz7Hh0H_cN7ug9CziIXkX3kcTTG8XG-vyBGWYPJl1WqGE5z1J5urTzFnNjF4leFEoSV20x4thz3v8hYhhn695424KrNGdcsrq5-tJK7eV9OAU1ZHsCGNKyL-fKOlQLbAVmdjKGbQqgYz5uSmPXm-34YM7DhOaZXLlwIrTAM-1cYOfSAiPYXYSQ
至此,我們就通過用戶名和密碼登錄了網站。
- 讀取網頁數據 BOOL reslut = HttpQueryInfo(hResourceHandle,HTTP_QUERY_RAW_HEADERS_CRLF,Buff,&dwInfoBufferLength,NULL); Buff為存放網頁數據,dwInfoBufferLength為讀取字節數目。
謝謝!
End.