Vb.net 如何使用HttpWebRequest登录路由器?
我正在试图找出如何成功登录DSL路由器(型号:Speedport w504v a型)。 我使用HttpWebRequest和HttpWebResponse编写了一个函数。到目前为止,此功能尚未完成,仅用于查找正确的登录过程Vb.net 如何使用HttpWebRequest登录路由器?,vb.net,login,httpwebrequest,router,Vb.net,Login,Httpwebrequest,Router,我正在试图找出如何成功登录DSL路由器(型号:Speedport w504v a型)。 我使用HttpWebRequest和HttpWebResponse编写了一个函数。到目前为止,此功能尚未完成,仅用于查找正确的登录过程 Public Function DoRequest(ByVal url As String, ByVal password As String, ByVal container As CookieContainer) As String 'Login Request
Public Function DoRequest(ByVal url As String, ByVal password As String, ByVal container As CookieContainer) As String
'Login Request
Dim reqLogin As HttpWebRequest = DirectCast(HttpWebRequest.Create("https://speedport.ip/cgi-bin/login.cgi"), HttpWebRequest)
reqLogin.CookieContainer = container
reqLogin.Method = "POST"
reqLogin.Referer = "https://speedport.ip/hcti_start_passwort.stm"
reqLogin.KeepAlive = True
reqLogin.Host = "speedport.ip"
reqLogin.ContentType = "application/x-www-form-urlencoded"
reqLogin.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
reqLogin.Headers.Add("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3")
reqLogin.Headers.Add("Accept-Encoding", "gzip, deflate")
'Login Data
Dim encoding As New ASCIIEncoding()
Dim data As String = Uri.EscapeDataString("pws") & "=" & Uri.EscapeDataString(password)
Dim bytes As Byte() = encoding.GetBytes(data)
reqLogin.ContentLength = bytes.Length
Dim stream As Stream = reqLogin.GetRequestStream
stream.Write(bytes, 0, bytes.Length)
stream.Close()
'Login Response
Dim resLogin As HttpWebResponse = DirectCast(reqLogin.GetResponse(), HttpWebResponse)
'Receive Cookie
Dim CookieHeaderValue As String = reqLogin.Headers.Get("Cookie")
If CookieHeaderValue <> Nothing Then
Dim aCookie As String() = CookieHeaderValue.Split("=")
Dim Cookie As New Cookie
Cookie.Domain = "speedport.ip"
Cookie.Path = "/"
Cookie.Secure = True
Cookie.Name = aCookie(0)
Cookie.Value = aCookie(1)
container.Add(Cookie)
End If
'Url Request
Dim reqIndex As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
reqIndex.CookieContainer = container
reqIndex.Method = "GET"
reqIndex.Referer = "https://speedport.ip/wait_login.stm"
reqIndex.KeepAlive = True
reqIndex.Host = "speedport.ip"
reqIndex.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
'Url Content
Dim resIndex As HttpWebResponse = DirectCast(reqIndex.GetResponse(), HttpWebResponse)
Dim sr As StreamReader = New StreamReader(resIndex.GetResponseStream())
Dim output As String = sr.ReadToEnd
resIndex.Close()
Return output
End Function
也许有人知道出了什么问题。我用小提琴弄明白了。我还必须为第一个请求设置用户代理头
reqLogin.UserAgent = "YOUR USERAGNET STRING"
此外,我不必获取reqLogin.Headers.get(“Cookie”)
的值。
它已经设置为CookieContainer,因此取消“接收Cookie”部分。使用Fiddler我找到了它。我还必须为第一个请求设置用户代理头
reqLogin.UserAgent = "YOUR USERAGNET STRING"
此外,我不必获取reqLogin.Headers.get(“Cookie”)
的值。
它已经设置为CookieContainer,因此取消“接收Cookie”部分