Взаимодействие с сайтом через http - C#

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

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

Доброго времени суток. Разбираюсь с C# и прочим потихоньку, и делаю себе приложение для игрухи, дабы не пользоваться браузером при просмотре информации об аккаунте. Проблема в том, что после того, как я авторизовался и отсылаю запрос сервер меня не узнаёт, т.е. я где-то накосячил. Помогите разобраться
Листинг программы
  1. public static string glCookies;
  2. private void POST(string Referer,string Url, string Data, string Host)
  3. {
  4. System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
  5. myHttpWebRequest.Method = "POST";
  6. myHttpWebRequest.Host = Host;
  7. myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0";
  8. myHttpWebRequest.Accept = "*/*";
  9. myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
  10. myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
  11. myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  12. myHttpWebRequest.Referer = Referer;
  13. myHttpWebRequest.Headers.Add("X-Compress", "1");
  14. myHttpWebRequest.Headers.Add("Proxy-Authorization", "cb9338bf7556a03329a4e1b65deabd97861aec6cf03c029597b619748da5e030784c57cc949adc24");
  15. // передаем куки, полученные в предыдущем запросе
  16. if (!String.IsNullOrEmpty(glCookies))
  17. {
  18. myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, glCookies);
  19. }
  20. byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
  21. myHttpWebRequest.ContentLength = sentData.Length;
  22. System.IO.Stream sendStream = myHttpWebRequest.GetRequestStream();
  23. sendStream.Write(sentData, 0, sentData.Length);
  24. sendStream.Close();
  25. //выполняем запрос
  26. System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
  27. //получаем куки и пишем в глобальную переменную glCookies
  28. if (!String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]))
  29. {
  30. glCookies = myHttpWebResponse.Headers["Set-Cookie"];
  31. }
  32. System.IO.StreamReader sr = new System.IO.StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));
  33. //Кодировка указывается в зависимости от кодировки ответа сервера
  34. Char[] read = new Char[256];
  35. int count = sr.Read(read, 0, 256);
  36. string Out = String.Empty;
  37. while (count > 0)
  38. {
  39. String str = new String(read, 0, count);
  40. Out += str;
  41. count = sr.Read(read, 0, 256);
  42. }
  43. }
  44. private void GET(string Referer, string Url, string Host, string Data)
  45. {
  46. // System.Net.WebRequest myHttpWebRequest = (System.Net.WebRequest)System.Net.WebRequest.Create(Url);
  47. System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
  48. // System.Net.WebResponse myHttpWebResponse = myHttpWebRequest.GetResponse();
  49. myHttpWebRequest.Host = Host;
  50. myHttpWebRequest.Method = "GET";
  51. myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0";
  52. myHttpWebRequest.Accept = "*/*";
  53. myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
  54. //myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
  55. myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  56. myHttpWebRequest.Referer = Referer;
  57. myHttpWebRequest.Headers.Add("X-Compress", "1");
  58. myHttpWebRequest.Headers.Add("Proxy-Authorization", "cb9338bf7556a03329a4e1b65deabd97861aec6cf03c029597b619748da5e030784c57cc949adc24");
  59. if (!String.IsNullOrEmpty(glCookies))
  60. {
  61. myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, glCookies);
  62. }
  63. System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
  64. if (!String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]))
  65. {
  66. glCookies = myHttpWebResponse.Headers["Set-Cookie"];
  67. }
  68. System.IO.Stream stream = myHttpWebResponse.GetResponseStream();
  69. System.IO.StreamReader sr = new System.IO.StreamReader(stream);
  70. string Out = sr.ReadToEnd();
  71. sr.Close();
  72. }
  73. private void button1_Click(object sender, EventArgs e)
  74. {
  75. string login = "login";
  76. string passwd = "password";
  77. //тут мы авторизуемся
  78. GET("", "http://www.test.com/site/logIn", "www.test.com", "");
  79. POST("http://www.test.com/site/logIn", "http://www.test.com/site/doLogIn", "&login="+login+"&password="+passwd+"&redirection=&isBoxStyle=", "www.test.com");
  80. GET("http://www.test.com/site/logIn", "http://www.test.com/jeu/?identification=1&redirectionMobile=yes", "www.test.com", "");
  81. GET("http://www.test.com/jeu/?identification=1&redirectionMobile=yes", "http://www.test.com/jeu/", "www.test.com", "");
  82. //делаем что-то на странице
  83. POST("http://www.test.com/eval/?elev=all-noses", "http://www.test.com/eval/searchnose","go=1", "www.test.com");
  84. string token = "1e4eb3eb2ce7a4882c4295761d78384b";
  85. GET("http://www.test.com/eval/?elev=all-noses", "http://www.test.com/eval/ahh?id=33674008", "www.test.com", "");
  86. POST("http://www.test.com/eval/ahh?id=33674008", "http://www.test.com/eval/doEatTreat", "&csrf_token="+token+"&id=33674008&friandise=cary", "www.test.com");
  87. }
Проблема решена - сам же нужные куки затирал, перезаписывая переменную

Решение задачи: «Взаимодействие с сайтом через http»

textual
Листинг программы
  1. private async void Update()
  2. {
  3.     var http = new HttpClient() { BaseAddress = new Uri("https://vk.com/") };
  4.     HttpResponseMessage response = await httpClient.GetAsync("dev");
  5. }

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут