Получить токен авторизации, используя почтовый запрос - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь получить токен авторизации запроса, отправив веб-запрос на URL.API ожидает имя пользователя / пароль в качестве учетных данных в полезной нагрузке form-data.

Когда я выбираю опцию входа в браузере, сетевые журналы показывают запрос GET с HTML в качестве ответа, сопровождаемый запросом POST, который возвращает данные формы с именем пользователя / паролеми запрос токена в полезной нагрузке.

Network log from browser..

Пытаясь смоделировать поток с помощью webrequest, я делаю простой запрос post, как показано ниже:

public string HttpPost(string url, string post, string refer = "")
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            // request.CookieContainer = cJar;
            request.UserAgent = UserAgent;
            request.KeepAlive = false;
            request.Method = "POST";
            request.Referer = refer;

            byte[] postBytes = Encoding.ASCII.GetBytes(post);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = postBytes.Length;

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());

            return sr.ReadToEnd();
        }

Однако этот запрос возвращает только текстовую / HTML-разметку страницы, как это делает первая часть запроса браузера.Как заставить его запустить последующий POST для получения токена из конечной точки?

РЕДАКТИРОВАТЬ 1:

Вот первый GET Запрос:

enter image description here

1 Ответ

0 голосов
/ 02 июня 2018

Токен является токеном CSRF, вам нужно найти форму входа в html-ответ, полученный при первоначальном запросе на получение, а также убедиться, что вы храните файлы cookie, установленные в этом ответе.

Затем вам нужно будет найти в ответе html скрытый входной параметр с именем 'token' рядом с полями ввода username и pw и использовать значение этого элемента для составления вашего почтового запроса.

Это можно сделать программно с помощью регулярных выражений или пакета htmlagility, чтобы извлечь этот токен

...