C# POST запрос, отправляются не все cookies

Узнай цену своей работы

Формулировка задачи:

Всем привет. Я в тупике Сайт авито, отправляю первый запрос GET чтобы получить куки с сайта для дальнейшего использования
        CookieContainer container = new CookieContainer();
        private void get_http()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.avito.ru");
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0";
            request.CookieContainer = container;
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
            container = request.CookieContainer;
            resp.Close();
            sr.Close();
        }
Получаю куки, сохраняю в контейнер. Всё хорошо, точно также как в фидлере. (рис.1) Ещё пару раз отправляю запрос с куками всё также совпадает с фидлером. (рис.2) Далее мне нужно отправить POST запрос с уже имеющимися куками и тут есть проблема так отправляю кодом, ответ приходит но не совсем такой как должен быть
        public void PostMethod(string postedData, string postUrl)
        {
            try
            {
                UTF8Encoding encoding = new UTF8Encoding();
                Byte[] Data_ = encoding.GetBytes(postedData);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(postUrl);
                request.Method = "POST";
                request.Accept = "*/*";
                request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0";
                request.Referer = "http://www.avito.ru/ufa/kvartiry/1-k_kvartira_37_m_4_et._263172573";
                request.CookieContainer = container;
                request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
 
                Stream newStream = request.GetRequestStream();
                newStream.Write(Data_, 0, Data_.Length);
                newStream.Close();
 
                WebResponse response = request.GetResponse();
                newStream = response.GetResponseStream();
 
               StreamReader sr = new StreamReader(newStream);
                MessageBox.Show(sr.ReadToEnd());
 
                sr.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("error: " + ex.Message);
            }
        }
На рисунке 3 показано как кодом отправляется, на рисунке 4 показано как отправляется мозилой.

1.

Самый главный вопрос, почему браузером отправляется намного больше кукисов? И откуда они берутся, а именно __gads __utma= __utmb= __utmc= __utmz=

2.

Как добавить к запросу вот это

"Accept-Encoding: gzip, deflate"

и это

"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"

3.

Если приходит ответ от сайта не с ошибкой но не тот который приходит на браузер то это нормально или пост запрос не обработан там как нужно?

Решение задачи: «C# POST запрос, отправляются не все cookies»

textual
Листинг программы
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.545 из 5