在Python中刮脸Facebook

我很想知道Facebook上我的每个朋友的朋友数量。 显然官方Facebook API不允许朋友的朋友,所以我需要绕过这个(某种合理的)限制。 我尝试了以下内容:

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如何检测请求不是来自“普通”浏览器? 我可以添加额外的步骤并解决验证码,但这会增加程序的不必要的复杂性,所以我宁愿避免它。 当我使用具有相同用户代理字符串的Web浏览器时,我没有收到验证码。

或者,有没有人有关于如何完成我的目标的任何更清晰的想法,即获得朋友的朋友列表?


您是否尝试过使用Fiddler2或Wireshark跟踪和比较HTTP事务? 只要您的客户端代码可以与伪造的证书一起工作,提琴手甚至可以跟踪https。


我确实尝试了很多方法来刮脸,唯一的方法是我:

安装selenium,firefox插件,服务器和python客户端库。 然后用firefox插件,你可以记录你做的登录和导出为python脚本的动作,你可以使用它作为工作的基础,它将起作用。 基本上,我在这个脚本中添加了一个请求到我的web服务器,以检查FB上要检查的事情列表,然后在脚本结尾我将结果发送回我的服务器。

我无法找到一种方法,直接从我的服务器使用浏览器模拟器,如机械化或其他! 我猜它需要从客户端浏览器完成。

链接地址: http://www.djcxy.com/p/3887.html

上一篇: Scrape Facebook in Python

下一篇: efficient sorted Cartesian product of 2 sorted array of integers