Estoy interesado en obtener la cantidad de amigos que tiene cada uno de mis amigos en Facebook. Aparentemente, la API oficial de Facebook no permite obtener amigos de amigos, así que tengo que evitar esta limitación (algo sensata) de alguna manera. Intenté lo siguiente:Raspar Facebook en Python
import sys
import urllib, urllib2, cookielib
username = '[email protected]'
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()
pero solo termino con una página de captcha. ¿Alguna idea de cómo FB está detectando que la solicitud no proviene de un navegador "normal"? Podría agregar un paso adicional y resolver el captcha, pero eso añadiría complejidad innecesaria al programa, así que preferiría evitarlo. Cuando uso un navegador web con la misma cadena de User-Agent, no obtengo un captcha.
Alternativamente, ¿alguien tiene alguna idea más clara sobre cómo lograr mi objetivo, es decir, obtener una lista de amigos de amigos?
Interesante encontrar. Pensé que podrían mostrar el captcha por defecto y luego ocultarlo con JS, pero cuando intento desactivar JS en FF, ese no parece ser el caso. Sin embargo, para ver a los amigos de mi amigo parece requerir AJAX, lo que también sería prohibitivo. – mpen