通过python我想使用urllib,urllib2,cookielib(不下载模块)发布fb状态。我会成功登录,但是我发布状态的代码不起作用。我会检查状态消息框和邮箱的元素(对于m.facebook)和状态消息框' name'是状态和价值'邮政信箱是邮政,但我试试时不会发布状态。我怎样才能做到这一点?
import urllib2, urllib, cookielib
class Acc:
jar = cookielib.CookieJar()
cookie = urllib2.HTTPCookieProcessor(jar)
opener = urllib2.build_opener(cookie)
def login(self):
try:
params = urllib.urlencode({'email':'user@hotmail.com','pass':'password','login':'Log+In'})
req = urllib2.Request('http://m.facebook.com/login.php?m=m&refsrc=m.facebook.com%2F', params)
res = self.opener.open(req)
html = res.read()
except urllib2.HTTPError, e:
print e.msg
except urllib2.URLError, e:
print e.reason[1]
return False
def fetch(self,url):
req = urllib2.Request(url,None)
res = self.opener.open(req)
return res.read(), res.headers.get("Set-Cookie")
bla = Acc()
bla.login()
webpage, session = bla.fetch("http://m.facebook.com/login.php?m=m&refsrc=m.facebook.com%2F")
if "Logout" in webpage:
print("Logged in cuzzie")
print("Sending Post")
post = urllib.urlencode({'status':'message','Post':'Post'})
a = urllib2.Request("http://m.facebook.com/")
a.add_header("cookie", session)
g = urllib2.urlopen(a, post)
print("Post Sent")
答案 0 :(得分:2)
有许多隐藏属性正在发送,如csid,fb_dtsg ...
如果您使用的是Chrome,则可以在发布状态后立即在开发人员工具中查看网络选项卡。 POST请求将发送到" https://m.facebook.com/a/home.php",您可以查看"表单数据"查看请求中发送的所有字段。我认为你需要从登录响应页面获取的每个fb帖子都需要fb_dtsg和csid。