亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用VB實現驗證碼識別

系統 1835 0

其實我們只要在工程里加一個“WebBrowser”控件,就可以隨意讀取網頁上的任何東西,這樣就不再專門為不同的圖片碼寫一個顯示程序。在VB6上添加“WebBrowser”控件。
應用此部件后在VB6的左邊控件欄里就會出現一個地球的按鈕。然后在窗體上繪出它的位置以及大小。(其實這個程序我早已寫好的,現在拿出來解釋),那個帶編輯點的控件就是“WebBrowser”。
載入此控件后也不用再編輯什么的,很方便,因為其實上這個控件的行為都會在控鈕上觸發。在這先講講圖2里的相關控件關系,在圖2的最頂那個“CODE:….”那個文字輸入框就是在那里讀取圖片驗證碼的URL, http://verify.qq.com/getimage這個是Tencent里QQ申請密保圖片驗證碼的URL。這個URL如何才能得到呢?這個獲取也很容易,在瀏覽器里右擊那個圖片驗證碼屬性就可以看到它的URL。
下面那個“Post:”那個文字輸入框就是我們最后提交數據的目的頁面,這就簡短的介紹這里。
接下來就是那個“WebBrowser”這個控件如何觸發它去讀取網頁。就這那個“刷新驗證碼”的按鈕,里面的代碼這樣:“WebBrowser1.Navigate Trim(Text4.Text)”,這里的“Text4.Text”就是那個得到驗證碼的URL。就是這個“WebBrowser”連接驗證碼的URL的結果。
來到這,有一個問題就是服務器發送出來的驗證碼是與那個會話結合起來才有效的,否則服務器根本不知你是那個會話,至于那個會話其實就是那個Cookie,看下面。如圖5所示。它是我用WS找IE的Http報文的包,里面有比較多有用的信息。
這個會話的ID碼我們把數據Post回去時一定要把這個提交上去,要不然你返回了正確的圖片驗證碼也沒有用。至于其中的會話ID如何在VB6里讀取自如呢?
在“WebBrowser”的控件里有一個類方法可以調用方法過程來得來,且很方便。在窗體里那個“View”按鈕里加入以下兩行重要的代碼。
Dim doc As IHTMLDocument2 //通過定義Doc對像數據類型
Set Doc = WebBrowser1.Document //通過Set 來建立Doc對像。
如果要讀取“WebBrowser”已打開網頁的會話ID就可以通過以下的代碼就要以取得:
Msgbox “會話的ID為:”&doc.cookie,vbokonly,”讀取會話ID”來到這里我們已成功了一半了,緊接著的就是如何把得到的數據POST到目的頁面。Post數據有幾種方法,一般是用WinSock來建立TCP/IP的HTTP連接,這樣要重新的封包HTTP報文,比較好用但有些麻煩,不過它的靈活性也比較的好。但今天我沒有打算是用它來做數據Post,取而代之的就是用那個“MSXML2.XMLHTTP”,這個一般有裝過數據處理的軟件或Office軟件都會有存在,且它用起來真的比較方便,只要在VB里用“CreateObject”就可以了。
在封包Http報文時我們先看看IE是如何Post數據到目的頁面的,下面如圖6所示。就是我用WS找取IE瀏覽器Post數據的報文,可作參考用。
那個Cookie以及我Post出去的數據在這里可以看得一清二楚了,特別是那個Cookie的那些會話變量,它是與圖5里的那個Cookie會話一樣的,因為我沒有關閉過IE瀏覽器。
理清了IE的工作過程后,下面就輪到我們自己來做了。下面的這一段代碼是比較完整,它是當我觸發那個“View”按鈕里的代碼:
Private Sub Command2_Click()
Dim doc As IHTMLDocument2
Set doc = WebBrowser1.Document
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")//建立XMLHTTP對像組件
//下面的這個“Trim(Text5.Text)”是讀取要Post的網頁
objXMLHTTP.open "POST", Trim(Text5.Text), False
//以下的一連幾個setRequestHeader都是設置HTTP的報文變量頭,有些是比較重要的。
objXMLHTTP.setRequestHeader "Referer", " http://service.qq.com/psw/psw_id.htm"
objXMLHTTP.setRequestHeader "accept -language", "zh -cn"
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXMLHTTP.setRequestHeader "cache -Control", "no - cache"
On Error Resume Next
//下面這行代碼是最重要的,它是把上一環節里取得的圖片驗證碼的會話ID讀取并設置好準備POST的HTTP報文頭。
objXMLHTTP.setRequestHeader "Cookie", doc.cookie
//下面這行代就是把我們要Post的數據重新封包好
q_post = "uin=" & Text1.Text & "&password=" & Text2.Text & "&code=" & Text3.Text & "step2=1&image.x=35&image.y=8"
objXMLHTTP.send (q_post)//當一切搞好后,這里就是把我們之前細心封包的數據一次Post到目的頁面
If InStr(objXMLHTTP.responseText, "name=certtype") > 0 Then
MsgBox "此QQ沒有密保!", vbOKOnly + 64, "恭喜!!!"
Else
MsgBox "此QQ可能已有密保!", vbOKOnly + 16, Form1.Caption
End If
Set objXMLHTTP = Nothing
Text3.Text = ""
If Err Then
MsgBox "內部出錯!", vbOKOnly + 16, Form1.Caption
End If
End Sub
就這樣,一個讀取圖片驗證碼的網絡程序已基本上完成了

利用VB實現驗證碼識別


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品观看影院2828 | 91久久九九精品国产综合 | 日日操操干干 | 一级日本强免费 | 综合久久伊人 | 97成人精品视频在线播放 | 欧美日韩中文一区二区三区 | 久久久99精品免费观看 | 激情五月婷婷网 | 91香蕉福利一区二区三区 | 国产精品久久久久三级 | 99精品视频在线播放2 | 国产成人精品久久一区二区三区 | 色拍拍噜噜噜aⅴ在线观看 色拍拍欧美视频在线看 | 中文字幕一视频97色伦 | 一级网站在线观看 | 欧美午夜性刺激在线观看免费 | 久久久久日韩精品无 | 国产亚洲精品久久精品6 | 福利国产在线 | 久草在线首页 | 涩涩视频观看 | 国产精品福利资源在线 | 国产成人aa视频在线观看 | 日本xxx高清免费视频 | 日韩 欧美 中文 | 久久精品亚洲欧美日韩久久 | 夜夜橹| 国产一区二区三区免费播放 | 中文字幕在线欧美 | 天天射日日 | 欧美操操 | 亚洲欧美综合图区官网 | 欧美一区中文字幕 | 精品无码久久久久久国产 | 91精品国产91久久久久久麻豆 | 国产一级毛片国语普通话对白 | 午夜国产精品福利在线观看 | 成人欧美一区二区三区黑人妖 | 欧美曰批人成在线观看 | 天天干天天干天天干天天干天天干 |