Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-通过urllib2会话登录时发布Facebook状态_Python_Facebook_Session Cookies_Urllib2_Urllib - Fatal编程技术网

Python-通过urllib2会话登录时发布Facebook状态

Python-通过urllib2会话登录时发布Facebook状态,python,facebook,session-cookies,urllib2,urllib,Python,Facebook,Session Cookies,Urllib2,Urllib,通过python,我想使用urllib、urllib2、cookielib(不下载模块)发布fb状态。我将成功登录,但我发布状态的代码将不起作用。我会检查状态消息框和邮箱(对于m.facebook)的元素,状态消息框“name”是status,而邮箱的“value”是post,但在我尝试时它不会发布状态。我怎样才能做到这一点 import urllib2, urllib, cookielib

通过python,我想使用urllib、urllib2、cookielib(不下载模块)发布fb状态。我将成功登录,但我发布状态的代码将不起作用。我会检查状态消息框和邮箱(对于m.facebook)的元素,状态消息框“name”是status,而邮箱的“value”是post,但在我尝试时它不会发布状态。我怎样才能做到这一点

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

有许多隐藏属性正在被发送,如csid、fb_dtsg


如果您使用的是chrome浏览器,您可以在发布状态后在开发者工具中看到网络选项卡。POST请求将发送到“”,因为您可以查看“表单数据”以查看请求中发送的所有字段。我认为您需要从登录响应页面获取的每一篇fb帖子都需要fb_dtsg和csid。

您能解释更多关于如何捕获此类请求的信息吗?使用chrome的简单步骤0)在帖子对话框就绪的情况下打开fb页面1)检查元素2)进入网络选项卡3)按下清除按钮以清除早期会话然后点击“记录网络日志”,然后发布一些信息,查看发送的第一个请求。在Headers选项卡中,向下滚动以形成数据,以检查发送的有效负载。检查此链接以获得更深入的理解。也检查此链接