С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/20: Рейтинг темы: голосов - 20, средняя оценка - 4.75
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
.NET 3.x

Работа c cookie

24.02.2011, 15:07. Показов 4061. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые кодеры. У меня такая проблема. Я получил кукисы после запроса с авторизацией. Теперь мне надо привинтить их к другому запросу. Уже запарился гуглить, но все равно ничего не понимаю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2011, 15:07
Ответы с готовыми решениями:

Работа с cookie
Нужно сделать получение куков из гет запроса и их передачу в post запрос. Здесь у меня производится парс, а так же второй гет запрос. ...

Работа с cookie в библиотеке xNet
Здравствуйте. Более менее разобрался с работой HTTP через библиотеку xNet, но тема с куками нераскрыта, нужно провести авторизацию и...

Cookie
Здраствуйте. Хотел узнать как получить данные из файла Cookie в читабельном виде. Открываю файл обычным StreamReader, вывожу на экран, а...

10
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
24.02.2011, 16:08
В чем проблема-то?
Объявляем контейнер:
C#
1
CookieContainer cookie = new CookieContainer();
Пишем что-то простое, вроде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string http(string uri)
        {
            try
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
                httpWebRequest.CookieContainer = cookie;
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream());
                return reader.ReadToEnd();
            } 
            catch (Exception ex)
            {
                return "error";
            }
        }
И все. Выполняем первый запрос с авторизацией, её куки падают в контейнер. Затем пишем второй запрос - будут использованы уже существующие куки. По надобности можно обнулять или сохранять в другую переменную, а также редактировать и заменять.
1
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
24.02.2011, 16:50  [ТС]
Дело том что я получал кукисы не совсем так как надо. А примерно вот так:
C#
1
2
3
4
5
6
7
8
            HttpWebRequest wrGETURL = (HttpWebRequest)System.Net.WebRequest.Create(URL);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)wrGETURL.GetResponse();
            StreamReader myStreamReadermy = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));
            string page = myStreamReadermy.ReadToEnd();
            Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
            Match ssid = sidregex.Match(headers);
            sid = ssid.Groups[1].Value;
            cook = new Cookie("remixsid", sid);
Тогда объясните как сделать так чтобы куки из перого запроса попадали в CookieContainer.
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
24.02.2011, 16:56
Darkbobo, с Вконтактом что-то мутим?
Разницы между твоим и моим кодом нет, просто у тебя при каждом запросе генерируются новые куки - зачем оно тебе? Объяви в начале программы (вне функции)
C#
1
CookieContainer cookie = new CookieContainer();
А в своем коде замени
C#
1
cook = new Cookie("remixsid", sid);
на
C#
1
wrGETURL.CookieContainer = cookie;
Если надо что-то заменить в куках - редактируй переменную cookie
1
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
24.02.2011, 17:27  [ТС]
Делаю всё как написано, но второй запрос отправляется без кукисов.
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
24.02.2011, 17:39
Darkbobo, впритык не понимаю, что ты собираешься сделать - может пояснишь?
На данный момент если читать код, то получается примерно следующее:
C#
1
2
3
4
5
6
7
8
HttpWebRequest wrGETURL = (HttpWebRequest)System.Net.WebRequest.Create(URL); //Тут все понятно - отправляем и читаем запрос
HttpWebResponse myHttpWebResponse = (HttpWebResponse)wrGETURL.GetResponse();//...
StreamReader myStreamReadermy = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));//...
string page = myStreamReadermy.ReadToEnd();//...
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");//Ищем sid
Match ssid = sidregex.Match(headers);//Не очень понял, что за headers и где эта переменная объявляется? Почему не используется полученное зхначение page?
sid = ssid.Groups[1].Value;//Загоняем в переменную (так понимаю, это где то выше объявленный string)
cook = new Cookie("remixsid", sid);//Тут самое интересное: ты берешь переменную cook (которая в твоем запросе никак не участвует, хотя должна передаваться с request) и присваиваешь ей куку с одним значением (???), хотя в оригинальной куке значений больше.
Можно либо кусок кода больше, либо поясни, что хочешь получить в итоге яснее.
0
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
24.02.2011, 17:42  [ТС]
Цитата Сообщение от Slap Посмотреть сообщение
Darkbobo, впритык не понимаю, что ты собираешься сделать - может пояснишь?
На данный момент если читать код, то получается примерно следующее:
C#
1
2
3
4
5
6
7
8
HttpWebRequest wrGETURL = (HttpWebRequest)System.Net.WebRequest.Create(URL); //Тут все понятно - отправляем и читаем запрос
HttpWebResponse myHttpWebResponse = (HttpWebResponse)wrGETURL.GetResponse();//...
StreamReader myStreamReadermy = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));//...
string page = myStreamReadermy.ReadToEnd();//...
Regex sidregex = new Regex("sid=([a-z0-9]+); exp");//Ищем sid
Match ssid = sidregex.Match(headers);//Не очень понял, что за headers и где эта переменная объявляется? Почему не используется полученное зхначение page?
sid = ssid.Groups[1].Value;//Загоняем в переменную (так понимаю, это где то выше объявленный string)
cook = new Cookie("remixsid", sid);//Тут самое интересное: ты берешь переменную cook (которая в твоем запросе никак не участвует, хотя должна передаваться с request) и присваиваешь ей куку с одним значением (???), хотя в оригинальной куке значений больше.
Можно либо кусок кода больше, либо поясни, что хочешь получить в итоге яснее.
Я хочу просто что программа авторизировалась и например смотрела какие приложения установлены у пользавателя (не от того от кого авторизировалась а например у друга.).
Я нашел этот код инэте вообще ни чего не понимаю в кукисах.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            //создаем запрос
            HttpWebRequest wrGETURL = (HttpWebRequest)System.Net.WebRequest.Create("http://vkontakte.ru/login.php?m=1&email=" + textBox1.Text + "&pass=" + textBox2.Text);
            //выставляем значения Headers
            //Запрещаем редирект
            wrGETURL.AllowAutoRedirect = false;
            //Выставляем таймаут
            wrGETURL.Timeout = 100000;
            //получаем Headers,пришедшие в ответе
            string headers = wrGETURL.GetResponse().Headers.ToString();
            //получаем весь ответ
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)wrGETURL.GetResponse();
            //записываем ответ в поток
            StreamReader myStreamReadermy = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));
            //запихиваем ответ в строку
            string page = myStreamReadermy.ReadToEnd();
            //это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
            Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
            Match ssid = sidregex.Match(headers);
            sid = ssid.Groups[1].Value;
            //инициализируем куки
            cook = new Cookie("remixsid", sid);
            //тоже самое,куки пишем
            cook.Domain = "vkontakte.ru";
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
24.02.2011, 17:49
Darkbobo, не прокатит. Подмену кук полную и частичную пофиксили уже очень давно. Советую проверить теорию в Firefox. Поставьте расширение Add N Edit Cookies или подобное, авторизируйтесь, отредактируйте куки и попробуйте сделать что хотели.
1
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
24.02.2011, 17:56  [ТС]
Цитата Сообщение от Slap Посмотреть сообщение
Darkbobo, не прокатит. Подмену кук полную и частичную пофиксили уже очень давно. Советую проверить теорию в Firefox. Поставьте расширение Add N Edit Cookies или подобное, авторизируйтесь, отредактируйте куки и попробуйте сделать что хотели.
Но мне не надо подменивать куки! Мне нужно просто авторизироаться и пройти на чужую страницу как через браузер.
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
24.02.2011, 18:02
Darkbobo, тогда что вы вообще с куками пытаетесь что-то сделать?
Берете мой код отсюда:
Работа c cookie
И пишите в обработчике что-то вроде:
C#
1
http("тут_запрос_GET_на_авторизацию");
Не поленился, посмотрел, запрос такого вида:
http://login.vk.com/?act=login... ass=пароль

И далее как в браузере (куки уже лежат, где надо):
C#
1
string page = http("тут_ссылка_на_нужную_страницу");
Если GET запрос не подходит, переделайте под POST (там всего несколько строк)
1
3 / 3 / 1
Регистрация: 17.10.2010
Сообщений: 33
24.02.2011, 18:28  [ТС]
Не могли бы вы показать кусок кода. Ато я ничего понять не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2011, 18:28
Помогаю со студенческими работами здесь

Cookie в xNet
Есть строка с куками, конкретно строка вида: Подскажите как мне засунуть их в запрос(Сразу всю строку) Кук много, не хотелось бы для...

получить Cookie
никак не могу получить куки, в консоли пусто static string GetCookie() { string url="http://site.ru/user/login"; ...

cookie запись и отправка
Всем привет! Требуется выполнить два запроса. При осуществлении первого запроса сервер создает куки, которые нужно использовать во...

Авторизация на сайте Cookie
Здравствуйте, мне нужно авторизоваться на сайте и далее посылать пост запросы с авторизованного аккаунта Вот что получаю от google chrome...

Не могу получить cookie
Вопрос заключается в следующем: я формирую запрос static HttpWebResponse POST(string data) { byte Data =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru