Python requests jira登录302重定向
Posted yangtou45du
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python requests jira登录302重定向相关的知识,希望对你有一定的参考价值。
总结一下自己在用Python requests库对jira进行的一个bug统计时,在登录遇到的问题,以前也遇到过登录302重定向的问题,那个时候用requests同样的方法没有获取到cookie,但是jira可以用requests获取到cookie,我也不知道怎么回事
网上百度了很多资料,好多都是用jira这个库来来统计的,但是我想自己用Python来写一下,以下做个记录,
1,首先了解一下接口登录大概的信息,看看jira登录时抓包的情况,我用的是谷歌F12
login.jsp接口详情如下,经试验,登录时不需要header,我们需要从响应回来的数据中取得Set-Cookie这个值,只需要JSESSIONID值,这个值与重定向后的cookie组合成一个新的cookie,后面做的操作就要使用这个新的cookie,因为登录后是重定向,需要加allow_redirects=False,禁止重定向,这样返回回来的就是302,否则就是200:
代码如下:
url = "http://XXXXXXXXXX/jira/login.jsp"
payload = {"os_username": "*******",
"os_password": "**********",
"os_cookie": True,
"os_destination": "",
"user_role": "",
"atl_token": "",
"login": "登录"}
re = requests.post(url, data=payload, allow_redirects=False)
cookieJsessionId = re.headers["Set-Cookie"].split(";")[0]
2.
重定向后的页面继续发请求,从响应的头获取Set-Cookie,只需要atlassian.xsrf.token值
代码如下:
url1 = "http://solution.xxxxxx.mobi/jira/"
re1 = requests.get(url1)
cookie1 = re1.headers["Set-Cookie"].split(";")
cookieToken = cookie1[0].replace("lout", "lin")
3. 如下是查询的接口:
可以看出这个查询接口的cookie的JSESSIONID是由login.jsp这个接口返回,atlassian.xsrf.token是由jira/这个接口返回
构造查询接口的的cookie:
cookieSearch = "jira.editor.user.mode=wysiwyg;" +cookieJsessionId + ";" + cookieToken
构造header,header里面这两个是必填项,否则会400 和404错误
header1 = {"Cookie": cookieSearch,
"X-Atlassian-Token": "no-check"
}
发送请求
url2 = "http://solution.xxxxx.mobi/jira/rest/issueNav/1/issueTable"
data1 = {
"startIndex": 0,
"jql": "project = SMPT AND resolution = Unresolved AND creator in (currentUser()) ORDER BY priority DESC, updated DESC",
"layoutKey": "list-view"
}
re = requests.post(url2, data=data1, headers=header1)
print re.text
print re.status_code
以上亲测有效,只是简单写了个线性脚本,后面需要重新封装
以上是关于Python requests jira登录302重定向的主要内容,如果未能解决你的问题,请参考以下文章