Я думаю, что older posts
ссылка отправляет запрос Ajax
и добавляет ответ на страницу. (Я не уверен. Вам следует проверить источник страницы).
Вы можете эмулировать это поведение в C#
, Java
и JavaScript
(у вас уже есть код для javascript).
Edit:
Кажется, что Facebook
использует какой-то внутренний API (JSCC
) для загрузки контента, и он недокументирован.
Я не знаю об Facebook
API разработчиков (вы можете сначала проверить это), но если вы хотите точно подражать тому, что происходит в вашем браузере, тогда вы можете использовать TamperData
, чтобы перехватывать GET
запросы, когда вы нажимаете на ссылку more posts
и находите запрос URL и его параметры .
После того, как вы получите эту информацию, вам нужно Login
к вашей учетной записи в вашем приложении и получить cookie для аутентификации.
C#
образец кода, как вы просили:
private CookieContainer GetCookieContainer(string loginURL, string userName, string password)
{
var webRequest = WebRequest.Create(loginURL) as HttpWebRequest;
var responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();
responseReader.Close();
// Now you may need to extract some values from the login form and build the POST data with your username and password.
// I don't know what exactly you need to POST but again a TamperData observation will help you to find out.
string postData =String.Format("UserName={0}&Password={1}", userName, password); // I emphasize that this is just an example.
// cookie container
var cookies = new CookieContainer();
// post the login form
webRequest = WebRequest.Create(loginURL) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.CookieContainer = cookies;
// write the form values into the request message
var requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(postData);
requestWriter.Close();
webRequest.GetResponse().Close();
return cookies;
}
Затем вы можете выполнить GET
запросов с имеющимся у вас файлом cookie, на URL
, полученном при анализе этих JSCC.get().getHandler()
запросов с использованием TamperData
, и в конечном итоге вы получите то, что вы хотите, в качестве ответа поток:
var webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.CookieContainer = GetCookieContainer(url, userName, password);
var responseStream = webRequest.GetResponse().GetResponseStream();
Вы также можете использовать Selenium
для автоматизации браузера. Он также имеет C#
и Java
API (у меня нет опыта использования Selenium
).