一、缘 起
最近学习【悠悠课堂】的接口自动化教程,文中提到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 import requests import time import re import sys sys.path.append('./') from sendAlertEmail import send_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 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0', 'Content-Type': 'application/x-www-form-urlencoded' } payload = { 'showFlag': '0', 'type': '1', 'fsnl': 'on', 'receiversId_': '63110542', 'receiveName': '9705家长;', 'content': 'Test msg sending,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) def checkMsg(): """ 在已发送短信列表检查已发送短信 :return: """ i = 1 while True: try: cm_resp = sess.get(msgList_url, headers=headers, allow_redirects=False) except Exception as e: return str(e) else: time.sleep(1) cm_key = re.findall('Test msg sending,time33 ' + now, cm_resp.text) i += 1 if i <= 30: if len(cm_key): break else: cm_key = ['More than 30 times,no result'] break print('Request %d times' % i) return cm_key def sendMsg(): """ send message :return: """ try: resp = sess.post(sendMsg_url, headers=headers, data=payload, allow_redirects=False) except Exception as e: return str(e) else: if resp.status_code == 200: key = re.findall('通知发送已成功', resp.text) cm_key = checkMsg() # print(key, cm_key) if len(key) and len(cm_key): if cm_key[0] == 'Test msg sending,time ' + now: return 200 elif cm_key[0] == 'More than 30 times,no result': return 'More than 30 times,no result' else: # print('Check Msg connect fail:' + str(cm_key)) return 'Check Msg connect fail: ' + cm_key elif resp.status_code == 302: return 302 else: return resp.status_code if __name__ == '__main__': receiver = ['**@***.com'] # 收件人邮件列表 status = sendMsg() print(status) if status == 200: alert_content = "normal" print('Test Success!') elif status == 'More than 30 times,no result': alert_content = "短信已发送,查询已发状态失败!" elif 'Check Msg connect fail:' in str(status): alert_content = "短信已发送,无法查询已发状态,报错信息:%s" % status.split(':')[-1] elif status == 302: alert_content = "Session失效,请重新获取'JSESSIONID'!" else: alert_content = "短信下发失败,报错信息:%s" % status if alert_content != "normal": send_alert_email(receiver, alert_content)
sendAlertEmail.py,方法较常见,此处略
五、最 后
完成以上,将脚本放在jenkins上定时构建,即可实现实时监控平台侧消息下发情况并及时反馈报警邮件的需求
以上就是python 实现Requests发送带cookies请求的详细内容,更多关于python Requests发送带cookies请求的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】