除非注明,文章均為 戰(zhàn)戰(zhàn)如瘋 原創(chuàng),轉(zhuǎn)載請保留鏈接: http://www./cat3/487.html,VBA交流群273624828。
在提交數(shù)據(jù)的時候我們常常需要模擬cookie,有些cookie長期有效,那只要把抓包得到的cookie寫上好了,而有的cookie生存期很短,需要在運行程序的時候從返回的內(nèi)容中抓取。取cookie一般的方法是用getResponseHeader("Set-Cookie")直接取或者getAllResponseHeaders取出所有頭文件然后再提取出來,推薦第2種方法,這樣取的比較完全。下面來看個例子,比較有代表性。
原網(wǎng)站http://www./data/trustdata/,需要登陸,登陸之后會產(chǎn)生一個cookie,我們現(xiàn)在要將這個cookie提取出來

看下代碼:
Sub test() Dim URL, postdata, s, winhttp Set winhttp = CreateObject("WinHttp.WinHttpRequest.5.1") 'Set winhttp = CreateObject("Microsoft.XMLHTTP") With winhttp '登陸 URL = "http://www./2008/gogoal/inc/login/HwCheck.aspx?IsCheck=false" postdata = "__VIEWSTATE=%2FwEPDwUJOTM4MDkzNTI2D2QWAgIBD2QWAgIDDxYCHgdWaXNpYmxlaGRkB4zeddlBcJF5cGAGGloW3wUukrA%3D&__EVENTVALIDATION=%2FwEWBALmwZWIDwKJ77vKAwK4zqqrCgKC3IeGDFnc0Fsy074jPlU4QgXUxiaAcmkQ&login_name=******&login_password=******&btnLogin=" .Open "POST", URL, False .Option(6) = False .setRequestHeader "Connection", "Keep-Alive" .setRequestHeader "Cache-Control", "no-cache" '.setRequestHeader "Cookie", "Hm_lvt_29860f5735fc4987b5f8ef3ee2767847=1414509489; Hm_lpvt_29860f5735fc4987b5f8ef3ee2767847=1414509489" .setRequestHeader "Accept", "text/html, application/xhtml+xml, */*" .setRequestHeader "Accept-Encoding", "gzip, deflate" .setRequestHeader "DNT", "1" .setRequestHeader "Host", "www." .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Referer", "http://www./2008/gogoal/inc/login/HwCheck.aspx?IsCheck=false" '.setRequestHeader "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" .send (postdata) 's = .getAllResponseHeaders '獲取所有的回應(yīng)頭信息 s = .getResponseHeader("Set-Cookie") MsgBox s URL = "http://www./2008/gogoal/inc/login/HwCheck.aspx?IsCheck=true" .Open "GET", URL, False .send s = .responsetext Debug.Print s End With End Sub
上面postdata里*的地方是用戶名和密碼,感興趣的自己注冊個賬號試下,這里需要強(qiáng)調(diào)下的是.Option(6) = False這句是不能少的,禁止網(wǎng)頁重定向,否則的話登陸之后網(wǎng)頁會跳轉(zhuǎn),那就得不到我們需要的cookie了。
|