вот что шлю POST http://login.vk.com/?act=login&to=&from_host=m.vkontakte.ru&pda=1 HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 User-Agent: Mozilla/5.0 Firefox/3.6.8 Referer: http://m.vkontakte.ru/login?op=slogin Host: login.vk.com Content-Length: 41 Accept-Encoding: gzip Connection: Keep-Alive email=мыло%40mail.ru&pass=myvalidpass вот и в итоге мя редиректит на http://m.vkontakte.ru/login?m=1&email= т.е. логин:пасс не верный пишу в поток постпараметры в кодировке cp1251 сорри за нубство и еще одно в этом пост запросе Content-Type: application/x-www-form-urlencoded нету а в запросе к страничке на которую редиректит он появляется@_@
j-prof ты специально так пишешь что тебя трудно понять, или оно само так выходит? А по сабжу ну так добавь Content-Type: application/x-www-form-urlencoded, сервак не поймет что ты ему шлешь.
ура ура ура я добавлял в коде но в том месте почемут не добавлялось ща в другом месте добавил терь все ок Ы ЗЫ все успешно бля еслиб знал что так просто то раньшеб занялся щикарно
так не интересно по хорошему над вообще свой код писать а тут его даже не глянешь вот кому интересно Code: public void LogIn(string login, string pass) { string pattern = "<input type='hidden' name='s' value='(?<cook>.*)' />";//регулярка для выцепления кук remixsid string remixsid = string.Empty; Request r = new Request("http://login.vk.com/?act=login&to=&from_host=m.vkontakte.ru&pda=1"); //устанавливаем пост параметры r["email"] = login; r["pass"] = pass; r.Method = ReqType.POST; r.AutoRedirect = false; r.Refferer = "http://m.vkontakte.ru/login?op=slogin"; r.GetResp(true); remixsid = Regex.Match(r.Page, pattern).Groups["cook"].Value;//собственно выцепляем куки из странички;) Cookies = string.Format("remixchk=5; remixsid={0}", remixsid);//вот и все с этими куками терь можно спокойно гулять по вк;) } а вот мой НЕДОПИСАНЫЙ класс Request Code: enum ReqType : byte { POST, GET } sealed class Request { #region поля private Object locker = new object(); public bool SynsCookie = true; private Encoding enc = Encoding.GetEncoding(1251); public string cookies = string.Empty; public string Page { get; private set; } private HttpWebRequest req; private HttpWebResponse resp; private string querystr = string.Empty; private Dictionary<string, string> query = new Dictionary<string, string>(); #endregion #region свойства public string this[string name] { get { return query[name]; } set { if (query.ContainsKey(name)) query[name] = value; else query.Add(name, value); } } public string Uri { get { return req.Address.AbsolutePath; } set { ReqInit(value); } } public ReqType Method { get { return (ReqType)Enum.Parse(typeof(ReqType),req.Method); } set { req.Method = value.ToString(); req.ContentType = "application/x-www-form-urlencoded"; } } public string Proxy { set { req.Proxy = new WebProxy(value); } } public bool AutoRedirect { get { return req.AllowAutoRedirect; } set { req.AllowAutoRedirect = value; } } public string Refferer { get { return req.Referer; } set { req.Referer = "http://m.vkontakte.ru/login?op=slogin"; } } #endregion public Request(string url) { ReqInit(url); } public HttpWebResponse GetResp(bool getpage) { if (cookies != string.Empty) req.Headers[HttpRequestHeader.Cookie] = cookies; if (Method == ReqType.POST) { byte[] buff = enc.GetBytes(LoadQuery()); req.ContentLength = buff.Length; req.GetRequestStream().Write(buff,0,buff.Length); } req.Expect = null; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if(!getpage) return resp; using (StreamReader reader = new StreamReader(resp.GetResponseStream(), enc)) { Page = reader.ReadToEnd(); } if(SynsCookie) cookies = resp.Headers[HttpResponseHeader.SetCookie]; return resp; } public string LoadQuery() { foreach (KeyValuePair<string, string> kv in query) { querystr += string.Format("&{0}={1}", kv.Key, kv.Value); } querystr = querystr.Remove(0, 1); return querystr; } private void ReqInit(string url) { req = (HttpWebRequest)WebRequest.Create(url); req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; req.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); req.Headers.Add(HttpRequestHeader.AcceptCharset, "windows-1251,utf-8;q=0.7,*;q=0.7"); req.ServicePoint.Expect100Continue = false; req.Headers.Add(HttpRequestHeader.KeepAlive, "115"); req.UserAgent = "Mozilla/5.0 Firefox/3.6.8"; req.AutomaticDecompression = DecompressionMethods.GZip; } }
вот ток помогите спарсить друзей никогда не был силён в написании регулярок но вроде все правильно но нифига не пашет почемут Code: public List<string> ParseFrends() { List<string> frends = null; string pattern = "<div class=\"labeled\"><a href=\"(?<id>.*)\" onclick=\"return nav.go(this, event);\">(.*)</a></div>"; Request r = new Request("http://vkontakte.ru/friends"); r.cookies = Cookies; r.GetResp(true); MatchCollection mc = Regex.Matches(r.Page, pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); frends = new List<string>(mc.Count); foreach (Match m in mc) { frends.Add(string.Format("http://vkontakte.ru{0}", m.Groups["id"].Value)); } return frends; }