1. 程式人生 > >按鍵 使用WinHttp實現POST方式使用者模擬登入網站

按鍵 使用WinHttp實現POST方式使用者模擬登入網站

引言

這篇文章是我以前在一個論壇裡寫的,今天把這篇文章轉移到這裡。
文章主要介紹瞭如何模擬一個網站的登入。
這裡使用的輔助工具是按鍵精靈,程式語言類似於VB。

實現步驟

第一步,獲取登入地址

開啟登入介面:

開啟除錯工具,點選登入按鈕,檢視資料資訊:

從除錯工具中可以看到實際登入地址和需要提交的引數。

第二步,獲取驗證碼地址

第三步,在瀏覽器中正常登入,檢視登入成功和失敗後返回的資訊(方便後邊進行判斷是否登入成功)

登入失敗顯示資訊:

登入成功顯示:

第四步,開始製作

首先設計介面:

程式碼實現:

'名稱:使用WinHttp實現POST方式使用者模擬登入網站
'按鍵ID:383810086wa 'E-mail:[email protected] '時間:2015.6.13 '------------------------------------------- '======相關資料資訊======================================================= url_login = "http://xxx.com/login.php?action=login" '網站後臺登入地址 | url_verify = "http://xxx.com/yzm.php" '網站驗證碼地址 |
' | form_user = "xxxxxxxxxxx" '網站使用者名稱 | form_passwd = "xxxxxxxxx" '網站使用者密碼 | '======================================================================== '獲取網站cookie
Form1.InputBox_debug.Text = "正在獲取Cookie..." & vbCrlf '用於在介面上顯示執行資訊 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" .Send cookie = .getResponseHeader("Set-Cookie") End With Form1.InputBox_cookie.Text = cookie '將cookie寫入介面中的InputBox_cookie輸入框,方便檢視和讀取 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "獲取cookie完成" & vbCrlf '獲取網站驗證碼 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "正在獲取驗證碼..." & vbCrlf Dim verify_bit '定義驗證碼位元組集 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 '寫入驗證碼位元組集 .SaveToFile ".\verify.jpg",2 '將驗證碼儲存為本地圖片 .Close End With Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "獲取驗證碼成功" & vbCrlf '手動驗證驗證碼 Form1.PictureBox_Verify.Picture = ".\verify.jpg" '在介面中顯示驗證碼 Form1.Button_Verify.Visible = True '顯示“確認驗證碼”按鈕 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "請輸入驗證碼" & vbCrlf MessageBox "請輸入驗證碼" Dimenv IsVerifyDone '定義是否已填入驗證碼 Dim checknum '定義接收驗證碼變數 IsVerifyDone = False '預設 沒有輸入驗證碼 Do '用於檢測是否輸入完成驗證碼 If IsVerifyDone Then Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "驗證碼已輸入" & vbCrlf checknum = Form1.InputBox_Verify.Text Exit Do End If Delay 100 Loop '進行網站使用者登入 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "進行登入..." & vbCrlf Dim login_data '定義使用者登入資料 Dim html_bit '定義登入頁面返回位元組集 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) '提交資料長度 .Send login_data '資料提交 html_bit = .ResponseBody End With With ObjStream .Type = 1 .Mode = 3 .Open .Write html_bit .Position = 0 .Type = 2 .Charset = "UTF-8" .Close End With Set ObjWinHttp = Nothing Set ObjStream = Nothing If Instr(1, ObjStream.ReadText, "成功", 1) > 0 Then '驗證登入後,網站頁面返回的資料,檢視是否登入成功 Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "登入成功!" & vbCrlf MessageBox "登入成功!" Else Form1.InputBox_debug.Text = Form1.InputBox_debug.Text & "登入失敗!請檢測驗證碼、使用者名稱、密碼是否正確!" & vbCrlf MessageBox "登入失敗!請檢測 使用者名稱、密碼、驗證碼 是否填寫正確!" End If

除錯結果:


這裡寫圖片描述