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实现dnspod自动更新dns解析的方法
Feb 14 Python
python中遍历文件的3个方法
Sep 02 Python
Pycharm学习教程(2) 代码风格
May 02 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
python变量命名的7条建议
Jul 04 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
opencv实现图像几何变换
Mar 24 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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
nginx下安装php7+php5
2016/07/31 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
PHP7内核之Reference详解
2019/03/14 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
jQuery实现跨域
2015/02/03 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
keras输出预测值和真实值方式
2020/06/27 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
财务部会计岗位职责
2015/02/03 职场文书
计生个人工作总结
2015/02/28 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书