2010-10-22 83 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来控制页面。

相关问题