2010-10-22 118 views
4

我正在研究當前需要從特定用戶的牆上拉下信息的腳本。唯一的問題是它需要認證,腳本需要能夠在沒有任何人爲干擾的情況下運行。不幸的是,我迄今爲止所能找到的所有信息都告訴我,我需要註冊一個應用程序,然後執行整個FB Connect舞蹈來完成我想要的任務。問題是需要瀏覽器交互,我試圖避免。在沒有瀏覽器的情況下登錄到Facebook

我想我可能只是使用httplib2,並登錄這條路線。我得到這個工作,只是發現用這種方法,我仍然沒有得到任何可檢索的方法「access_token」。如果我可以在不啓動瀏覽器的情況下獲取該令牌,則會完全設置。當然,人們在不使用FB Connect的情況下正在爬取Feed?這是不可能的,因此我爲什麼打這麼多路障?歡迎大家提出任何建議。

回答

5

你想要做的是不可能的。您將不得不使用瀏覽器以這種或那種方式獲取訪問令牌。您無法收集用戶名和密碼(嚴重違反了Facebook的TOS)。如果你需要一個沒有用戶交互的腳本,你仍然需要使用瀏覽器進行認證,但是一旦你擁有了用戶的令牌,你就可以直接使用它。您必須請求「offline_access」權限才能獲得未過期的訪問令牌。你可以保存這個令牌,然後使用它,無論你需要多長時間。

+0

感謝您的信息。儘管我沒有收集用戶名/密碼。這是我們公司的用戶名/密碼。只需將通過cron或其他東西運行的腳本放在一起即可。看起來我會走一條不同的路線。再次感謝:) – f4nt 2010-10-22 21:10:59

+1

所以,如果是這樣的話,只需使用offline_access進行身份驗證一次,並保存訪問令牌並將其用於腳本。除非帳戶刪除應用程序,否則令牌永遠不會過期。 – 2010-10-22 21:18:02

+0

@ f4nt我想你會需要一個瀏覽器。也就是說,您可以在不存在的情況下自動執行瀏覽器。查看Watir(ruby lib)以獲得出色的瀏覽器自動化。 Watir有n個windows,mac和linux版本,並且可以與safari,chrome,IE和firefox一起使用。除了瀏覽器自動化之外,我使用ruby/Watir做了python中的所有工作。 – 2010-10-22 21:23:39

3

我在使用機械化之前用我自己的帳戶完成了這項工作。您可以使用類似於下面的內容登錄Facebook,然後只需按照指向您想要去的地方的鏈接。這將打印出新聞提要的內容。

#!/usr/bin/env python 

import mechanize 

browser = mechanize.Browser() 
browser.set_handle_robots(false) 
cookies = mechanize.CookieJar() 
browser.set_cookiejar() 
browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7')] 

browser.select_form(nr=0) 
browser.form['email'] = 'YOUR_EMAIL_ADDRESS' 
browser.form['pass'] = 'YOUR_PASSWORD' 
response = browser.submit() 
print response.read() 
+0

EverythingZen這實際上工作? – 2011-01-25 19:44:46

+0

我測試過了,它不工作(再)。 – Peter 2015-11-01 07:20:45

2

您可以使用PhantomJSPyPhantomJS該任務。這是一個使用PyQt4編寫的無頭WebKit瀏覽器。您可以使用JavaScript來控制頁面。

相關問題