1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
|
' App
' Module1.vb
Module Module1
Sub Main()
Dim reader As New Business.test_connect.Business.WebReader
reader.Read()
Console.ReadKey()
End Sub
End Module
' Dll
' AdminUser.vb
Imports System.Net
Namespace test_connect.Business
Friend NotInheritable Class AdminUser
Private Sub New()
End Sub
Friend Shared ReadOnly Property Username() As String
Get
Return "******"
End Get
End Property
Friend Shared ReadOnly Property Password() As String
Get
Return "******"
End Get
End Property
Friend Shared Property Cookies() As CookieCollection
Get
Return m_Cookies
End Get
Set(value As CookieCollection)
m_Cookies = value
End Set
End Property
Private Shared m_Cookies As CookieCollection
Friend Shared Property Token() As String
Get
Return m_Token
End Get
Set(value As String)
m_Token = value
End Set
End Property
Private Shared m_Token As String
End Class
End Namespace
' ProxyUser
Namespace test_connect.Business
Friend NotInheritable Class ProxyUser
Private Sub New()
End Sub
Friend Shared ReadOnly Property AdrProxy() As String
Get
Return "proxout.eiffage.loc:8080"
End Get
End Property
Friend Shared ReadOnly Property Username() As String
Get
Return "*****"
End Get
End Property
Friend Shared ReadOnly Property Passwd() As String
Get
Return "*******"
End Get
End Property
Friend Shared ReadOnly Property Domain() As String
Get
Return "*******"
End Get
End Property
End Class
End Namespace
' WebPagesUrl
Namespace EET_SIEA.ConnectionWebSite
Friend NotInheritable Class WebPagesUrl
Private Sub New()
End Sub
Friend Shared ReadOnly Property Domain() As String
Get
Return "customers.liain.fr"
End Get
End Property
Friend Shared ReadOnly Property RootPage() As String
Get
Return String.Format("http://{0}", Domain)
End Get
End Property
Friend Shared ReadOnly Property LoginPage() As String
Get
Return String.Format("{0}/{1}", RootPage, "login")
End Get
End Property
End Class
End Namespace
' WebReader
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions
Namespace EET_SIEA.ConnectionWebSite
Public Class WebReader
Public Sub Read()
OpenAndReadHomePage()
DoLogin()
End Sub
Private Sub OpenAndReadHomePage()
Dim content As String = String.Empty
' Create 'Cookie' objects to keep data through web requests
Dim cookieContainer As New CookieContainer()
Dim cookiesCollection As New CookieCollection()
' Open root page, get cookie and read token value
Dim request As HttpWebRequest = CType(WebRequest.Create(WebPagesUrl.RootPage), HttpWebRequest)
request.CookieContainer = cookieContainer
' Read response
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Using stream As New StreamReader(response.GetResponseStream(), Encoding.UTF8)
cookiesCollection = response.Cookies
content = stream.ReadToEnd()
End Using
' Register user data
AdminUser.Cookies = cookiesCollection
AdminUser.Token = GetToken(content)
End Sub
Private Function GetToken(content As String) As String
Dim token As String = Nothing
Dim match As Match = Regex.Match(content, "value=""(?<token>.*)"" id=")
If match.Success Then
token = match.Groups("token").Value
End If
Return token
End Function
Private Sub DoLogin()
Dim content As String = Nothing
Dim request As HttpWebRequest = CType(WebRequest.Create(WebPagesUrl.LoginPage), HttpWebRequest)
' Method POST requires application/x-www-form-urlencoded content type
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
' POST method data
Dim postData As String = "signin%5B_csrf_token%5D=" + AdminUser.Token
postData += "&signin%5Busername%5D=" + AdminUser.Username
postData += "&signin%5Bpassword%5D=" + AdminUser.Password
' Convert data to bytes
Dim data As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentLength = data.Length
' Send cookies back
request.CookieContainer = New CookieContainer()
request.CookieContainer.Add(AdminUser.Cookies)
' Fake origin, referer and host
request.Headers.Add("Origin", WebPagesUrl.RootPage)
request.Referer = WebPagesUrl.RootPage
request.Host = WebPagesUrl.Domain
' Send data
Dim stream As Stream = request.GetRequestStream()
stream.Write(data, 0, data.Length)
stream.Close()
' Read response
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Using streamResponse As New StreamReader(response.GetResponseStream(), Encoding.UTF8)
' HERE LOGIN PAGE - OK
content = streamResponse.ReadToEnd()
End Using
End Sub
End Class
End Namespace |
Partager