Нужно авторизоваться на сайте по протоколу https - при помощи WebRequest
и WebResponse
(сама программа на ASP.NET MVC)
HttpWebRequest requestG = (HttpWebRequest)WebRequest.Create("https://ua.baza-broker.com:443");
requestG.AllowAutoRedirect = false;
HttpWebResponse responseG = (HttpWebResponse)requestG.GetResponse();
// responseG.Close();
X509Certificate2 cert = new X509Certificate2(requestG.ServicePoint.Certificate);
#endregion
HttpWebResponse result = null;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://ua.baza-broker.com");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "";
byte[] SomeBytes = null;
string FormParams = "login={здесь_логин}&password={здесь_пароль}";
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();
Stream ReceiveStream = result.GetResponseStream();
Encoding encode = Encoding.GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream, encode);
string answer = sr.ReadToEnd();
sr.Close();
result.Close();
List<string> cookieVal = new List<string>();
CookieContainer contCook = new CookieContainer();
for (int i = 0; i < cookieVal.Count; i++)
{
string strRaw = cookieVal[i].Substring(0, cookieVal[i].IndexOf(";"));
string strName = strRaw.Substring(0, strRaw.IndexOf("="));
string strValue = strRaw.Substring(strRaw.IndexOf("=") + 1, strRaw.Length - strRaw.IndexOf("=") - 1);
Cookie kuk = new Cookie(strName, strValue);
kuk.Path = "/";
kuk.Domain = "ua.baza-broker.com";
contCook.Add(kuk);
}
//--------- Дополнительные куки ---------------------
Cookie kukUL = new Cookie("ul", "211c1e0b83b9c69fa9c4bdede203c1e3");
kukUL.Path = "/";
kukUL.Domain = "ua.baza-broker.com";
kukUL.Expires = DateTime.Now.AddYears(3);
contCook.Add(kukUL);
Cookie kukga = new Cookie("_ga", "GA1.2.1115745583.1493126015");
kukga.Path = "/";
kukga.Domain = "baza-broker.com";
kukga.Expires = DateTime.Now.AddYears(3);
contCook.Add(kukga);
Cookie kukgat = new Cookie("_gat", "1");
kukgat.Path = "/";
kukgat.Domain = "baza-broker.com";
kukgat.Expires = DateTime.Now.AddYears(3);
contCook.Add(kukgat);
// _ga = GA1.2.1115745583.1493126015; _gat = 1;
//--------- Дополнительный кук ---------------------
string strData = DateTime.Now.Date.ToString("yyyy-MM-dd");
string strGetJson = $"https://ua.baza-broker.com/index.php?do=baza&type=sale&page=1®ion=3&per_page=50&dt={strData}%2C{strData}&sub_type=flat&isset_photo=&object_type=1&area%5B%5D=&area%5B%5D=&tarea%5B%5D=&tarea%5B%5D=&larea=&larea=&karea=&karea=&price%5B%5D=&price%5B%5D=¤cy=0&floor=&floors=&view=list&view=table";
HttpWebRequest req1 = (HttpWebRequest)HttpWebRequest.Create(strGetJson);
req1.ClientCertificates.Add(cert);
req1.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)";
//Вот оно - важное дополнение.
req1.CookieContainer = contCook;
req1.Method = "GET";
HttpWebResponse result1 = (HttpWebResponse)req1.GetResponse();
Stream ReceiveStream1 = result1.GetResponseStream();
StreamReader sr2 = new StreamReader(ReceiveStream1, encode);
string html = sr2.ReadToEnd();
Console.WriteLine(html);
result1.Close();
Куки вроде возвращаются и сертификат вроде есть, но показывает что авторизоваться всё-таки не удалось....
Сталкивался с подобным, попробуй сделать следующее:
private string GetEncodedCredentials()
{
string mergedCredentials = string.Format("{0}:{1}", login, password);
byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
return Convert.ToBase64String(byteCredentials);
}
Ну и использовать у себя уже
string base64Credentials = GetEncodedCredentials();
request.Headers.Add("Authorization", "Basic " + base64Credentials);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как получить названия всех папок почты с помощью библиотеки MailKit
Нужно приостанавливать программу на некоторое время в некотором местеПытаюсь сделать так, чтобы между текстом пользователя и выводом ответа...
Проблема: отправляю данные с сервера на клиент (оба на локальной машине) и часть данных клиент не успевает обработать/принять в буферИногда...
В проекте имеется много разных сущностей, которые надо отображать и списком в таблице и подробно и иметь возможность каждую правитьДля этого...