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.textprint re.status_code

以上亲测有效,只是简单写了个线性脚本,后面需要重新封装




原文地址:https://www.cnblogs.com/yangtou45du/p/9915278.html

时间: 2024-07-30 15:58:59

Python requests jira登录302重定向的相关文章

Python requests 自动登录某财BBS,自动签到打卡领铜钱,最后再配个plist,每天自动执行

某财的用户应该都知道这个网站,在"签到有礼"版块,每天会有一贴,用帖子中给出的关键字回帖,得铜钱,据说铜钱可以换现金,还可以换书. 真好,裸辞在家的失业人员最需要这个-每天领之. 基本思路: 先用抓包工具仔细分析下登陆以及回帖时post了哪些数据,这些数据从何而来(我用的Firefox + Firebug,挺好用的,选上保持+全部,就算页面重定向,所有的请求也都能看到): python requests库,用requests.Session().post来登陆和回帖,用get来读取页面

Python+Requests接口测试教程(2):requests

开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了.环境准备(小编环境):python:2.7.12pycharm:5.0.4requests:2.13.0(这学本篇之前,先要有一定的python基础,因为后面都是直接用python写代码了,小编主要以讲接口为主,pytho

利用Python模拟GitHub登录

最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一个网站的登录,我们必须要简单了解其大致过程. 在这里,我通过Fiddler来抓取GitHub登录的请求,从网页上登录的URL为:https://github.com/login ,抓包结果如下: 左边的是会话列表,右边的是请求和响应的数据.一般情况下,登录都是用POST请求,因为我在左边的会话列表中

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

Python Requests 小技巧总结

关于 Python Requests ,在使用中,总结了一些小技巧把,分享下. 1:保持请求之间的Cookies,我们可以这样做. import requests self.session = requests.Session() self.session.get(login_url) # 可以保持登录态 2:请求时,会加上headers,一般我们会写成这样 self.session.get(url, params, headers=headers) 唯一不便的是之后的代码每次都需要这么写,代码

基于Python Requests的数据驱动的HTTP接口测试

发表于:2017-8-30 11:56  作者:顾翔   来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html 1.测试金字塔 图 1软件测试金字塔 图 1是Main Cohn提出的软件测试金字塔,他认为作为一个测试工程师应该把大量的工作花在单元测试和接口测试,而其余的发在UI测试以及探索式测试.纵然,单元测试的优点很突出,它接近于代码本身,运行速度快,开发可以一边写产品代码一边写单元测试代码,一旦在单元测试中

Python Requests快速入门

快速上手 迫不及待了吗?本页内容为如何入门Requests提供了很好的指引.其假设你已经安装了Requests.如果还没有, 去 安装 一节看看吧. 首先,确认一下: Requests 已安装 Requests是 最新的 让我们从一些简单的示例开始吧. 发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取Github的公共时间线 >>> r = re

我给女朋友讲编程html系列(11)—网页重定向,301重定向,302重定向

虽然以前只在淘宝买东西,不过现在对其他电商也不排斥了,就比如京东吧,今天就以京东为例. 你在浏览器中输入“360buy.com”,看看发生了什么? 另外输入“jingdong.com”,再看看发生了什么?看看网址变了没有? 见证奇迹,请看下图: 不管你输入哪个网址,都会转到这个网址. 这其实叫“重定向”,那么怎么实现网站重定向呢? 任意新建一个网页,如a.html,名字随便叫,只要后缀是.html就行了.输入下面的html代码: <html> <head> <meta htt

python requests库入门[转]

首先,确认一下: Requests 已安装 Requests是 最新的 让我们从一些简单的示例开始吧. 发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取Github的公共时间线 >>> r = requests.get('https://github.com/timeline.json') 现在,我们有一个名为 r 的 Response 对象.可