Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Своеобразная авторизация на C#

29K
05 октября 2010 года
Quiet as ice
52 / / 14.10.2008
Доброе время суток, хотелось бы узнать, реально ли сделать такое:

Есть кнопка в форме, при нажатии на которую происходит авторизация, но она проходит только в том случае, если в IE висит сайт, на котором авторизовались. То есть C# не посылает пост запрос на авторизацию, он просто "подглянул" в IE, увидел, что там пользователь авторизован и авторизовался у себя так, что может точно так же работать с сайтом.
11
05 октября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Quiet as ice
реально ли сделать такое:


Реально, надо только у запущенного IE вытянуть куки

29K
05 октября 2010 года
Quiet as ice
52 / / 14.10.2008
вытащил, а далее их просто отправлять с post запросом или как? можно пожалуйста конкретнее
11
05 октября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Quiet as ice
вытащил, а далее их просто отправлять с post запросом или как? можно пожалуйста конкретнее


или с постом или с гетом, в зависимости что надо в данный момент... конкретнее что? код написать?

29K
05 октября 2010 года
Quiet as ice
52 / / 14.10.2008
отправил гет запрос с куками на страницу, которая доступна после авторизации, запрос не прошел. В txt файле куков, куда их кидает ИЕ, не все параметры, может в этом проблема?
29K
05 октября 2010 года
Quiet as ice
52 / / 14.10.2008
Вот код, может что-то не так написал?

Код:
string pathIE = Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
            String[] pathIEDir = Directory.GetFileSystemEntries(pathIE);
            String[] filepathIECookies;
            for (int i = 0; i < pathIEDir.Length; i++)
            {
                filepathIECookies = pathIEDir.Split(new char[] { '@', '[' });
                if (filepathIECookies.Length > 1 && filepathIECookies[1].Equals("site"))
                {
                    pathIE = pathIEDir;
                    break;
                }
            }
            string InputStrIE;
            using (StreamReader reader = new StreamReader(pathIE, System.Text.Encoding.GetEncoding(1251)))
            {
                InputStrIE = reader.ReadToEnd();
                Match battleIE = Regex.Match(InputStrIE, @"param1\n(.*)\n");
                string rez = Regex.Replace(battleIE.ToString(), "param1\n", "param1=");
                Match cityIE = Regex.Match(InputStrIE, @"\nparam2\n(.*)\n");
                string rez1 = Regex.Replace(cityIE.ToString(), "\nparam2\n", "; param2=");
                Match dgIE = Regex.Match(InputStrIE, @"\nparam3\n(.*)\n");
                string rez2 = Regex.Replace(dgIE.ToString(), "\nparam3\n", "; param3=");
                InputStrIE = rez + rez1 + rez2;
                InputStrIE = Regex.Replace(InputStrIE, "\n", "");
                MessageBox.Show(InputStrIE);

            }
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://somesite.ru/url.pl");
            myHttpWebRequest.Method = "GET";
            myHttpWebRequest.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/msword, */*";
            myHttpWebRequest.Headers.Add("Accept-Language", "ru");
            myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
            myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; WebMoney Advisor; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; AskTB5.6; GreenBrowser";
            // передаем cookie
            if (!String.IsNullOrEmpty(InputStrIE)) myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, InputStrIE);

            // ставим False, чтобы при получении кода 302 не делать
            // автоматического перенаправления
            myHttpWebRequest.AllowAutoRedirect = false;
            // делаем запрос
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            if (myHttpWebResponse != null && myHttpWebResponse.StatusCode == HttpStatusCode.OK)
            {
                Stream stream = myHttpWebResponse.GetResponseStream();
                using (StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding(1251)))
                {
                    string sHTML = reader.ReadToEnd();
                    MessageBox.Show(sHTML);
                }
            }


Вот еще что, param1 в блокноте, то есть в куках кириллицей, а передается спец. символами и цифрами :(
11
06 октября 2010 года
oxotnik333
2.9K / / 03.08.2007
надо найти окно с браузером IE и у него получить IHTMLDocument2::cookies
29K
06 октября 2010 года
Quiet as ice
52 / / 14.10.2008
эээ... а как это сделать? толчок в каком направлении нужно делать?
11
06 октября 2010 года
oxotnik333
2.9K / / 03.08.2007
находишь окно IE, в нем находишь ActiveX контрол самого браузера, приводишь его к виду IWebBrowser2, у него берешь IHTMLDocument2::cookies
29K
06 октября 2010 года
Quiet as ice
52 / / 14.10.2008
а литературу не подскажешь, где об этом можно почитать или ссылочку на МСДН?

был бы очень благодарен
29K
07 октября 2010 года
Quiet as ice
52 / / 14.10.2008
Код:
List<InternetExplorer> ieList = new List<InternetExplorer>();
            ShellWindows _swin = new ShellWindows();
            foreach (SHDocVw.InternetExplorer br in _swin)
            {
                try
                {
                    if (br.Path == "C:\\Program Files\\Internet Explorer\\")
                    {
                        ieList.Add(br);
                    }
                }
                catch (Exception) { }
            }


Вот в ieList у меня хранятся все активные окна IE, каким образом теперь можно вытащить куки из определенного окна?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог