Использование cURL для доступа к Facebook-друзьям без Facebook API - PullRequest
0 голосов
/ 29 июля 2011

Я видел эти приложения на Facebook до того, как они позволили вам следить за тем, кто вас защищает.К сожалению, они были удалены.Возможно, потому что Facebook не любит показывать «негативные» вещи.Поэтому я пытаюсь написать PHP-скрипт для извлечения всех моих друзей из Facebook, сохранения их в базе данных, и при следующем запуске скрипта, который забирает всех моих друзей, он сравнивает их с уже сохраненными.в базе данных.

Поскольку я буду использовать это строго локально, я не хочу создавать приложение для него на Facebook и, следовательно, я не могу использовать API Facebook (так как у меня нет ключа).

Итак, как мне получить доступ ко всем моим друзьям?Мне удалось использовать cURL для входа в Facebook и перенаправить меня на http://www.facebook.com/friends/?everyone&ref=tn. К сожалению, в нем не перечислены все, и, кроме того, по умолчанию выбран «Недавно взаимодействовал».Тем не менее, выбор только имен друзей работает отлично.

Как бы я использовал cURL для:

1) Выберите «Все друзья» из выпадающего списка (я думаю, что это делается через JS или AJAXпоэтому я не уверен, как cURL справляется с этим)

2) Уметь использовать cURL для какой-то прокрутки различных страниц (все друзья разбиты на страницы).Изменение страницы не выполняется через URL (например, & page = 2, & page = 3 и т. Д.), Это либо POST-запрос, либо JS или AJAX.

Мой текущий скрипт выглядит так:

include_once('simple_html_dom.php');

$user_id    = '';
$user_email = "";
$user_pass  = "";

$fp = fopen("example.html", "w");
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?&next=http://www.facebook.com/friends/?everyone&ref=tn');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($user_email).'&pass='.urlencode($user_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($ch);

// So we can view the facebook-page
include('example.html');

$html = file_get_html("example.html");
$count = 0;
$found = 0;

foreach( $html->find('a') as $link )
{

    $count++;
    if( strpos( $link, 'profile.php?id=' ) && !strpos( $link, $user_id ) && !strpos( $link->innertext, 'img' ) )
    {

        $found++;
        echo 'Link #' . $found . ': ' . $link->innertext;
        echo '<br />';

    }

}

echo $count . ' links found where ' . $found . ' links matched profile-links';

Чтобы проверить это, вам нужно

1) Скачать simple_html_dom.php из: http://simplehtmldom.sourceforge.net/

2) Создать пустой файл, example.html

3)Создайте пустой файл cookie.txt

4) И, конечно, заполните user_id, user_email и user_pass вверху, указав значения

1 Ответ

4 голосов
/ 29 июля 2011

Это противоречит условиям обслуживания Facebook. Вы не должны пытаться делать вещи, для которых другие приложения были удалены. Пожалуйста, ознакомьтесь с условиями обслуживания здесь для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...