- Код: Выделить всё
Private Function GetCookie(ByVal Login As String, ByVal Pass As String)
Dim wReq As System.Net.WebRequest = System.Net.WebRequest.Create("http://url.ru/login2.php")
Dim wResp As System.Net.WebResponse
Dim Params As String = "character_name=" & Login & "&pass=" & Pass & "&newlang=russian&res=1024&login.x=23&login.y=15"
Dim ReqBytes() As Byte 'Передаваемое в поток запроса
Dim Encode As System.Text.Encoding 'Кодировщик
Dim Rstream As System.io.Stream 'Поток ввода данных
Dim CookieVal() As String 'Массив пар имя-значение
Dim CookStr As String 'Перебераемая пара имя-значение
Dim CookieCont As New System.Net.CookieContainer ' Контейнер кук
Dim cookName, cookVal As String ' Временные переменные для разбора строки кук
'Устанавливаем свойства
wReq.Method = "POST"
wReq.ContentType = "application/x-www-form-urlencoded"
'Готовим данные
ReqBytes = Encode.Default.GetBytes(Params)
wReq.ContentLength = ReqBytes.Length
Rstream = wReq.GetRequestStream 'открыли поток, шлем
Rstream.Write(ReqBytes, 0, ReqBytes.Length)
Rstream.Close() 'Закрыли поток
wResp = wReq.GetResponse 'Смотрим отклик
'Ищем cookie
CookieVal = Split(wResp.Headers.Item("Set-Cookie"), ";")
For Each CookStr In CookieVal
cookName = Trim(Split(CookStr, "=")(0))
cookVal = Trim(Split(CookStr, "=")(1))
CookieCont.Add(New System.Net.Cookie(cookName, cookVal, "", "url.ru"))
Next
wResp.Close()
GetCookie = CookieCont
End Function
Private Function BotClick(ByVal page As String, ByVal params As String, ByVal cookie As System.Net.CookieContainer) As String
Dim Creq As System.Net.HttpWebRequest ' запрос
Dim Cresp As System.Net.WebResponse 'ответ
Dim inputStream As System.IO.Stream 'Поток ответа
Dim Decode As System.Text.Encoding 'Кодировщик
'Создаем запрос, подключаем куки...
Creq = System.Net.HttpWebRequest.Create("http://www.url.ru/" & page & params)
Creq.CookieContainer = cookie
Creq.Method = "GET"
'Берем ответ
Cresp = Creq.GetResponse
inputStream = Cresp.GetResponseStream
Dim Reader As New System.IO.StreamReader(inputStream, Decode.Default)
BotClick = Reader.ReadLine() 'Отдаем ответ
'Закрываемся
inputStream.Close()
Cresp.Close()
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cook As System.Net.CookieContainer
cook = GetCookie("Nick", "myPass")
label1.Text = BotClick("main.php", "", cook)
End Sub
Вот такой вот код. Куки он получает. Все какие надо, ID сессии и Path Но при попытке создать второй запрос сервер ругается что я не залогинился, и при этом ругается дословно:
Вам необходимо войти в игру, нажмите <A HREF=index.php?PHPSESSID=d779de31ce4fd065efcb08a1a1a7f11a>здесь</A>.
Где PHPSESSID совсем не похож на тот что у меня в куках...