Как сделать post авторизацию?

Рейтинг: 0Ответов: 1Опубликовано: 23.02.2015
string token = string.Empty;

string GenLink = "http://ask.fm/";
HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(GenLink);
myRequest.Method = "GET";
myRequest.Timeout = 15000;
myRequest.AllowAutoRedirect = true;
myRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader Reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string page = Reader.ReadToEnd();
Match res = Regex.Match(page, "var AUTH_TOKEN = \"(.*)\";");
token = res.Groups[1].ToString();
Reader.Close();
return token;

HttpWebRequest POST = (HttpWebRequest)HttpWebRequest.Create("http://ask.fm/session");
POST.Method = "POST";
POST.Timeout = 15000;
POST.AllowAutoRedirect = true;
POST.ContentType = "application/x-www-form-urlencoded";
string data = "authenticity_token="+token+"&login=vk_groups&password=363534qwa&follow=&like=&back=&authenticity_token="+token;
byte[] byteData = Encoding.UTF8.GetBytes(data);
POST.ContentLength = byteData.Length;
Stream stream = POST.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
string response = new StreamReader(POST.GetResponse().GetResponseStream()).ReadToEnd();

Пытаюсь сделать вот так, но не получается ничего. Вот что отправляется:

authenticity_token=WWRqTElVSCMg4LvjrQVq%2BgjmDZ%2BjbVcM3LBPTGZHhLQ%3D&login=volodiaklicko2&password=&follow=&like=&back=&authenticity_token=WWRqTElVSCMg4LvjrQVq%2BgjmDZ%2BjbVcM3LBPTGZHhLQ%3D ----

Ответы

▲ 1

так, подождите. Я посмотрел повнимательнее ваш код, и тут есть несколько вопросов.

Вы там пишете два запроса, причем первый из них вообще не несет в себе никакой логики авторизации - вы просто обращаетесь к этому ask.fm. В ответе вы получаете html-код главной страницы сайта. Затем с помощью регулярки выдергиваете из этого кода некую переменную, называнную AUTH_TOKEN (он просто вшит в текст js скрипта прямым текстом). Я не знаю, что это за токен, но в любом случае это не тот токен авторизации, который вы можете получить при корректной авторизации, это всего лишь кусо js-скрипта, которому вряд ли можно доверять. Поэтому то, что вы получаете в итоге у вас и не работает.

Затем вы выполняете еще один запрос, и в нем тоже очень странная логика. Вы запрашиваете код страницы http://ask.fm/session и в ответе получаете его, как и в случае с педыдущим запросом - со всеми тэгами, скриптами и прочим. Однако и этот запрос тоже не несет в себе логики авторизации - вы просто получаете содержимое страницы и пишете его в поток.

Если у этого сайта есть api, как например у многих соцсетей, то воспользуйтесь им. Если такового нет, то вам нужно шаманить с парсингом страниц, впрочем, это довольно муторное и ненадежное занятие