Vb.net 如何使用HttpWebRequest登录路由器?

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

我正在试图找出如何成功登录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
    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”部分