Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2012, 13:24   #21
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от masax Посмотреть сообщение
а кто сказал что они не передаются?
от того что ты авторизоваться не можешь?
проверь еще кодировку, мб на сайте UTF-8
поля логин и пароль остаются пустыми.
на сайте кодировка UTF-8
Может я передаю как то не так?
qwq вне форума Ответить с цитированием
Старый 03.12.2012, 12:31   #22
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Народ, ситуация такая: при таком запросе
Код:
webreq = (HttpWebRequest)HttpWebRequest.Create("http://uh.ru/login/");
            webreq.Proxy = new WebProxy("127.0.0.1", 8888);
            webreq.Method = "POST";
            webreq.AllowAutoRedirect = true;
            webreq.Headers.Add("Cache-Control", "max-age=0");
            webreq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            webreq.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            webreq.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            webreq.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            webreq.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.33 (KHTML, like Gecko) Chrome/13.0.755.0 Safari/534.33";
            //webreq2.Headers.Add("capauh =", "1");
            webreq.CookieContainer = new CookieContainer();
            //webreq.CookieContainer.Add(webresp.Cookies);
            //webreq2.Headers.Add("Content-Length", "69");            
            webreq.ContentType = "application/x-www-form-urlencoded";
            webreq.Headers.Add("Origin", "http://uh.ru");
            webreq.Referer = "http://uh.ru/login/";


            try
            {
                if (webreq.CookieContainer.Count == 0)
                {
                    byte[] query = System.Text.Encoding.ASCII.GetBytes(string.Format("&login=логин&password=пароль"));
                    webreq.ContentLength = query.Length;

                    Stream stre = webreq.GetRequestStream();
                    stre.Write(query, 0, query.Length);
                    stre.Close();
                }
                using (HttpWebResponse webresp2 = (HttpWebResponse)webreq.GetResponse())
                {
                    webresp2.Cookies = webreq.CookieContainer.GetCookies(webreq.RequestUri);
                    //webresp2.Cookies = webreq.CookieContainer.Add(webresp.Cookies);
                    using (Stream st = webresp2.GetResponseStream())
                    {
                        using (StreamReader read = new StreamReader(st))
                        {
                            //return 
                                richTextBox1.Text = read.ReadToEnd();
                        }
                    }
                }
            }
            catch (Exception)
            {
              //  return null;
            }
            
            //StreamReader stream2 = new StreamReader(webresp2.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            //richTextBox1.Text = stream2.ReadToEnd();
вроде передает все те же заголовки как и при работе через браузер. Но ситуация такая, что логин и пароль не приходят(поля остаются пустыми).

Вот работа скиффера
при работе через браузер

и через программу

Сниффер Fiddler2
qwq вне форума Ответить с цитированием
Старый 03.12.2012, 14:59   #23
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

нашел ошибку в кодировке
byte[] query = System.Text.Encoding.ASCII.GetBytes (string.Format("&login=логин&passwo rd=пароль"));
а надо
byte[] query = System.Text.Encoding.UTF8.GetBytes( string.Format("&login=логин&passwor d=пароль"));
но ситуация не поменялась

И еще, сниффер в транспорте показывает Expect: 100-continue
подскажите что это?

Последний раз редактировалось qwq; 03.12.2012 в 15:05.
qwq вне форума Ответить с цитированием
Старый 03.12.2012, 15:33   #24
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Народ, спасибо за все. Эта проблема решена. Без Вас не получилось бы.

Вот что я сделал
Код:
webreq = (HttpWebRequest)HttpWebRequest.Create("http://uh.ru/login/");
            webreq.Proxy = new WebProxy("127.0.0.1", 8888);
            webreq.Method = "POST";
            webreq.AllowAutoRedirect = true;
            webreq.Headers.Add("Cache-Control", "max-age=0");
            webreq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            webreq.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            webreq.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            webreq.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            webreq.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.33 (KHTML, like Gecko) Chrome/13.0.755.0 Safari/534.33";            
            webreq.CookieContainer = new CookieContainer();
            webreq.ServicePoint.Expect100Continue = false;
            //webreq.CookieContainer.Add(webresp.Cookies);
            //webreq2.Headers.Add("Content-Length", "69");            
            webreq.ContentType = "application/x-www-form-urlencoded";
            webreq.Headers.Add("Origin", "http://uh.ru");
            webreq.Referer = "http://uh.ru/login/";

            byte[] query = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("login=логин&password=пароль&enter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8");
            webreq.ContentLength = query.Length;
            webreq.GetRequestStream().Write(query, 0, query.Length);
            
            webresp = (HttpWebResponse)webreq.GetResponse();
            webresp.Cookies = webreq.CookieContainer.GetCookies(webreq.RequestUri);
            stream = new StreamReader(webresp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            richTextBox1.Text = stream.ReadToEnd();
Теперь нужна помощь с шагом номер 2.
Получение капчи. Что и куда передавать?
Буду очень признателен.
qwq вне форума Ответить с цитированием
Старый 04.12.2012, 16:20   #25
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Народ, как мне созранить изображение?
тут я его запрашиваю
Код:
webreq = (HttpWebRequest)HttpWebRequest.Create("http://uh.ru/dev/captcha/idx.php?"+sesid);
            webreq.Proxy = new WebProxy("127.0.0.1", 8888);
            webreq.Accept = "*/*";
            webreq.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            webreq.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            webreq.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            webreq.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.33 (KHTML, like Gecko) Chrome/13.0.755.0 Safari/534.33";
            webreq.CookieContainer = new CookieContainer();
            webreq.Referer = "http://uh.ru/login/";

            webresp = (HttpWebResponse)webreq.GetResponse();
            stream = new StreamReader(webresp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            richTextBox1.Text = stream.ReadToEnd();
а как сохранить в голову не приходит
qwq вне форума Ответить с цитированием
Старый 04.12.2012, 17:08   #26
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

так не прокатывает
Код:
Image image = Image.FromStream(stream);
            image.Save("output.jpg", ImageFormat.Jpeg);
qwq вне форума Ответить с цитированием
Старый 05.12.2012, 13:09   #27
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Народ, тут у меня вот еще какая проблема. При Post запросе не передаются куки, сервер в ответ присылает свои и капча уже другая
вот код
Код:
webreq = (HttpWebRequest)HttpWebRequest.Create("http://uh.ru/login/");
            webreq.Proxy = new WebProxy("127.0.0.1", 8888);
            webreq.Method = "POST";
            webreq.AllowAutoRedirect = true;
            webreq.Headers.Add("Cache-Control", "max-age=0");
            webreq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            webreq.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            webreq.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            webreq.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            webreq.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.33 (KHTML, like Gecko) Chrome/13.0.755.0 Safari/534.33";            
            webreq.CookieContainer = new CookieContainer();
            webreq.ServicePoint.Expect100Continue = false;
            //webreq.CookieContainer.Add(webresp.Cookies);            
            webreq.ContentType = "application/x-www-form-urlencoded";
            webreq.Headers.Add("Origin", "http://uh.ru");
            webreq.Referer = "http://uh.ru/login/";

            byte[] query = System.Text.Encoding.GetEncoding("UTF-8").GetBytes("login=логин&password=пароль&enter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8");
            webreq.ContentLength = query.Length;
            webreq.GetRequestStream().Write(query, 0, query.Length);
            //webreq.CookieContainer.Add(webresp.Cookies);

            webresp = (HttpWebResponse)webreq.GetResponse();
            //webresp.Cookies = webreq.CookieContainer.GetCookies(webreq.RequestUri);
            stream = new StreamReader(webresp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            richTextBox1.Text = stream.ReadToEnd();



            //Set-Cookie: PHPSESSID=b6a92105fe4a73556b25b1d37eef3f0f;
            webreq = (HttpWebRequest)HttpWebRequest.Create("http://uh.ru/dev/captcha/idx.php?"+sesid);
            webreq.Proxy = new WebProxy("127.0.0.1", 8888);
            webreq.Accept = "*/*";
            webreq.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
            webreq.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            webreq.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            webreq.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.33 (KHTML, like Gecko) Chrome/13.0.755.0 Safari/534.33";
            webreq.CookieContainer = new CookieContainer();
            webreq.CookieContainer.Add(webresp.Cookies);
            webreq.Referer = "http://uh.ru/login/";

            webresp = (HttpWebResponse)webreq.GetResponse();
            stream = new StreamReader(webresp.GetResponseStream());
            stream = new StreamReader(webresp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            richTextBox1.Text = stream.ReadToEnd();
            

           /* Image image = Image.FromStream(stream);
            image.Save("output.jpg", ImageFormat.Jpeg);*/
подскажите где я ошибаюсь
qwq вне форума Ответить с цитированием
Старый 09.12.2012, 19:17   #28
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Решено. Спасибо всем
qwq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет повторной авторизации на сайте -MagicAlex- PHP 9 22.10.2012 05:42
Регистрация на сайте. Проблемы с капчей igrok111 Общие вопросы Delphi 1 22.07.2012 03:58
написать процедуру авторизации на сайте art-programs Фриланс 0 25.03.2011 17:32
Комплексный вопрос на тему авторизации на сайте и подтверждению сертификата Anatol_rus Работа с сетью в Delphi 13 15.10.2009 15:44
Проблема авторизации на сайте Terikon Работа с сетью в Delphi 0 17.03.2009 16:50