@kos_dev

Как подвязать куки к HttpWebRequest [C#]?

Здравствуйте, подскажите, как зайти на сайт уже залогиненным, то есть с куками.
Я пытался зайти в аккаунт в браузере, глянуть все куки файлы, переписать их в софт и скачивать страничку для дальнейшего парсинга, но куки не реагируют.

Моя задача - скачать страницу, которая отображается авторизованным пользователям.
Всем заранее большое спасибо за помощь.

КОД:
CookieContainer cookieContainer = new CookieContainer();

cookieContainer.Add( new Cookie("_ym_uid", "149922490167632560", "/", ".domkadrov.ru") );
cookieContainer.Add(new Cookie("_ym_isad", "2", "/", ".domkadrov.ru"));
cookieContainer.Add(new Cookie("_gat", "1", "/", ".domkadrov.ru"));
cookieContainer.Add(new Cookie("forads", "%CF%F0%EE%E8%E7%E2%EE%E4%F1%F2%E2%EE+%E1%F3%EC%E0%E3%E8%2C+%EA%E0%F0%F2%EE%ED%E0", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("passwd[423989]", "ghjcnj", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("employer", "423989", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("test", "%F0%F3%F1%F1%EA%E8%E9", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("device", "desktop", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("views", "11", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("cityforpublish", "378", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("compfunction", "139b", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("industry", "94", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("menforads", "4", "/", "www.domkadrov.ru"));
cookieContainer.Add(new Cookie("_ga", "GA1.2.1762919872.1499224902", "/", ".domkadrov.ru"));
cookieContainer.Add(new Cookie("_gid", "GA1.2.562227849.1499224902", "/", ".domkadrov.ru"));


HttpWebRequest proxy_request = (HttpWebRequest)WebRequest.Create("http://www.jobinmoscow.ru/");
proxy_request.CookieContainer = cookieContainer;
proxy_request.Method = "GET";
proxy_request.ContentType = "application/x-www-form-urlencoded";
proxy_request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5";
proxy_request.KeepAlive = true;
HttpWebResponse resp = proxy_request.GetResponse() as HttpWebResponse;
string html = "";
using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
    html = sr.ReadToEnd();

foreach (Cookie cook in resp.Cookies)
{
    textBox1.Text += "Name: " + cook.Name + " Val: " + cook.Value + Environment.NewLine;
}

html = html.Trim();
  • Вопрос задан
  • 2103 просмотра
Пригласить эксперта
Ответы на вопрос 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Скорее всего вы не ввели необходимые файлы куки (обычно нужное количество куки исчисляется единицами). Советую вам пропустить страницы через fiddler и глянуть все куки там, а не на странице.
Поскольку у вас всё-таки проблема с задачей более высокого порядка - парсить залогиненного пользователя, то посоветую вам пользоваться не C# в чистом виде, а браузерным компонентом. Для простых случаев использовать c# WebBrowser, в нём логиниться пользователем, а потом парсить всё что загружено (там же и скрипты начальные загружаются и меняют DOM). Для сложных случаев отлично подходит CefSharp - Chrome для C#. Вот этот зверь очень послушно делает всё что вы ему прикажете. Я на нём с сайта гостов периодически документацию для своей фирмы загружаю, например.
Вот, нашёл интересный пример: zennolab.com/discussion/threads/c-sharp-vs-webbrow...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы