总结一下自己在用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.textprint re.status_code 以上亲测有效,只是简单写了个线性脚本,后面需要重新封装
原文地址:https://www.cnblogs.com/yangtou45du/p/9915278.html
时间: 2024-07-30 15:58:59