Соскрести Facebook в Python - PullRequest
       7

Соскрести Facebook в Python

7 голосов
/ 28 ноября 2010

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

import sys
import urllib, urllib2, cookielib

username = 'me@example.com'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'email' : username, 'pass' : password})
request = urllib2.Request('https://login.facebook.com/login.php')
request.add_header('User-Agent','Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Fedora/3.6.12-1.fc14 Firefox/3.6.12')
opener.open(request, login_data)
resp = opener.open('http://facebook.com')
print resp.read()

но я получаю только страницу с картинкой. Любая идея, как FB обнаруживает, что запрос не от "нормального" браузера? Я мог бы добавить дополнительный шаг и решить капчу, но это добавило бы ненужную сложность программе, поэтому я бы предпочел ее избежать. Когда я использую веб-браузер с той же строкой User-Agent, я не получаю капчу.

В качестве альтернативы, есть ли у кого-нибудь более здравые идеи о том, как достичь моей цели, то есть получить список друзей друзей?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2010

Вы пробовали отслеживать и сравнивать HTTP-транзакции с Fiddler2 или Wireshark? Fiddler может даже отслеживать https, если ваш клиентский код может работать с поддельными сертификатами.

0 голосов
/ 07 мая 2011

Я пробовал много способов очистить Facebook, и единственный способ, который работал для меня:

Для установки selenium , плагина Firefox, сервера и клиентской библиотеки Python. Затем с помощью плагина Firefox вы можете записать действия, которые вы выполняете для входа в систему и экспортировать как скрипт Python, вы используете это в качестве основы для своей работы, и она будет работать. По сути, я добавил в этот скрипт запрос к своему веб-серверу, чтобы просмотреть список вещей для проверки на FB, а затем в конце сценария я отправил результаты обратно на свой сервер.

Я НЕ смог найти способ сделать это прямо с моего сервера с помощью симулятора браузера, такого как Mechanize или еще! Я думаю, это нужно сделать из браузера клиента.

...