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

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

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

Доброго времени суток. Разбираюсь с C# и прочим потихоньку, и делаю себе приложение для игрухи, дабы не пользоваться браузером при просмотре информации об аккаунте. Проблема в том, что после того, как я авторизовался и отсылаю запрос сервер меня не узнаёт, т.е. я где-то накосячил. Помогите разобраться
public static string glCookies;
        private void POST(string Referer,string Url, string Data, string Host)
        {
            System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
            myHttpWebRequest.Method = "POST";
            myHttpWebRequest.Host = Host;
            myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0";
            myHttpWebRequest.Accept = "*/*";
            myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            myHttpWebRequest.Referer = Referer;
            myHttpWebRequest.Headers.Add("X-Compress", "1");
            myHttpWebRequest.Headers.Add("Proxy-Authorization", "cb9338bf7556a03329a4e1b65deabd97861aec6cf03c029597b619748da5e030784c57cc949adc24");
            // передаем куки, полученные в предыдущем запросе
 
            if (!String.IsNullOrEmpty(glCookies))
            {
                myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, glCookies);
            }
            byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
            myHttpWebRequest.ContentLength = sentData.Length;
            System.IO.Stream sendStream = myHttpWebRequest.GetRequestStream();
            sendStream.Write(sentData, 0, sentData.Length);
            sendStream.Close();
            //выполняем запрос
            System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
            //получаем куки и пишем в глобальную переменную glCookies
 
            if (!String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]))
            {
                glCookies = myHttpWebResponse.Headers["Set-Cookie"];
            }
            System.IO.StreamReader sr = new System.IO.StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251));
            //Кодировка указывается в зависимости от кодировки ответа сервера
            Char[] read = new Char[256];
            int count = sr.Read(read, 0, 256);
            string Out = String.Empty;
            while (count > 0)
            {
                String str = new String(read, 0, count);
                Out += str;
                count = sr.Read(read, 0, 256);
            }
        }
 
        private void GET(string Referer, string Url, string Host, string Data)
        {
           // System.Net.WebRequest myHttpWebRequest = (System.Net.WebRequest)System.Net.WebRequest.Create(Url);
            System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
           // System.Net.WebResponse myHttpWebResponse = myHttpWebRequest.GetResponse();
            myHttpWebRequest.Host = Host;
            myHttpWebRequest.Method = "GET";
            myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0";
            myHttpWebRequest.Accept = "*/*";
            myHttpWebRequest.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            //myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            myHttpWebRequest.Referer = Referer;
            myHttpWebRequest.Headers.Add("X-Compress", "1");
            myHttpWebRequest.Headers.Add("Proxy-Authorization", "cb9338bf7556a03329a4e1b65deabd97861aec6cf03c029597b619748da5e030784c57cc949adc24");
            
            if (!String.IsNullOrEmpty(glCookies))
            {
                myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, glCookies);
            }
            System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
            if (!String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]))
            {
                glCookies = myHttpWebResponse.Headers["Set-Cookie"];
            }
            System.IO.Stream stream = myHttpWebResponse.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string Out = sr.ReadToEnd();
            sr.Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string login = "login";
            string passwd = "password";
            //тут мы авторизуемся
            GET("", "http://www.test.com/site/logIn", "www.test.com", "");
            POST("http://www.test.com/site/logIn", "http://www.test.com/site/doLogIn", "&login="+login+"&password="+passwd+"&redirection=&isBoxStyle=", "www.test.com");
            GET("http://www.test.com/site/logIn", "http://www.test.com/jeu/?identification=1&redirectionMobile=yes", "www.test.com", "");
            GET("http://www.test.com/jeu/?identification=1&redirectionMobile=yes", "http://www.test.com/jeu/", "www.test.com", "");
            //делаем что-то на странице
            POST("http://www.test.com/eval/?elev=all-noses", "http://www.test.com/eval/searchnose","go=1", "www.test.com");
            string token = "1e4eb3eb2ce7a4882c4295761d78384b";
            GET("http://www.test.com/eval/?elev=all-noses", "http://www.test.com/eval/ahh?id=33674008", "www.test.com", "");
            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");
            
        }
Проблема решена - сам же нужные куки затирал, перезаписывая переменную

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

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

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


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

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

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