Добрый вечер. Только начал осваивать web-программирование на C#. С этим языком был довольно хорошо знаком, но никогда не применял для автоматизации действий в интернете. Пошел по пути наименьшего сопростивления: т.е начал использовать библиотеку ViKing.Engine. Сайт автора очень помог, но самостоятельно никак не могу справиться с авторизацией Яндекса. Т.е авторизоваться получается, но пользоваться Яндексом из-под совего логина совсем не получается. Например: Code: namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string page = VkRequest.Request("http://yandex.ru").Content; string post = string.Format("login=LOGIN&passwd=PASSWORD"); var result = VkRequest.Request("http://passport.yandex.ru/passport?mode=auth&retpath=http%3A%2F%2Fmail.yandex.ru", post); string page22 = VkRequest.Request("http://news.yandex.ru/").Content; textBox2.AppendText(page22); } } } В данном коде я пытался добиться того, чтобы, при загрузке страницы _news.yandex.ru, в правом верхнем углу показывался мой логин, а не слово "вход". Как я понимаю тут нужно передавать куки, но вопрос в том: как можно это сделать? P.S И стоит ли продолжать углубленное изучение данной библиотеки или все-таки стоит переключиться на что-то другое?
авторизация на яше через дополнительные библиотеки? пффф не смеши! максимум - самопальная обертка для классов httpwebrequest и httpwebresponse. а авторизация так: слушаешь снифером какой запрос посылается, через httpwebrequest отсылаешь его, при этом инициализируешь свойство cookiecontainer и предварительно сделав гетзапрос на главную страницу чтоб получить куки
Ну ViKing.Engine - специальная библиотека для web-программирования. Принципе все так и делал, как вы сказали. За cookiecontainer спасибо, попробую.
Code: static void Main(string[] args) { CookieContainer container = new CookieContainer(); string login = "LOGIN"; string password = "PASSWORD"; string temp = Post("https://passport.yandex.ru/passport?mode=auth&retpath=http%3A%2F%2Fmail.yandex.ru", string.Format("login={0}&passwd={1}&twoweeks=yes×tamp={2}", login, password, DateTime.Now.Ticks), true, ref container); temp = Get("http://yandex.ru", ref container); File.WriteAllText("two.html", temp); } private static string Post(string url, string data, bool clearCookie, ref CookieContainer container, WebProxy proxy = null) { string output = null; try { HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); if (clearCookie) WebReq.CookieContainer = new CookieContainer(); else WebReq.CookieContainer = container; byte[] buffer = Encoding.ASCII.GetBytes(data); WebReq.Method = "POST"; WebReq.AllowAutoRedirect = true; WebReq.ContentType = "application/x-www-form-urlencoded"; WebReq.ContentLength = buffer.Length; Stream PostData = WebReq.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); Stream Answer = WebResp.GetResponseStream(); container = WebReq.CookieContainer; StreamReader _Answer = new StreamReader(Answer); output = _Answer.ReadToEnd(); return output.Trim() + "\n"; } catch (Exception ex) { return ex.Message; } }