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);
}
}
Своеобразная авторизация на C#
Есть кнопка в форме, при нажатии на которую происходит авторизация, но она проходит только в том случае, если в IE висит сайт, на котором авторизовались. То есть C# не посылает пост запрос на авторизацию, он просто "подглянул" в IE, увидел, что там пользователь авторизован и авторизовался у себя так, что может точно так же работать с сайтом.
Цитата: Quiet as ice
реально ли сделать такое:
Реально, надо только у запущенного IE вытянуть куки
вытащил, а далее их просто отправлять с post запросом или как? можно пожалуйста конкретнее
Цитата: Quiet as ice
вытащил, а далее их просто отправлять с post запросом или как? можно пожалуйста конкретнее
или с постом или с гетом, в зависимости что надо в данный момент... конкретнее что? код написать?
отправил гет запрос с куками на страницу, которая доступна после авторизации, запрос не прошел. В txt файле куков, куда их кидает ИЕ, не все параметры, может в этом проблема?
Код:
Вот еще что, param1 в блокноте, то есть в куках кириллицей, а передается спец. символами и цифрами :(
надо найти окно с браузером IE и у него получить IHTMLDocument2::cookies
эээ... а как это сделать? толчок в каком направлении нужно делать?
IWebBrowser2, у него берешь IHTMLDocument2::cookies
находишь окно IE, в нем находишь ActiveX контрол самого браузера, приводишь его к виду
был бы очень благодарен
Код:
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) { }
}
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, каким образом теперь можно вытащить куки из определенного окна?