none
Авторизация на вэб сайте RRS feed

  • Вопрос

  • Доброго времени суток. Решил попробовать реализовать на c# приложение клиент для получения информации с сайта - у меня вопрос- Можете подробно объяснить как выполнить авторизацию или где можно почитать хорошее описание. 

    Код странички авторизации

    <html>
    <head>
    <title>Âèäåî-êàòàëîã</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <style type="text/css">
    * {font-size:100.01%; font-family: Arial;}
    body {font-size:0.8em}
    form {margin:0}
    table table td {padding:0.25em}
    </style>
    </head>
    <body onLoad='document.getElementById("myform").action = window.location.toString();' >
    <table border="0" width="100%" height="100%">
    <tr>
    <td align="center">
    <div style='width:23em; text-align:left; border: 1px solid silver; background: #F5F5F5; padding:15px;'><span style='font-size:150%; font-weight:bold; color:black;'>Âõîä</span><br><span style='font-size:85%; color:gray'>äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé</span><form action='?' method='post' id='myform'><input type='hidden' name='logon' value='1'><table border='0' width='100%'><tr><td>Ëîãèí:</td><td><input name='login'></td></tr><tr><td>Ïàðîëü:</td><td><input name='pass' type='password'></td></tr><tr><td colspan='2'><input id='remember' type='checkbox' value='1' name='remember'><label for='remember'>Àâòîìàòè÷åñêè âõîäèòü</label></td></tr><tr><td colspan='2' align='center'><input type='submit' value='OK'></td></tr></table><a href='?register=1'>Ðåãèñòðàöèÿ</a></form></div><br>
    	</td>
    	</tr>
    	</table>
    	</body>
    
    	</html>
    

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:28 MSDN Forums consolidation (От:Visual C#)
    24 августа 2010 г. 23:20

Ответы

  • Проблема решилась  с помощью http сниффера, HttpWebRequest и HttpWebResponse

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

     

     public HttpWebResponse GetPage(string url, CookieCollection cookies)
     {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
      request.Method = "GET";
      request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
      request.Headers.Add("Accept-Language", "ru-RU");
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
      request.AllowAutoRedirect = true;
      request.CookieContainer = new CookieContainer();
      request.CookieContainer.Add(cookies);
      
      return (HttpWebResponse)request.GetResponse();
     }
    
    

     

    если же явно создать кукис то всё работает 

     

    Cookie cook = new Cookie("remixsid",cookies["remixsid"].Value.ToString(),"/","vkontakte.ru");
    

     

    всё эту проблему тоже решил - при получение кукиса в его параметр Domain попадала точка ".vkontakte.ru"

    30 августа 2010 г. 23:02

Все ответы

  • Попробуйте использовать авторизацию на основе WCF. Почитать можно тут.
    • Предложено в качестве ответа I.VorontsovModerator 30 августа 2010 г. 5:55
    25 августа 2010 г. 6:27
  • Проблема решилась  с помощью http сниффера, HttpWebRequest и HttpWebResponse

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

     

     public HttpWebResponse GetPage(string url, CookieCollection cookies)
     {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
      request.Method = "GET";
      request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
      request.Headers.Add("Accept-Language", "ru-RU");
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
      request.AllowAutoRedirect = true;
      request.CookieContainer = new CookieContainer();
      request.CookieContainer.Add(cookies);
      
      return (HttpWebResponse)request.GetResponse();
     }
    
    

     

    если же явно создать кукис то всё работает 

     

    Cookie cook = new Cookie("remixsid",cookies["remixsid"].Value.ToString(),"/","vkontakte.ru");
    

     

    всё эту проблему тоже решил - при получение кукиса в его параметр Domain попадала точка ".vkontakte.ru"

    30 августа 2010 г. 23:02
  • Если речь идет о сайте ВКОНТАКТЕ, то там есть официальные API, в т. ч. и для авторизации
    31 августа 2010 г. 7:01
  • КЭП спасибо конечно, но линки внизу странички тоже смотрел ;)

    Я тему в общем изучал вконтакт частный случай 

    31 августа 2010 г. 9:09