python 实现Requests发送带cookies的请求


Posted in Python onFebruary 08, 2021

一、缘 起

最近学习【悠悠课堂】的接口自动化教程,文中提到Requests发送带cookies请求的方法,笔者随之也将其用于手头实际项目中,大致如下

二、背 景

实际需求是监控平台侧下发消息有无异常,如有异常便触发报警推送邮件,项目中下发消息接口需要带cookies

三、说 明

脚本的工程名为ynJxhdSendMsg,大致结构如下图

python 实现Requests发送带cookies的请求

  1. sendMsg.py为主程序,函数checkMsg为在已发消息列表中查找已下发消息,函数sendMsg为发消息并根据结果返回对应的标识
  2. 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

  1. 发送带当前时间戳的特定消息,在发送成功后便于通过时间戳检索
  2. 函数checkMsg为在已发消息列表中查找已下发消息
  3. 函数sendMsg为发消息并根据结果返回对应的标识
  4. 导入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请求的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python采集腾讯新闻实例
Jul 10 Python
python中enumerate的用法实例解析
Aug 18 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python实现八大排序算法
Aug 13 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
python zip()函数的使用示例
Sep 23 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
PyCharm2020.3.2安装超详细教程
Feb 08 #Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 #Python
如何用Python编写一个电子考勤系统
Feb 08 #Python
python编程的核心知识点总结
Feb 08 #Python
python上下文管理器异常问题解决方法
Feb 07 #Python
python中@contextmanager实例用法
Feb 07 #Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 #Python
You might like
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
js定时器实例分享
2016/12/20 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
python实现ftp客户端示例分享
2014/02/17 Python
python任务调度实例分析
2015/05/19 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
django用户登录和注销的实现方法
2018/07/16 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
工作时间上网检讨书
2014/02/03 职场文书
环保倡议书范文
2014/05/12 职场文书
司机岗位职责说明书
2014/07/29 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers