2009-12-18 5 views
3

Я использую приложение Facebook, которое имеет богатый набор информации, которую я хотел бы получить в автономном режиме. Для этого мне, по сути, нужно прочитать информацию с веб-страниц в моей собственной базе данных. Очевидно, что я бы предпочел не сохранять страницы вручную и позволить моему приложению читать страницы и извлекать из них соответствующие данные. К сожалению, меня заблокировали на дороге требование сначала пройти аутентификацию в Facebook. Поэтому, когда я запускаю этот код:Скребок приложения для Facebook

private static string getPage(string pageAddress) 
{ 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(baseUri, pageAddress)); 
    HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
    StreamReader readStream = new StreamReader(response.GetResponseStream()); 
    string page = readStream.ReadToEnd(); 
    readStream.Close(); 
    response.Close(); // I know, I'm paranoid and this is likely redundant... 
    return page; 
} 

Я получаю ответ:

<script type="text/javascript"> 
if (parent != self) 
top.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0"; 
else self.location.href = "http://www.facebook.com/login.php?api_key=<obscured>&canvas&v=1.0"; 
</script> 

Любые идеи, как сказать приложение, которое я действительно утра аутентичный меня?

ответ

8

Насколько я понял, вам просто нужно войти в приложение для facebook, не так ли? Для этого используйте любую веб-скребок/обходную структуру (они поддерживают JS, файлы cookie и т. Д.). Они просто эмулируют использование веб-браузера. Например, попробуйте эти:

http://scrapy.org/

http://wwwsearch.sourceforge.net/mechanize/

http://watin.sourceforge.net/

Также см

.Net Screen scraping and session

+0

Знаете ли вы о каких-либо таких библиотеках для использования в .NET? –

+0

Добавлена ​​одна библиотека .NET, которая может использовать –

+0

WatiN для победы.Это немного неудобно, но это позволяет мне делать именно то, что я хочу. Хорошая работа. –

1

Вам необходимо использовать API facebook для получения данных из facebook. Они блокируют экранирование

+0

Я не хочу данные из Facebook. У Facebook нет данных, которые я хочу/нуждаюсь. Они просто гейткипер для аутентификации в приложении, к которому я хочу получить доступ. –

3

Facebook использует REST, чтобы вы могли запрашивать данные с сервера; он также имеет возможность доступа к данным из клиентского JavaScript API. Вы можете проверить вики для получения дополнительной информации; он использует метод rest_server.php? = для получения данных из соответствующих методов.

Отъезд http://www.facebook.com/developers, чтобы получить дополнительную информацию об этих объектах/методах/создании приложения, чтобы вы могли запрашивать данные в facebook.

+1

Я не уверен, что вы имеете в виду, Брайан. Мне не нужны данные из самой facebook, я хочу данные из приложения facebook. Ссылка, которую вы указали, не содержит данных об объектах/методах/или создании. –

+1

Эта ссылка: http://wiki.developers.facebook.com/index.php/Main_Page отключена от предыдущей ссылки, которую я отправил. Данные из facebook используются в приложении facebook, поэтому в моем мышлении они одно и то же, поэтому я отправил вам это ... Таким образом, API поможет вам получить нужные вам данные, так как экранирование экрана заблокировано. –

1

Сначала вам нужно написать сценарий для программного входа в facebook. Затем вам нужно будет сохранить файлы cookie, которые вы получаете.

Я сделал что-то подобное с curl и php. (curl имеет встроенную обработку печенья)

1

Я думаю, что они используют файлы cookie для аутентификации, поэтому сначала вам понадобится ваше приложение для входа в facebook и сохраните файл cookie в CookieContainer, а затем назначьте это для req .CookieContainer, и только тогда req.GetResponse();

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