post_form_id是什么?(使用python urllib2)

1 投票
1 回答
1614 浏览
提问于 2025-04-16 16:18

我想写一个Python脚本,用来登录Facebook,然后请求一些数据(主要是查看收件箱)。网上有一些不错的例子可以参考。我找到一个有趣的脚本,在这里,还有一个很好的例子在StackOverflow上

我可以直接复制粘贴一些我需要的代码,这样就能实现我想要的功能,但这并不是一个好的学习方式。所以我想搞明白我到底在写什么,但我对第一个例子中的一些元素不太理解,特别是:什么是post_form_id

这是代码中提到“post_form_id”的部分(第56-72行):

# Initialize the cookies and get the post_form_data
print 'Initializing..'
res = browser.open('http://m.facebook.com/index.php')
mxt = re.search('name="post_form_id" value="(\w+)"', res.read())
pfi = mxt.group(1)
print 'Using PFI: %s' % pfi
res.close()

# Initialize the POST data
data = urllib.urlencode({
    'lsd'               : '',
    'post_form_id'      : pfi,
    'charset_test'      : urllib.unquote_plus('%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84'),
    'email'             : user,
    'pass'              : passw,
    'login'             : 'Login'
})

你能告诉我post_form_id是什么吗?顺便问一下:你知道lsd这个键/值代表什么吗?

谢谢。

1 个回答

1

我不明白你为什么想要“破解”这个……其实,Facebook有一个官方的接口,可以用来读取用户的邮箱,你需要申请“read_mailbox”的权限才能做到这一点。

所以我建议你看看我在这里的帖子,里面讲了如何把Facebook和Python/Django结合使用,以及如何通过Python登录Facebook。

接着,我还推荐你阅读Facebook的文档,了解关于消息和收件箱的内容。

基本上,你需要一个访问令牌(access_token),然后你就可以使用这个链接:http://graph.facebook.com/me/inbox/?access_token=XXX来获取信息。你还可以申请“offline_access”的权限,这样你只需要获取一次访问令牌,就可以“永久”使用它。

然后你可以用这个链接:http://graph.facebook.com/MESSAGE_ID?access_token=XXX来获取某条特定消息的详细信息。

或者使用我在另一个帖子中提到的API:

f = Facebook() 
res = f.get_object("me/inbox")
...

如果你对这个有任何问题,随时可以留言问我哦?

撰写回答