- login with VB.NET and httpwebrequest cookiecontainer
- Public Class wiki_submitter
- Dim CookieJar As New CookieContainer
- Public wikiURL As String
- Private Function cutStr(ByVal Str As String, ByVal startStr As String, _
- ByVal finishStr As String, Optional ByVal startPos As Integer = 1) As String
- Dim start As Integer = InStr(startPos, Str, startStr) + Len(startStr)
- Dim finish As Integer = InStr(start + 1, Str, finishStr)
- cutStr = Mid(Str, start, finish - start)
- End Function
- Public Function GetNewForm()
- Try
- Dim req As HttpWebRequest = HttpWebRequest.Create(wikiURL & "index.php?title=Special:UserLogin&returnto=Main_Page")
- Dim res As HttpWebResponse
- req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"
- res = req.GetResponse()
- 'Setting cookies
- req.CookieContainer = CookieJar
- 'getting HTML result
- Dim sr As StreamReader = New StreamReader(res.GetResponseStream())
- Dim HTML = sr.ReadToEnd
- sr.Close()
- Dim wpLoginToken As String = cutStr(HTML, "<input type=""hidden"" name=""wpLoginToken"" value=""", """") ' finding wpLoginToken parameter
- GetNewForm = wpLoginToken
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Function
- Public Function doLogin(ByVal username As String, ByVal pass As String)
- Dim req As HttpWebRequest = HttpWebRequest.Create(wikiURL & "index.php?title=Special:UserLogin&action=submitlogin&type=login")
- Dim res As HttpWebResponse
- Dim HTML As String
- '-------Setting up headers------------
- req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"
- req.Referer = wikiURL & "index.php?title=Special:UserLogin&returnto=Main_Page"
- req.ContentType = "application/x-www-form-urlencoded" 'Form content type
- req.Method = "POST" 'data will be send in POST method
- req.CookieContainer = CookieJar 'Setting cookies
- '-------------------------------------
- Dim sw As StreamWriter = New StreamWriter(req.GetRequestStream)
- Dim poststring = "wpLoginToken=" & GetNewForm() & "&wpLoginattempt=Log in&wpName=" & username & "&wpPassword=" & pass
- Try
- sw.Write(poststring)
- Catch ex As Exception
- MsgBox(ex.Message)
- Finally
- sw.Close()
- End Try
- res = req.GetResponse()
- Dim sr As StreamReader = New StreamReader(res.GetResponseStream())
- HTML = sr.ReadToEnd 'HTML as result
- sr.Close()
- doLogin = HTML 'returns HTML result
- End Function
- End Class
- Public Class wiki_submitter
- Dim CookieJar As New CookieContainer
- Public wikiURL As String
- Private Function cutStr(ByVal Str As String, ByVal startStr As String, _
- ByVal finishStr As String, Optional ByVal startPos As Integer = 1) As String
- Dim start As Integer = InStr(startPos, Str, startStr) + Len(startStr)
- Dim finish As Integer = InStr(start + 1, Str, finishStr)
- cutStr = Mid(Str, start, finish - start)
- End Function
- Public Function GetNewForm()
- Try
- Dim req As HttpWebRequest = HttpWebRequest.Create(wikiURL & "index.php?title=Special:UserLogin&returnto=Main_Page")
- Dim res As HttpWebResponse
- req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"
- res = req.GetResponse()
- 'Setting cookies
- 'req.CookieContainer = CookieJar
- SaveIncomingCookies(res, wikiURL)
- 'getting HTML result
- Dim sr As StreamReader = New StreamReader(res.GetResponseStream())
- Dim HTML = sr.ReadToEnd
- sr.Close()
- Dim wpLoginToken As String = cutStr(HTML, "<input type=""hidden"" name=""wpLoginToken"" value=""", """") ' finding wpLoginToken parameter
- GetNewForm = wpLoginToken
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Function
- Public Function doLogin(ByVal username As String, ByVal pass As String)
- Dim req As HttpWebRequest = HttpWebRequest.Create(wikiURL & "index.php?title=Special:UserLogin&action=submitlogin&type=login")
- Dim res As HttpWebResponse
- Dim HTML As String
- '-------Setting up headers------------
- req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"
- req.Referer = wikiURL & "index.php?title=Special:UserLogin&returnto=Main_Page"
- req.ContentType = "application/x-www-form-urlencoded" 'Form content type
- req.Method = "POST" 'data will be send in POST method
- 'req.CookieContainer = CookieJar 'Setting cookies
- '-------------------------------------
- Dim sw As StreamWriter = New StreamWriter(req.GetRequestStream)
- Dim poststring = "wpLoginToken=" & GetNewForm() & "&wpLoginattempt=Log in&wpName=" & username & "&wpPassword=" & pass
- Try
- req.CookieContainer = CookieJar
- sw.Write(poststring)
- Catch ex As Exception
- MsgBox(ex.Message)
- Finally
- sw.Close()
- End Try
- res = req.GetResponse()
- SaveIncomingCookies(res, wikiURL)
- Dim sr As StreamReader = New StreamReader(res.GetResponseStream())
- HTML = sr.ReadToEnd 'HTML as result
- sr.Close()
- doLogin = HTML 'returns HTML result
- End Function
- Private Function SaveIncomingCookies(ByRef response As HttpWebResponse, ByRef Uri As String)
- If response.Headers("Set-Cookie") <> Nothing Then
- CookieJar.SetCookies(New Uri("http://wetcatdesign.com"), response.Headers("Set-Cookie"))
- End If
- End Function
- End Class