2010-11-28 51 views
7

我很想知道Facebook上我的每個朋友的朋友數量。顯然官方的Facebook API不允許朋友的朋友,所以我需要繞過這個(某種合理的)限制。我試過以下內容:用Python刮臉Facebook

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() 

但我只能以驗證碼頁面結束。任何想法FB如何檢測請求不是來自「普通」瀏覽器?我可以添加額外的步驟並解決驗證碼,但這會增加程序的不必要的複雜性,所以我寧願避免它。當我使用具有相同用戶代理字符串的Web瀏覽器時,我沒有收到驗證碼。

另外,沒有人有任何關於如何完成我的目標,即獲得朋友的朋友列表的任何更清晰的想法?

+0

有趣的發現。我認爲他們可能會默認顯示驗證碼,然後用JS隱藏它,但是當我嘗試在FF中禁用JS時,似乎並非如此。然而,要查看我的朋友的朋友,它似乎需要AJAX,這也將是禁止的。 – mpen 2010-11-28 17:41:41

回答

3

您是否嘗試過使用Fiddler2或Wireshark跟蹤和比較HTTP事務?只要您的客戶端代碼可以與僞造的證書一起工作,提琴手甚至可以跟蹤https。

0

我也嘗試了很多辦法湊Facebook和僅僅爲我工作的方式是:

要安裝selenium,firefox的插件,服務器和Python客戶端庫。 然後用firefox插件,你可以記錄你做登錄和導出爲python腳本的動作,你可以使用它作爲工作的基礎,它將起作用。基本上,我在這個腳本中添加了一個請求到我的web服務器,以檢查FB上要檢查的事項列表,然後在腳本結尾處將結果發送回我的服務器。

我無法找到一種方法,直接從我的服務器使用類似機械化的瀏覽器模擬器!我猜它需要從客戶端瀏覽器完成。