按键 使用WinHttp实现POST方式用户模拟登录网站
生活随笔
收集整理的這篇文章主要介紹了
按键 使用WinHttp实现POST方式用户模拟登录网站
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
引言
這篇文章是我以前在一個(gè)論壇里寫(xiě)的,今天把這篇文章轉(zhuǎn)移到這里。
文章主要介紹了如何模擬一個(gè)網(wǎng)站的登錄。
這里使用的輔助工具是按鍵精靈,編程語(yǔ)言類(lèi)似于VB。
實(shí)現(xiàn)步驟
第一步,獲取登錄地址
打開(kāi)登錄界面:
打開(kāi)調(diào)試工具,點(diǎn)擊登錄按鈕,查看數(shù)據(jù)信息:
從調(diào)試工具中可以看到實(shí)際登錄地址和需要提交的參數(shù)。
第二步,獲取驗(yàn)證碼地址
第三步,在瀏覽器中正常登錄,查看登錄成功和失敗后返回的信息(方便后邊進(jìn)行判斷是否登錄成功)
登錄失敗顯示信息:
登錄成功顯示:
第四步,開(kāi)始制作
首先設(shè)計(jì)界面:
代碼實(shí)現(xiàn):
'名稱(chēng):使用WinHttp實(shí)現(xiàn)POST方式用戶(hù)模擬登錄網(wǎng)站 '按鍵ID:383810086wa 'E-mail:383810086@qq.com '時(shí)間:2015.6.13 '-------------------------------------------'======相關(guān)數(shù)據(jù)信息======================================================= url_login = "http://xxx.com/login.php?action=login" '網(wǎng)站后臺(tái)登錄地址 | url_verify = "http://xxx.com/yzm.php" '網(wǎng)站驗(yàn)證碼地址 | ' | form_user = "xxxxxxxxxxx" '網(wǎng)站用戶(hù)名 | form_passwd = "xxxxxxxxx" '網(wǎng)站用戶(hù)密碼 | '========================================================================'獲取網(wǎng)站cookie Form1.InputBox_debug.Text = "正在獲取Cookie..." & vbCrlf '用于在界面上顯示運(yùn)行信息 Dim cookie Set ObjWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") With ObjWinHttp.SetTimeouts 0,0,0,0.Open "GET", url_login, False.SetRequestHeader "Content-Type","application/x-www-form-urlencoded".Sendcookie = .getResponseHeader("Set-Cookie") End With Form1.InputBox_cookie.Text = cookie '將cookie寫(xiě)入界面中的InputBox_cookie輸入框,方便查看和讀取 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "獲取cookie完成" & vbCrlf'獲取網(wǎng)站驗(yàn)證碼 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "正在獲取驗(yàn)證碼..." & vbCrlf Dim verify_bit '定義驗(yàn)證碼字節(jié)集 With ObjWinHttp.SetTimeouts 0,0,0,0.Open "GET", url_verify, False.SetRequestHeader "Content-Type","application/x-www-form-urlencoded".SetRequestHeader "Cookie", cookie '提交cookie.Send verify_bit = .ResponseBody End With Set ObjStream = CreateObject("Adodb.Stream") With ObjStream.Type = 1.Mode = 3.Open.Write verify_bit '寫(xiě)入驗(yàn)證碼字節(jié)集.SaveToFile ".\verify.jpg",2 '將驗(yàn)證碼保存為本地圖片.Close End With Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "獲取驗(yàn)證碼成功" & vbCrlf'手動(dòng)驗(yàn)證驗(yàn)證碼 Form1.PictureBox_Verify.Picture = ".\verify.jpg" '在界面中顯示驗(yàn)證碼 Form1.Button_Verify.Visible = True '顯示“確認(rèn)驗(yàn)證碼”按鈕 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "請(qǐng)輸入驗(yàn)證碼" & vbCrlf MessageBox "請(qǐng)輸入驗(yàn)證碼"Dimenv IsVerifyDone '定義是否已填入驗(yàn)證碼 Dim checknum '定義接收驗(yàn)證碼變量IsVerifyDone = False '默認(rèn) 沒(méi)有輸入驗(yàn)證碼Do '用于檢測(cè)是否輸入完成驗(yàn)證碼If IsVerifyDone Then Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "驗(yàn)證碼已輸入" & vbCrlfchecknum = Form1.InputBox_Verify.TextExit Do End IfDelay 100 Loop'進(jìn)行網(wǎng)站用戶(hù)登錄 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "進(jìn)行登錄..." & vbCrlf Dim login_data '定義用戶(hù)登錄數(shù)據(jù) Dim html_bit '定義登錄頁(yè)面返回字節(jié)集login_data = "username=" & form_user & "&password=" & form_passwd & "&checknum=" & checknum With ObjWinHttp.SetTimeouts 0,0,0,0.Open "POST", url_login, False.SetRequestHeader "Content-Type","application/x-www-form-urlencoded".SetRequestHeader "Cookie", cookie '提交cookie.SetRequestHeader "Content-Length", Len(login_data) '提交數(shù)據(jù)長(zhǎng)度.Send login_data '數(shù)據(jù)提交html_bit = .ResponseBody End With With ObjStream.Type = 1.Mode = 3.Open.Write html_bit.Position = 0.Type = 2.Charset = "UTF-8" .Close End WithSet ObjWinHttp = Nothing Set ObjStream = NothingIf Instr(1, ObjStream.ReadText, "成功", 1) > 0 Then '驗(yàn)證登錄后,網(wǎng)站頁(yè)面返回的數(shù)據(jù),查看是否登錄成功Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "登錄成功!" & vbCrlfMessageBox "登錄成功!" Else Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "登錄失敗!請(qǐng)檢測(cè)驗(yàn)證碼、用戶(hù)名、密碼是否正確!" & vbCrlfMessageBox "登錄失敗!請(qǐng)檢測(cè) 用戶(hù)名、密碼、驗(yàn)證碼 是否填寫(xiě)正確!" End If調(diào)試結(jié)果:
博客名稱(chēng):王樂(lè)平博客
博客地址:http://blog.lepingde.com
CSDN博客地址:http://blog.csdn.net/lecepin
總結(jié)
以上是生活随笔為你收集整理的按键 使用WinHttp实现POST方式用户模拟登录网站的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运维服务器信息收集
- 下一篇: 如何将EDM营销与多渠道推广方式相结合