【发布时间】:2015-07-23 13:27:05
【问题描述】:
我正在尝试使用 python 请求登录 facebook。 当我运行以下代码时: 导入请求
def get_facebook_cookie():
sign_in_url = "https://www.facebook.com/login.php?login_attempt=1"
#need to post: email , pass
payload = {"email":"xxxx@xxxx.com", "pass":"xxxxx"}
headers = {"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"}
s = requests.Session()
r1 = s.get(sign_in_url, headers = headers, timeout = 2)
r = s.post(sign_in_url, data = payload, headers = headers, timeout = 2, cookies = r1.cookies)
print r.url
text = r.text.encode("ascii", "ignore")
fbhtml = open("fb.html", "w")
fbhtml.write(text)
fbhtml.close()
return r.headers
print get_facebook_cookie()
(注意 url 应该重定向到 facebook.com——仍然没有这样做)
(电子邮件实际上是在邮箱中填充的——所以我知道它至少在传递它)
根据请求会话文档,它处理所有 cookie,所以我什至认为我不需要将它传递进去。但是,我已经看到其他地方这样做是为了用空 cookie 填充第二个请求所以我试了一下。
问题是,为什么 facebook 告诉我我没有启用 cookie?我需要传递一些额外的请求标头吗?对于这样的事情,urllib2 会是更好的选择吗?
【问题讨论】:
标签: python facebook cookies python-requests urllib2