Доброго времени суток! Пытаюсь произвести авторизацию на vkontakte.ru, но не выходит, т.к. работа с кукисами не продвигается никак. Сетевой прокси-отладчик fiddler показывает, что ни 1 кукиса не передается серверу контактовскому, в то время как отладчик студии показывает мне что в CookieContainer все ок, куки на месте. Перепробовал по-разному, никак не могу понять в чем дело.
Код:
public static void LogIn(string login, string pass)
{
/////////////////////////////////////////ЗАПРОС 1
HttpWebRequest hwr = (HttpWebRequest) WebRequest.Create("http://vkontakte.ru/login.php");
hwr.Method = "POST";
hwr.ProtocolVersion = HttpVersion.Version10;
hwr.UserAgent = "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.62";
hwr.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1";
hwr.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
hwr.Headers.Add("Accept-Charset", "iso-8859-1, utf-8, utf-16, *;q=0.1");
hwr.Headers.Add("Accept-Encoding", "deflate, gzip, x-gzip, identity, *;q=0");
hwr.Referer = "http://vkontakte.ru";
hwr.ContentType = "application/x-www-form-urlencoded";
hwr.ServicePoint.Expect100Continue = false;
hwr.ContentLength = 18;
CookieContainer cc = new CookieContainer();
hwr.CookieContainer = cc;
StreamWriter sw = new StreamWriter(hwr.GetRequestStream());
sw.Write("op=a_login_attempt");
sw.Close();
HttpWebResponse wr = (HttpWebResponse) hwr.GetResponse();
cc = hwr.CookieContainer;
wr.Close();
/////////////////////////////////////////ЗАПРОС 2
hwr = (HttpWebRequest) WebRequest.Create("http://login.vk.com/?act=login");
hwr.Method = "POST";
hwr.ProtocolVersion = HttpVersion.Version10;
hwr.UserAgent = "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.62";
hwr.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1";
hwr.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
hwr.Headers.Add("Accept-Charset", "iso-8859-1, utf-8, utf-16, *;q=0.1");
hwr.Headers.Add("Accept-Encoding", "deflate, gzip, x-gzip, identity, *;q=0");
hwr.Referer = "http://vkontakte.ru/";
hwr.ContentType = "application/x-www-form-urlencoded";
hwr.ServicePoint.Expect100Continue = false;
hwr.CookieContainer = cc;
//Пишем в поток логин и пасс
sw = new StreamWriter(hwr.GetRequestStream());
sw.Write("email=" + Uri.EscapeDataString(login) + "&pass=" + Uri.EscapeDataString(pass) + "&expire=&vk=&al_test=1");
sw.Close();
//Получили сжатые GZip данные - распаковываем
wr = (HttpWebResponse) hwr.GetResponse();
cc = hwr.CookieContainer;
Stream input = wr.GetResponseStream();
GZipStream gz = new GZipStream(input, CompressionMode.Decompress);
byte[] buffer = new byte[1024];
gz.Read(buffer, 0, 1024);
gz.Close();
gz.Dispose();
wr.Close();
//Достаем код из распакованных данных
string content = ASCIIEncoding.ASCII.GetString(buffer);
Regex rx = new Regex("value='[^']+");
string sid = rx.Match(content).ToString().Remove(0, 7);
/////////////////////////////////////////ЗАПРОС 3
hwr = (HttpWebRequest)
WebRequest.Create("http://vkontakte.ru/login.php");
hwr.Method = "POST";
hwr.ProtocolVersion = HttpVersion.Version10;
hwr.UserAgent = "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.62";
hwr.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1";
hwr.AllowAutoRedirect = true;
hwr.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
hwr.Headers.Add("Accept-Charset", "iso-8859-1, utf-8, utf-16, *;q=0.1");
hwr.Headers.Add("Accept-Encoding", "deflate, gzip, x-gzip, identity, *;q=0");
hwr.Referer = "http://login.vk.com/?act=login";
hwr.ContentType = "application/x-www-form-urlencoded";
hwr.ServicePoint.Expect100Continue = false;
hwr.CookieContainer = cc;
sw = new StreamWriter(hwr.GetRequestStream());
sw.Write("s=" + sid + "&op=slogin&redirect=1&expire=0&to=&al_test=1");
sw.Close();
wr = (HttpWebResponse) hwr.GetResponse();
wr.Close();
}