3

已修复,httplin2 不能处理多个 cookie,补丁可以在这里找到:http ://code.google.com/p/httplib2/issues/detail?id=146

我正在编写一个 facebook 登录脚本来获取我最后的通知,但我遇到了问题。我已经从 urllib 更改为 httplib2,因为它对我来说似乎更容易和更快。使用 urllib 我能够获得正确的 cookie 并在需要检索通知时使用它,现在我使用的是 httplib 页面中的示例:

user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN;

rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8' headers = {'User-Agent' : user_agent, 'Content-type': 'application/x-www-form-urlencoded', 'Accept' : 'text /html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8', 'Connection' : 'keep-alive', 'Accept-Encoding' : 'gzip, deflate', 'Referer' : 'http://m.facebook.com/' } data = {'email' : 'myusername', 'pass' : 'mypassword', 'post_form_id' : '', 'charset_test' : '', 'version': 1, 'ajax' : 1, 'pxr' : 1, 'gps' : 1, 'login' : 'Entrar'} 响应, content = h.request("http://www.facebook.com/login.php ?m=m&refsrc=http://m.facebook.com/&refid=0", "POST", urllib.parse.urlencode(data), headers=headers)

这是我得到的标题:

{'status': '200', 'x-cnection': 'close', 'content-location':

'http://m.facebook.com/home.php?refsrc=http%3A%2F%2Fm.facebook.com%2F&refid=0&m_sess= ***tAm60&_rdr', '传输编码': 'chunked', ' set-cookie': 'datr= * **** *F-OQsTCnbw0Caa; 过期=格林威治标准时间 2013 年 9 月 6 日星期五 20:33:26;路径=/; 域=.facebook.com;httponly','expires':'星期六,2000 年 1 月 1 日 00:00:00 GMT','x-fb-server':'10.62.188.41','content-length':'26702','-content-encoding ': 'gzip', 'pragma': 'no-cache', 'cache-control': 'private, no-cache, no-store, must-revalidate', 'date': 'Wed, 07 Sep 2011 20: 33:27 GMT', 'p3p': 'CP="Facebook 没有 P3P 政策。在此处了解原因:http://fb。

如果我不使用 h.follow_all_redirects = True 选项,它不会将我重定向到主页,但设置的 cookie 在重定向之前位于第一页。我得到的饼干是:set-cookie': 'datr=F*******F-OQsTCnbw0Caa; expires=Fri, 06-Sep-2013 20:33:26 GMT; path=/; domain=.facebook.com; httponly'

但是这些 cookie 不足以使会话处于活动状态。在浏览器中,我得到了一个更大的 cookie:

datr=EzIL*********e-JFJL; lu=wgrr3q**********; locale=es_LA; L=2;

行为=13* * ** * ; m_user= * ** %40gmail.com%3A526402587%3AN* * **** %3A0%3Av_1%2Cajax_1%2Cwidth_1600%2Cpxr_1%2Cgps_1%3A13* ** 1099; p=182;佛罗里达州=1;W=13 *** *99;reg_fb_ref=https%3A%2F%2Fwww.facebook.com%2Flogin.php%3Fm%3Dm%26refsrc%3Dhttp%253A%252F%252Fm.facebook.com%252F%26refid%3D0

可能是什么问题呢?

4

1 回答 1

1

已修复,httplin2 不能处理多个 cookie,补丁可以在这里找到:http ://code.google.com/p/httplib2/issues/detail?id=146

于 2011-09-10T01:47:08.387 回答