httpWebRequest прикручивание кук.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

httpWebRequest прикручивание кук.

Сообщение GAGArin » 24.02.2006 (Пт) 10:18

Код: Выделить всё
    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 совсем не похож на тот что у меня в куках...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 24.02.2006 (Пт) 10:48

Дык не понятно, PHPSESSID у тебя где передается в куках или в адресной строке?? может попробовать тот PHPSESSID, что у тебя в куках то же кидать в get-запрос?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 24.02.2006 (Пт) 10:57

Передается в куках, в запрос и так был добавлен...

Вобщем я ужо разобрался.
Запрос у меня на *ttp://www.url.ru/
А куки просто на url.ru
Привел их к одному виду, запахало. А в ответе он просто ссылку давал со сгенерированным новым ID

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 24.02.2006 (Пт) 15:35

Еще вопросик. Я правильно понимаю что
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=cookie.php">

Это редирект на этот самый пресловутый cookie.php Туда меня отсылает почему-то не каждая, а только каждая вторая страница.

Вопрос откуда это может появляться? Собственно куки вроде как поддерживаются (остальные страницы, которым они нужны пашут) Но тем не менее некоторые страницы шлют меня на сообщение что мол мой "браузер" не поддерживает кук.

Как бы его убедить что на самом деле мой "браузер" куки очень даже поддерживает и параллельно вопросик, как заставить его отображать мне не Редирект, а то что за ним?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 110

    TopList