python怎么实现Requests发送带cookies的请求
这篇文章给大家分享的是有关python怎么实现Requests发送带cookies的请求的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、缘 起
最近学习接口自动化教程,提到Requests发送带cookies请求的方法,随之也将其用于手头实际项目中,大致如下
二、背 景
实际需求是监控平台侧下发消息有无异常,如有异常便触发报警推送邮件,项目中下发消息接口需要带cookies
三、说 明
脚本的工程名为ynJxhdSendMsg,大致结构如下图
sendMsg.py为主程序,函数checkMsg为在已发消息列表中查找已下发消息,函数sendMsg为发消息并根据结果返回对应的标识
sendAlertEmail.py为发送邮件程序,在sendMsg.py中根据不同标识调用sendAlertEmail.py下的send_alert_email函数发报警邮件
四、实 现
【重点】发请求之前先加载cookies,方法如下
~ ...... ~ #加载cookies #第一步,引入RequestsCookieJar() coo=requests.cookies.RequestsCookieJar() #第二步,设置cookies参数,coo.set('key','value') coo.set('__utma','82342229.1946326147.***.1545556722.1545556733.4') coo.set('JSESSIONID','D898010550***ADB0600BF31FF') #第三步,引入seeeion(),并update sess=requests.session() sess.cookies.update(coo) ~ ...... ~
sendMsg.py
发送带当前时间戳的特定消息,在发送成功后便于通过时间戳检索
函数checkMsg为在已发消息列表中查找已下发消息
函数sendMsg为发消息并根据结果返回对应的标识
导入sendAlertEmail模块的send_alert_email方法,在sendMsg.py中根据不同标识调用send_alert_email函数发报警邮件
#!/usr/bin/python #coding=utf-8 #author:葛木瓜 #2018.12.20 importrequests importtime importre importsys sys.path.append('./') fromsendAlertEmailimportsend_alert_email now=time.strftime('%Y.%m.%d%H:%M:%S')#获取当前时间 sendMsg_url='http://*.*.*.*/interactive/sendMessage.action' msgList_url='http://*.*.*.*/interactive/sendedMessageList.action' headers={ 'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64;rv:56.0)Gecko/20100101Firefox/56.0', 'Content-Type':'application/x-www-form-urlencoded' } payload={ 'showFlag':'0', 'type':'1', 'fsnl':'on', 'receiversId_':'63110542', 'receiveName':'9705家长;', 'content':'Testmsgsending,time'+now, 'templateType':'1', 'addTeachername':'0', 'isGreed':'0', 'send':'1', 'startDayTime':'2018-12-20', 'hourss':'22', 'munit':'29', 'selectRole':'2', 'receiversIds':'63110542', 'templateFlag':'0' } #加载cookies coo=requests.cookies.RequestsCookieJar() coo.set('__utma','82342229.1946326147.***.1545556722.1545556733.4') coo.set('JSESSIONID','D898010550***ADB0600BF31FF') sess=requests.session() sess.cookies.update(coo) defcheckMsg(): """ 在已发送短信列表检查已发送短信 :return: """ i=1 whileTrue: try: cm_resp=sess.get(msgList_url,headers=headers,allow_redirects=False) exceptExceptionase: returnstr(e) else: time.sleep(1) cm_key=re.findall('Testmsgsending,time33'+now,cm_resp.text) i+=1 ifi<=30: iflen(cm_key): break else: cm_key=['Morethan30times,noresult'] break print('Request%dtimes'%i) returncm_key defsendMsg(): """ sendmessage :return: """ try: resp=sess.post(sendMsg_url,headers=headers,data=payload,allow_redirects=False) exceptExceptionase: returnstr(e) else: ifresp.status_code==200: key=re.findall('通知发送已成功',resp.text) cm_key=checkMsg() #print(key,cm_key) iflen(key)andlen(cm_key): ifcm_key[0]=='Testmsgsending,time'+now: return200 elifcm_key[0]=='Morethan30times,noresult': return'Morethan30times,noresult' else: #print('CheckMsgconnectfail:'+str(cm_key)) return'CheckMsgconnectfail:'+cm_key elifresp.status_code==302: return302 else: returnresp.status_code if__name__=='__main__': receiver=['**@***.com']#收件人邮件列表 status=sendMsg() print(status) ifstatus==200: alert_content="normal" print('TestSuccess!') elifstatus=='Morethan30times,noresult': alert_content="短信已发送,查询已发状态失败!" elif'CheckMsgconnectfail:'instr(status): alert_content="短信已发送,无法查询已发状态,报错信息:%s"%status.split(':')[-1] elifstatus==302: alert_content="Session失效,请重新获取'JSESSIONID'!" else: alert_content="短信下发失败,报错信息:%s"%status ifalert_content!="normal": send_alert_email(receiver,alert_content)
sendAlertEmail.py,方法较常见,此处略
五、最 后
完成以上,将脚本放在jenkins上定时构建,即可实现实时监控平台侧消息下发情况并及时反馈报警邮件的需求
感谢各位的阅读!关于“python怎么实现Requests发送带cookies的请求”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
推荐阅读
-
Python多线程抓取代理服务器
Python作为一门功能强大的脚本语言来说,经常被用来写爬虫程序,下面是Python爬虫多线程抓取代理服务器。年前是用//lin...
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
本篇文章给大家分享的是有关python中变量的存储原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有...
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
这篇文章主要介绍“python怎么实现批量文件加密功能”,在日常操作中,相信很多人在python怎么实现批量文件加密功能问题上存在...
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...