Python请求:如何从302重定向获取响应cookie

时间:2016-04-03 21:13:58

标签: python-3.x redirect curl cookies python-requests

我正在尝试进行自动化,通过Instagram API发送http请求以跟踪或取消关注用户,现在我正在使用Python请求模块,我试图通过网站'{{ 3}}”。我目前的代码是:

import requests
from requests.auth import HTTPBasicAuth

s = requests.Session()
s.get('http://pikore.com')

print(s.cookies)
s.get('http://www.pikore.com/session/new?from=%2F', auth=HTTPBasicAuth('USERNAME', 'USERSECRET'))
pikore_session = s.cookies['_pikore_session']
print(s.cookies)
s.get('http://pikore.com')
print(s.cookies)

cookies = {
'_pikore_session': pikore_session,
'token': 'BAhJIjcyNTY5NDczOTIuZWIxM2FlYi41Mjc3ZTI4NjI4ZDM0NDRlOGRjNWNjZmFjNWU3YmJmYgY6BkVU--9b52c6305368f28c83ffc288e9d55e94b3e864db',
}

headers = {
    'Host': 'www.pikore.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0',
    'Referer': 'http://www.pikore.com/nike',
}

print(s.get('http://www.pikore.com/follow/13460080', headers=headers, cookies=cookies))
s.get('http://www.pikore.com/')
print(s.cookies)

所以这可以并且将执行给定的请求,唯一的是,授权行只会获得'_pikore_session'cookie,而不是我想要的令牌cookie。 通过Instagram授权重定向登录后,它将重定向您三次,然后最终您将登陆网站,登录,但在第三次重定向,我可以看到它输出'令牌'响应cookie,我希望有人得到这个,这样我就不必每次都去手动了。

1 个答案:

答案 0 :(得分:6)

我今天试图解决这个问题并发现a relevant bug in requests

使用JohnCC330关闭auto_redirect的解决方案为我工作:

res = requests.post(
    host,
    data={'somefield':'my value'},
    allow_redirects=False)

if res.status_code == 302: # expected here
    jar = res.cookies
    redirect_URL2 = res.headers['Location']
    res2 = requests.get(redirect_URL2, cookies=jar)
    # res2 is made with cookies collected during res' 302 redirect

希望这有帮助,

鲍勃