Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Как достать session id с куков C# WinForms

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 23.06.2014, 21:07   #1
 Разведчик
Аватар для малина
 
малина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слуху
Регистрация: 20.03.2011
Сообщений: 20
Популярность: 1466
Сказал(а) спасибо: 427
Поблагодарили 57 раз(а) в 42 сообщениях
 
По умолчанию Как достать session id с куков C# WinForms

В проэкте есть WebBrowser с пройденой авторизацией на сайте wordstat.yandex.ru

Мы копируем куки с webBrowser и вставляем их в в запрос(смотрите код)
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;
using System.Windows;
using System.Threading;

namespace Passport
{
    public partial class Form1 : Form
    {
        string sLogin = "t.pentsak";
        CookieContainer container = new CookieContainer();
        string sPassword = "qwerty12345";
        string kyki = "";

        public Form1()
        {
            InitializeComponent();
            webBrowser1.Navigate("http://wordstat.yandex.ru");
        }
        public CookieContainer GetCookieContainer()
        {
            foreach (string cookie in webBrowser1.Document.Cookie.Split(';'))
            {
                string name = cookie.Split('=')[0];
                string value = cookie.Substring(name.Length + 1);
                string path = "/";
                string domain = ".wordstat.yandex.ru"; //change to your domain name
                
                kyki+= cookie;

                kyki += ";";
                container.Add(new Cookie(name.Trim(), value.Trim(), path, domain));
            }
            kyki.Remove(kyki.Length - 1);
            return container;
        }
        private void button1_Click(object sender, EventArgs e)
        {

            GetCookieContainer();
          
     
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://wordstat.yandex.ru");
                myHttpWebRequest.Accept = "*/*";
                myHttpWebRequest.Headers.Add("Accept-Language", "uk,en-US;q=0.8,en;q=0.5,ru;q=0.3");
                myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
                myHttpWebRequest.UserAgent =  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)";
                myHttpWebRequest.AllowAutoRedirect = false;
                myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, kyki); // вот здесь добавляем куки в myHttpWebRequest из WebBrowser
                HttpWebResponse  myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
        }
    }
}
Теперь о сути, по идее после передачи куков в которых пройдена авторизация из WebBrowser в HttpWebRequest\response , в запросе сделанном через(HttpWebRequest\response) должна быть пройдена авторизация.

Но увы, есть проблема ... читайте дальше.
При запуске программы сразу же открывается ссылка в WebBrowser,там есть куки, в куках есть определённый session_ID который то и не удалось достать методом GetCookieContainer. То есть, оба запроса что с WebBrowser что с HttpWebRequest\response идентичны кроме того, что в WebBrowser есть session_ID которого при копировании куков не наблюдаеться.И соответственно авторизоваться не получаеться.

P.S. запросы что с того, что с того идентичны при просмотре через Fiddler, разница лишь в том что в куках WB есть строчка session id , которой не наблюдаеться в HttpWebRequest\response.

Теперь сам вопрос - что могло помешать залогиниться в этом случае?Как достать session_ID с куков или как его сгенерировать?
Единственная наша теория "почему не выходит залогиниться с HttpWebRequest\response" - это отсутствующий Session Id.

Хотелось бы посмотреть ваши рассуждения\идеи по этому поводу.

Спасибо.
________________
Фарм кредитов WoT
http://zhyk.ru/forum/showthread.php?t=880081
  Ответить с цитированием
Старый 24.06.2014, 01:27   #2
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Возможно на странице есть javascript который собственно и записывает куки.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 24.06.2014, 16:09   #3
 Разведчик
Аватар для малина
 
малина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слуху
Регистрация: 20.03.2011
Сообщений: 20
Популярность: 1466
Сказал(а) спасибо: 427
Поблагодарили 57 раз(а) в 42 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Возможно на странице есть javascript который собственно и записывает куки.

Очистил куки WebBrowser1,заново залогинился,session ID получаю в ответе яндекса об удачной авторизации, т.е.
Мы отправили запрос с логином и пассом - далее автоматические отправляется запрос типа auth/finish ,т.е. об удачной авторизации, в котором мы и получаем сессион айди.

Странно,если смотреть куки в фиддлере, то SI присутствует, а если выводить куки WB на RichTextBox , то никаким session ID там ин е пахнет.

Добавлено через 4 часа 14 минут
Вытянули куки с WB и вставил их в ручную в HttpWebreq\res - авторизация успешна и там, и там.

НО, теперь появилась другая проблема, авторизация нам нужна была для того что бы вытянуть html код с определённого запроса,а для тех кто не в теме, результаты по определённому запросу можно узнать лишь будучи авторизованим.Сама суть, при просмотре HTML кода страницы с результатами по определённому запросу, в Fiddler вот такие каракули, при чём и в WB и в HttpWebreq\res каракули одинаковы.
[Ссылки могут видеть только зарегистрированные пользователи. ]

То что вместо HTML кода страницы находиться бред это понятно.

Идём дальше.

Казалось бы что нету html кода при просмотре через Fiddler, но если вытягивать html методом

richTextBox1.Text = webBrowser1.Document.Body.InnerHtml;// это не обычный DocumentText,это метод который возвращает данные с под тега Body, т.е. результаты которые нам прислал яндекс.Обычным DocumentText не спарсишь данные с подтега body

и выводить его на экран формы, то html есть, при чём с нужными результатами, без каракуль, в общем всё на пятерочку.

НО
нам нужно спарсить html код с результатами из HttpWebreq\res, а вот здесь и начинаеться крутяк.У HttpWebreq\res нету никаких либо методов для парсинга html страницы, вот такой вариант парсинга страницы это танцы с бубном которые выводят на ричтекст бокс вот такие каракули.

Сам метод парса html с HttpWebreq\res
StreamReader sr = new StreamReader(myHttpWebResponse.GetResponseStream() );
string html = "";
html = sr.ReadToEnd();
html = HttpUtility.UrlEncode(html);

А вот и каракули которые добыты методом выше.
[Ссылки могут видеть только зарегистрированные пользователи. ]

Итоги:
У WebBrowser есть методы которые выводят html страницы несмотря на то что в FIddler этот html отображаеться как кусок гов**.У HttpWebRes\req нету никаких встроенных методов для вывода html, а танцы с бубном приводят к результату скриншотом выше.

Хотелось бы услишать ваши рассуждения\советы(может кто нибудь сталкивалися и находил решения)

Спасибо.

P.S. если кто не понял, тот бред что на первом скриншоте был выведен на RichTextBox, и он стал еще более
________________
Фарм кредитов WoT
http://zhyk.ru/forum/showthread.php?t=880081

Последний раз редактировалось малина; 24.06.2014 в 20:24. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 25.06.2014, 17:53   #4
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

малина, с каких это пор HttpWebRequest не может получить html код странички?
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 25.06.2014, 18:43   #5
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Код:
html = HttpUtility.UrlEncode(html);
Аплодирую стоя, браво. Можете забрать свою премию Дарвина, заслужили
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 25.06.2014, 20:24   #6
 Разведчик
Аватар для малина
 
малина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слуху
Регистрация: 20.03.2011
Сообщений: 20
Популярность: 1466
Сказал(а) спасибо: 427
Поблагодарили 57 раз(а) в 42 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Цитата:
Сообщение от NickiteeПосмотреть сообщение
малина, с каких это пор HttpWebRequest не может получить html код странички?

Дай мне пожалуйста "нормальный метод", а не танцы с бубном(стриридер) впоследствии которого на ричтекст бокс выводиться весь тот бред из Fiddler.

Добавлено через 2 минуты
Цитата:
Сообщение от YukikazeПосмотреть сообщение
Код:
html = HttpUtility.UrlEncode(html);
Аплодирую стоя, браво. Можете забрать свою премию Дарвина, заслужили

Это сарказм?
________________
Фарм кредитов WoT
http://zhyk.ru/forum/showthread.php?t=880081

Последний раз редактировалось малина; 25.06.2014 в 20:27. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 25.06.2014, 21:12   #7
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Цитата:
Это сарказм?

Да нет, же, что вы!
Ладно, дам подсказку, метод называется [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], эти два слова объясняют суть "бреда" который вы получаете.

ЗЫ Уж не знаю, что страшнее, плохой код или плохие кодеры?
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 25.06.2014, 21:32   #8
 Разведчик
Аватар для малина
 
малина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слухумалина у всех на слуху
Регистрация: 20.03.2011
Сообщений: 20
Популярность: 1466
Сказал(а) спасибо: 427
Поблагодарили 57 раз(а) в 42 сообщениях
 
По умолчанию Re: Как достать session id с куков C# WinForms

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Да нет, же, что вы!
Ладно, дам подсказку, метод называется [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], эти два слова объясняют суть "бреда" который вы получаете.

ЗЫ Уж не знаю, что страшнее, плохой код или плохие кодеры?



Уловил суть, в общем авторизация успешно пройдена с помощью одного человека, вскоре напишу статейку об авторизации на ЯД.
________________
Фарм кредитов WoT
http://zhyk.ru/forum/showthread.php?t=880081
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Создаем свой внешний вид окна (WinForms). C# version Kitsune C# 11 08.05.2016 04:19
DotNetBar - набор для WinForms =TONIK= C# 2 28.07.2013 21:55
[Статья] Возвращение к старому стилю WinForms megweg C# 0 31.12.2011 20:30
[Руководство] C# WinForms закругленные углы Hermein C# 0 26.07.2011 05:07

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 13:04.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net