C# POST запрос, отправляются не все cookies
Формулировка задачи:
Всем привет.
Я в тупике
Сайт авито, отправляю первый запрос GET чтобы получить куки с сайта для дальнейшего использования
Получаю куки, сохраняю в контейнер. Всё хорошо, точно также как в фидлере. (рис.1) Ещё пару раз отправляю запрос с куками всё также совпадает с фидлером. (рис.2)
Далее мне нужно отправить POST запрос с уже имеющимися куками и тут есть проблема
так отправляю кодом, ответ приходит но не совсем такой как должен быть
На рисунке 3 показано как кодом отправляется, на рисунке 4 показано как отправляется мозилой.
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(); }
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); } }
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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д