- Автор flashr июля 6, 2010
То, что популярнейшая западная соц.сеть в наглую плюет на блогеров, оказывается кроме меня заметило еще несколько сотен человек, в связи с чем давно
заведен топик. Но мы как всегда пойдем своим путем - ниже идет код, который логинится на Facebook и 10 раз нажимает кнопку обновить RSS, пока социальная сеть не сдастся и не импортирует новые записи из блога на вашу страничку. Вызываемой функции нужно лишь передать аккаунт и номер присвоенные вашему RSS, который можно получить из кода страницы. (Этот класс также будет включен в открытый BlogsAPI)
Copy Source | Copy HTML- /// [Test]
- /// public void Import()
- /// {
- /// Facebook b2f = new Facebook();
- /// b2f.UpdateRss(new UserAccaunt("login", "pass"), "17404430442");
- /// }
- /// </example>
- [BlogServiceAPI(Description = "Facebook", Link = "http://facebook.com")]
- public class Facebook : WebInterface
- {
- HttpWebRequest myHttpWebRequest;
- HttpWebResponse myHttpWebResponse;
-
- public Boolean UpdateRss(UserAccaunt user,string rssid)
- {
- if (LogInto(user))
- {
- try
- {
-
-
- myHttpWebRequest =
- MakeRequest("http://www.facebook.com/?ref=home");
- myHttpWebRequest.Method = "GET"; // метод GET
- myHttpWebRequest.Referer = "http://facebook.com";
- myHttpWebRequest.AllowAutoRedirect = false;
- //получаем ответ и его разбираем...
- myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
- string result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
- myHttpWebResponse.Close();
- //
- string post_form_id =
- new Regex(@"name\W+post_form_id\W+value\W+(\w+)\W",
- RegexOptions.Singleline | RegexOptions.IgnoreCase).Match(result).Groups[1].Value;
-
-
- ////////////////////////
- ///запрос на обновление
- /// ////////////////////
- int i = 1;
- do
- {
- myHttpWebRequest = MakeRequest("http://www.facebook.com/ajax/feedcrawl.php?__a=1");
- myHttpWebRequest.Method = "POST"; // метод GET
- myHttpWebRequest.Referer = "http://facebook.com";
- myHttpWebRequest.AllowAutoRedirect = false;
-
- myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
- // передаем параметры
- //id="post_form_id" name="post_form_id" value="0ae76ef7e6077035e571580cefa9fc8d"
- string sQueryString =
- String.Format(
- "id={0}&action=update_story&post_form_id={1}&fb_dtsg=I624T&post_form_id_source=AsyncRequest",
- rssid, post_form_id
- );
- byte[] byteArr = Encoding.UTF8.GetBytes(sQueryString);
- myHttpWebRequest.ContentLength = byteArr.Length;
- myHttpWebRequest.GetRequestStream().Write(byteArr, 0, byteArr.Length);
-
- //id=17404430442&action=update_story&post_form_id=0ae76ef7e6077035e571580cefa9fc8d&fb_dtsg=I624T&post_form_id_source=AsyncRequest
- myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
- result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
- myHttpWebResponse.Close();
- if (i++ > 10) return false;
- } while (result.Contains("url you entered is not valid"));
- return true;
- }catch(Exception e1)
- {
- Debug.WriteLine(e1.Message);
- }
- }
- return false;
- }
-
- public Boolean LogInto(UserAccaunt user)
- {
- try
- {
- myHttpWebRequest = MakeRequest("https://login.facebook.com/");
- myHttpWebRequest.Method = "GET"; // метод GET
- myHttpWebRequest.Referer = "http://facebook.com";
- myHttpWebRequest.AllowAutoRedirect = false;
- //получаем ответ и его разбираем...
- myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
- sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
- sCookie += "; reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F";
- //string result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
- myHttpWebResponse.Close();
-
- ///а теперь сам запрос
- myHttpWebRequest = MakeRequest("https://login.facebook.com/login.php?login_attempt=1");
- myHttpWebRequest.Method = "POST"; // метод GET
- myHttpWebRequest.Referer = "http://facebook.com";
- myHttpWebRequest.AllowAutoRedirect = false;
- //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
- myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
- // передаем параметры
- string sQueryString =
- String.Format(
- "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",
- HttpUtility.UrlEncode(user.username),
- HttpUtility.UrlEncode(user.password)
- );
- byte[] byteArr = Encoding.UTF8.GetBytes(sQueryString);
- myHttpWebRequest.ContentLength = byteArr.Length;
- myHttpWebRequest.GetRequestStream().Write(byteArr, 0, byteArr.Length);
-
- //получаем ответ и его разбираем...
- myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
- //result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
- sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
- //
- myHttpWebResponse.Close();
- return sCookie.Contains("c_user");
- }catch
- {
- return false;
- }
- }
- }
Метки: Blogs | Code | F*Connect