vb.net如何使用HttpWebRequest模拟登陆带验证码的网站
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net如何使用HttpWebRequest模拟登陆带验证码的网站相关的知识,希望对你有一定的参考价值。
Public Function 发送信息(strUrl As String, strPostData As String, Optional ByVal 发送方式 As Boolean = True) As HttpWebResponse
Dim myHttpWebRequest As HttpWebRequest = WebRequest.Create(strUrl)
If 发送方式 Then
myHttpWebRequest.Method = "POST"
Else
myHttpWebRequest.Method = "GET"
End If
'填充基本信息
myHttpWebRequest.Accept = "text/html, application/xhtml+xml, */*"
myHttpWebRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; MALCJS)"
myHttpWebRequest.Headers.Add("Accept-Language", "zh-CN")
myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate")
myHttpWebRequest.Headers.Add("DNT", "1")
myHttpWebRequest.KeepAlive = True
myHttpWebRequest.Timeout = 8000
myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials
myHttpWebRequest.AllowAutoRedirect = True
myHttpWebRequest.MaximumAutomaticRedirections = 4
myHttpWebRequest.CookieContainer = New CookieContainer()
myHttpWebRequest.CookieContainer = myCookie
Dim postData As String = strPostData '+ ChrW(61)
Dim encoding As New ASCIIEncoding()
Dim postByte As Byte() = encoding.GetBytes(postData)
If Not postByte Is Nothing Then
If postByte.Length > 0 Then
myHttpWebRequest.ContentLength = postByte.Length
Dim newStream As Stream = myHttpWebRequest.GetRequestStream()
newStream.Write(postByte, 0, postByte.Length)
newStream.Flush()
newStream.Close()
End If
End If
Dim myHttpWebResponse As HttpWebResponse
Try
myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Catch ex As Exception
End Try
If Not myHttpWebResponse Is Nothing Then
Return myHttpWebResponse
Else
Return Nothing
End If
myHttpWebResponse.Close()
End Function
那首先要 GET 一个网址。GetResponse后,得到的流就是这个页面的源码。
源码里肯定会包含这个验证码的提问段(可能是个图片的网址,也可能是个 5+5=? 之类的字符串之类的),可以分析一下这段代码出现的位置,让程序自动寻找。找到这个图片的网址,把这个图片 GET 下来,然后,就是orc识别或你人工识别咯。。。本回答被提问者和网友采纳 参考技术B 验证码是怎么样的?
如果比较复杂估计有难度
在 vb.net 中获取下载文件的大小
【中文标题】在 vb.net 中获取下载文件的大小【英文标题】:get the downloading file size in vb.net 【发布时间】:2015-09-06 12:47:13 【问题描述】:我在vb.net中设计了一个下载管理器,但是我不知道下载开始后如何获取文件大小,或者我什么时候放url。
我在互联网和这里搜索,我找到了httpwebrequest
类,
但我不知道它是如何工作的以及如何将它添加到我的项目中。
【问题讨论】:
Get file size before download it in vb的可能重复 我以前看过,但我不知道如何使用代码webrequest
使用this solution。
看到代码,不知道如何在TextBox中显示返回值
谢谢,这就是我想要的
【参考方案1】:
使用这个功能:
Public Function GetDownloadSize(ByVal URL As String) As Long
Dim r As Net.WebRequest = Net.WebRequest.Create(URL)
r.Method = Net.WebRequestMethods.Http.Head
Using rsp = r.GetResponse()
Return rsp.ContentLength
End Using
End Function
这是一个简单的使用示例:
MsgBox(Math.Round(GetDownloadSize("http://www.foo.com/file.mp3") / 1024 / 1024, 2) & " MB")
来源:https://***.com/a/32340260/3970387
【讨论】:
以上是关于vb.net如何使用HttpWebRequest模拟登陆带验证码的网站的主要内容,如果未能解决你的问题,请参考以下文章
解决WebClient或HttpWebRequest首次连接缓慢问题