Facebook continue

То, что популярнейшая западная соц.сеть в наглую плюет на блогеров, оказывается кроме меня заметило еще несколько сотен человек, в связи с чем давно заведен топик. Но мы как всегда пойдем своим путем - ниже идет код, который логинится на Facebook и 10 раз нажимает кнопку обновить RSS, пока социальная сеть не сдастся и не импортирует новые записи из блога на вашу страничку. Вызываемой функции нужно лишь передать аккаунт и номер присвоенные вашему RSS, который можно получить из кода страницы. (Этот класс также будет включен в открытый BlogsAPI)
Copy Source | Copy HTML
  1. /// [Test]
  2. /// public void Import()
  3. /// {
  4. /// Facebook b2f = new Facebook();
  5. /// b2f.UpdateRss(new UserAccaunt("login", "pass"), "17404430442");
  6. /// }
  7. /// </example>
  8. [BlogServiceAPI(Description = "Facebook", Link = "http://facebook.com")]
  9. public class Facebook : WebInterface
  10. {
  11.     HttpWebRequest myHttpWebRequest;
  12.     HttpWebResponse myHttpWebResponse;
  13.  
  14.     public Boolean UpdateRss(UserAccaunt user,string rssid)
  15.     {
  16.         if (LogInto(user))
  17.         {
  18.             try
  19.             {
  20.  
  21.  
  22.                 myHttpWebRequest =
  23.                     MakeRequest("http://www.facebook.com/?ref=home");
  24.                 myHttpWebRequest.Method = "GET"; // метод GET
  25.                 myHttpWebRequest.Referer = "http://facebook.com";
  26.                 myHttpWebRequest.AllowAutoRedirect = false;
  27.                 //получаем ответ и его разбираем...
  28.                 myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
  29.                 string result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
  30.                 myHttpWebResponse.Close();
  31.                 //
  32.                 string post_form_id =
  33.                     new Regex(@"name\W+post_form_id\W+value\W+(\w+)\W",
  34.                               RegexOptions.Singleline | RegexOptions.IgnoreCase).Match(result).Groups[1].Value;
  35.  
  36.  
  37.                 ////////////////////////
  38.                 ///запрос на обновление
  39.                 /// ////////////////////
  40.                 int i = 1;
  41.                 do
  42.                 {
  43.                     myHttpWebRequest = MakeRequest("http://www.facebook.com/ajax/feedcrawl.php?__a=1");
  44.                     myHttpWebRequest.Method = "POST"; // метод GET
  45.                     myHttpWebRequest.Referer = "http://facebook.com";
  46.                     myHttpWebRequest.AllowAutoRedirect = false;
  47.  
  48.                     myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
  49.                     // передаем параметры
  50.                     //id="post_form_id" name="post_form_id" value="0ae76ef7e6077035e571580cefa9fc8d"
  51.                     string sQueryString =
  52.                         String.Format(
  53.                             "id={0}&action=update_story&post_form_id={1}&fb_dtsg=I624T&post_form_id_source=AsyncRequest",
  54.                             rssid, post_form_id
  55.                             );
  56.                     byte[] byteArr = Encoding.UTF8.GetBytes(sQueryString);
  57.                     myHttpWebRequest.ContentLength = byteArr.Length;
  58.                     myHttpWebRequest.GetRequestStream().Write(byteArr,  0, byteArr.Length);
  59.  
  60.                     //id=17404430442&action=update_story&post_form_id=0ae76ef7e6077035e571580cefa9fc8d&fb_dtsg=I624T&post_form_id_source=AsyncRequest
  61.                     myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
  62.                     result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
  63.                     myHttpWebResponse.Close();
  64.                     if (i++ > 10) return false;
  65.                 } while (result.Contains("url you entered is not valid"));
  66.                 return true;
  67.             }catch(Exception e1)
  68.             {
  69.                 Debug.WriteLine(e1.Message);
  70.             }
  71.         }
  72.         return false;
  73.     }
  74.  
  75.     public Boolean LogInto(UserAccaunt user)
  76.     {
  77.         try
  78.         {
  79.             myHttpWebRequest = MakeRequest("https://login.facebook.com/");
  80.             myHttpWebRequest.Method = "GET"; // метод GET
  81.             myHttpWebRequest.Referer = "http://facebook.com";
  82.             myHttpWebRequest.AllowAutoRedirect = false;
  83.             //получаем ответ и его разбираем...
  84.             myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
  85.             sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
  86.             sCookie += "; reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F";
  87.             //string result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
  88.             myHttpWebResponse.Close();
  89.  
  90.             ///а теперь сам запрос
  91.             myHttpWebRequest = MakeRequest("https://login.facebook.com/login.php?login_attempt=1");
  92.             myHttpWebRequest.Method = "POST"; // метод GET
  93.             myHttpWebRequest.Referer = "http://facebook.com";
  94.             myHttpWebRequest.AllowAutoRedirect = false;
  95.             //charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=en_US&email=onestory%40yandex.ru&pass=qQwklopq&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=NT7ew
  96.             myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
  97.             // передаем параметры
  98.             string sQueryString =
  99.                 String.Format(
  100.                     "charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=en_US&email={0}&pass={1}&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=NT7ew",
  101.                     HttpUtility.UrlEncode(user.username),
  102.                     HttpUtility.UrlEncode(user.password)
  103.                     );
  104.             byte[] byteArr = Encoding.UTF8.GetBytes(sQueryString);
  105.             myHttpWebRequest.ContentLength = byteArr.Length;
  106.             myHttpWebRequest.GetRequestStream().Write(byteArr,  0, byteArr.Length);
  107.  
  108.             //получаем ответ и его разбираем...
  109.             myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
  110.             //result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
  111.             sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
  112.             //
  113.             myHttpWebResponse.Close();
  114.             return sCookie.Contains("c_user");
  115.         }catch
  116.         {
  117.             return false;
  118.         }
  119.     }
  120. }

Метки:   Категории:Blogs | F*Connect | Code


blog comments powered by Disqus

Добавить комментарий

Кто я?

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

Последние комментарии

Не отображать

Topbot at FeedsBurner

Облако тэгов

Мои Твиты

Twitter октября 17, 16:07
Как разверифицироваться в Твиттере? http://dlvr.it/Qnddsc https://twitter.com/f1ashr/status/1052591848303120390/photo/1

Twitter октября 17, 16:07
На батуте в космос http://dlvr.it/QnddrT

Twitter октября 17, 16:07
Estonian Fitsme http://dlvr.it/Qnddn3

Twitter октября 17, 16:07
Россия будет воевать http://dlvr.it/Qnddq7

Twitter октября 17, 15:33
Про браузеры http://dlvr.it/QndT1N

Twitter октября 17, 14:54
Прыгающий Робо-жук http://dlvr.it/QndGjW https://twitter.com/f1ashr/status/1052573591181582336/photo/1

Twitter октября 17, 14:54
Google Plus выкатывает красивые имена http://dlvr.it/QndGj2

Twitter октября 17, 14:54
Немецкие совестливые журналисты http://dlvr.it/QndGjD

Twitter октября 17, 09:27
Победа свободы над здравым смыслом http://dlvr.it/QnbjB5 https://twitter.com/f1ashr/status/1052491176593354752/photo/1

Twitter октября 17, 06:41
программа instagramliker обновлена 2018г http://dlvr.it/Qnb2DZ

Twitter октября 16, 07:50
CloudSearch http://dlvr.it/QnTLzB

Twitter октября 16, 07:50
Сидеть вредно. http://dlvr.it/QnTLzD

Twitter октября 16, 07:50
Вконтакте 7 лет http://dlvr.it/QnTLzH

Twitter октября 16, 07:50
Рейтинг авторитетности блогов http://dlvr.it/QnTLz2

Twitter октября 16, 07:50
Tech news http://dlvr.it/QnTLz5

Twitter октября 16, 07:13
Совет многоквартирного дома http://dlvr.it/QnTCHQ https://twitter.com/f1ashr/status/1052095075918872576/photo/1

Twitter октября 16, 07:13
Windows 10 и Новый мировой порядок http://dlvr.it/QnTCF0 https://twitter.com/f1ashr/status/1052095069317001216/photo/1

Twitter октября 16, 07:13
Украинские солдаты до сих пор не поняли с кем воюют http://dlvr.it/QnTC5Z https://twitter.com/f1ashr/status/1052095061586980864/photo/1

Twitter октября 16, 07:13
Продолжая тему браузеров http://dlvr.it/QnTC4k

Twitter октября 16, 06:37
Рейтинг блогосферы - пост 2 http://dlvr.it/QnT3pf

Мой твиттер

Копирайт

Все мысли, высказанные в блоге, являются моим мнением и за это мнение меня никто не забанит! Кроме того, никто не имеет право копировать материалы блога без использования ctrl+C/V!

© Copyright 2008