2010-03-19 3 views
0

Язык: C#
среда разработки: Visual Studio 2008Войти Веб-сайт, любопытный вопрос Cookie

Я хочу войти на сайт и получить данные оттуда. Моя проблема в том, что Cookies не работают. Каждый раз, когда Сайт говорит, что я должен активировать Cookies, но я активировал Cookies через Cookiecontainer.

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

Войти Страница является: «www.uploaded.to», Вот мой код, чтобы Вход в краткой форме:

 private void login() 
     { 
     //Global CookieContainer for all the Cookies 
     CookieContainer _cookieContainer = new CookieContainer(); 

     //First Login to the Website 
     HttpWebRequest _request1 = (HttpWebRequest)WebRequest.Create("http://uploaded.to/login"); 
     _request1.Method = "POST"; 
     _request1.CookieContainer = _cookieContainer; 

     string _postData = "email=XXXXX&password=XXXXX"; 
     byte[] _byteArray = Encoding.UTF8.GetBytes(_postData); 

     Stream _reqStream = _request1.GetRequestStream(); 

     _reqStream.Write(_byteArray, 0, _byteArray.Length); 
     _reqStream.Close(); 

     HttpWebResponse _response1 = (HttpWebResponse)_request1.GetResponse(); 
     _response1.Close(); 


     //######################## 

     //Follow the Link from Request1 
     HttpWebRequest _request2 = (HttpWebRequest)WebRequest.Create("http://uploaded.to/login?coo=1"); 
     _request2.Method = "GET"; 
     _request2.CookieContainer = _cookieContainer; 

     HttpWebResponse _response2 = (HttpWebResponse)_request2.GetResponse(); 
     _response2.Close(); 


     //####################### 

     //Get the Data from the Page after Login 
     HttpWebRequest _request3 = (HttpWebRequest)WebRequest.Create("http://uploaded.to/home"); 
     _request3.Method = "GET"; 
     _request3.CookieContainer = _cookieContainer; 

     HttpWebResponse _response3 = (HttpWebResponse)_request3.GetResponse(); 
     _response3.Close(); 

     } 

Я застрял на эту проблему, так как много недель, и я не нашел решение, которое работает, пожалуйста, помогите ...


Я попробовал это снова, первый запрос работы (Логин) в настоящее время , Я получаю файл cookie с Authentification. Текст ответа - это URL-адрес: http://uploaded.to/login?coo=1 теперь я должен сделать запрос GET на этот URL-адрес, но проблема в том, что он не отправляет файлы cookie по этому запросу, проверяется с помощью Wireshark. У вас проблемы с webwebrequest с файлами cookie?

Мой код:

CookieContainer _cookieContainer = new CookieContainer(); 

     //First Login to the Website 
     HttpWebRequest _request1 = (HttpWebRequest)WebRequest.Create("http://uploaded.to/login"); 
     _request1.Method = "POST"; 
     _request1.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
     _request1.AllowAutoRedirect = false; 
     _request1.CookieContainer = _cookieContainer; 
     _request1.ContentType = "application/x-www-form-urlencoded"; 
     _request1.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"; 
     _request1.Headers.Add(HttpRequestHeader.CacheControl, "no-cache=set-cookie"); 

     string _postData = "email=XXXXX&password=XXXXXX"; 
     byte[] _byteArray = Encoding.UTF8.GetBytes(_postData); 
     _request1.ContentLength = _byteArray.Length; 

     Stream _reqStream = _request1.GetRequestStream(); 
     _reqStream.Write(_byteArray, 0, _byteArray.Length); 
     _reqStream.Close(); 



     HttpWebResponse _response1 = (HttpWebResponse)_request1.GetResponse(); 
     StreamReader _reader1 = new StreamReader(_response1.GetResponseStream()); 
     CookieCollection _cookieCollection = new CookieCollection(); 
     foreach (Cookie _cook in _response1.Cookies) 
     { 
      _cookieCollection.Add(_cook); 
     } 
     wbrowser_html.DocumentText = _reader1.ReadToEnd(); 

     _response1.Close(); 
     _reader1.Close(); 

     //######################## 

     HttpWebRequest _request2 = (HttpWebRequest)WebRequest.Create("http://uploaded.to/login?coo=1"); 
     _request2.Method = "GET"; 
     _request2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
     _request2.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"; 
     _request2.Referer = "http://uploaded.to/login"; 
     _request2.KeepAlive = true; 

     //Here I set the language and the auth cookie, works fine 
     _request2.CookieContainer = _cookieContainer; 
     _request2.CookieContainer.Add(_cookieCollection); 
     _request2.Headers.Add(HttpRequestHeader.CacheControl, "no-cache=set-cookie"); 

     HttpWebResponse _response2 = (HttpWebResponse)_request2.GetResponse(); 
     StreamReader _reader2 = new StreamReader(_response2.GetResponseStream()); 
     wbrowser_html.DocumentText = _reader2.ReadToEnd(); 

     _response2.Close(); 
     _reader2.Close(); 

И теперь, если я проверю с Wireshark и посмотреть, нет печенья во втором запросе. Я добавляю их в запрос, но в любом случае они не отправляются на сервер?

У кого-нибудь есть идея исправить эту проблему?

ответ

0

Почему бы не использовать класс WebClient?

NameValueCollection loginData = new NameValueCollection(); 
loginData.Add("email", "your_email"); 
loginData.Add("password", "your_password"); 

WebClient client = new WebClient(); 
string source = Encoding.UTF8.GetString(client.UploadValues("http://uploaded.to/login", loginData)); 
string cookie = client.ResponseHeaders["Set-Cookie"]; 
client.Headers["Cookie"] = cookie; 

source = client.DownloadString("http://uploaded.to/some-page"); 
+0

Его то же самое. Если я попробую ваш код, программа не войдет в систему, единственным куки-файлом, который я получаю, является куки-файл языка и нет cookie-аутентификации. Если я немного изменил код, то у меня снова возникла проблема, связанная с тем, что на веб-сайте утверждается, что у меня нет файлов cookie ... Вход на сайт, как правило, очень прост в программе, но на этом сайте очень сложно, и я не знаю, где проблема. – 2010-03-19 10:00:31

Смежные вопросы