Авторизация на сайте с jsp
От: zoom-zoom  
Дата: 16.11.16 09:53
Оценка:
День добрый!
Есть сайт https://www.portfolio123.com/, хочу тянуть данные из него, но не получается авторизоваться из собственного приложения.
Исследую запрос через утилиты браузеров, которые отображают передачу моих "ручных" запросов POST.
Запрос отправляется такой: "LoginUsername=мояпочта@почта.ru&LoginPassword=пароль&LoginRememberMe=1&Login=Login&url=index.jsp"
Как представлять index.jsp, остается загадкой.
                //Создаем запрос
                HttpWebResponse result = null;
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://www.portfolio123.com/login.jsp?url=");
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                byte[] SomeBytes = null;
                string FormParams = "LoginUsername=мояпочта@почта.ru&LoginPassword=пароль&LoginRememberMe=1&Login=Login&url=index.jsp";
                SomeBytes = Encoding.UTF8.GetBytes(FormParams);
                req.ContentLength = SomeBytes.Length;
                Stream newStream = req.GetRequestStream();
                newStream.Write(SomeBytes, 0, SomeBytes.Length);
                newStream.Close();
                result = (HttpWebResponse)req.GetResponse();

                //Получаем куки
                string[] cookieVal = null;
                if (result.Headers["Set-Cookie"] != null)
                    cookieVal = result.Headers["Set-Cookie"].Split(new char[] { ',' });
                Stream ReceiveStream = result.GetResponseStream();
                Encoding encode = Encoding.GetEncoding("utf-8");
                StreamReader sr = new StreamReader(ReceiveStream, encode);
                string answer = sr.ReadToEnd();
                sr.Close();
                result.Close();
                CookieContainer cookie = new CookieContainer();
                foreach (string cook in cookieVal)
                {
                    string[] cookie1 = cook.Split(new char[] { ';' });
                    cookie.Add(new Cookie(cookie1[0].Split(new char[] { '=' })[0], cookie1[0].Split(new char[] { '=' })[1], cookie1[1].Split(new char[] { '=' })[1], "www.portfolio123.com"));
                }

                //запрос на скачивание нужного нам файлика, используя куки
                string url = "https://www.portfolio123.com/p123/DownloadStockRank?mktUid=4737&ticker=IBM&rankUid=361&rankName=Balanced4";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.CookieContainer = cookie;
                request.Method = "GET";
                request.ContentType = "application/octet-stream;charset=ISO-8859-1";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream ReceiveStream1 = response.GetResponseStream();
                StreamReader sr1 = new StreamReader(ReceiveStream1, encode);
                string html = sr1.ReadToEnd();
                response.Close();


— пример кода, должен делать запрос на авторизацию, получить куки и использовать их для дальнейшей работы, а именно для скачивания файлика. Но в результате, что уже только не перепробовал, одно и то же — получаем страничку html с запросом на авторизацию! полагаю, что авторизация не проходит и дело в index.jsp, но как его готовить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.