欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 實(shí)現(xiàn)Requests發(fā)送帶cookies的請(qǐng)求

 更新時(shí)間:2021年02月08日 11:07:27   作者:葛木瓜  
這篇文章主要介紹了python 實(shí)現(xiàn)Requests發(fā)送帶cookies請(qǐng)求的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

一、緣 起

最近學(xué)習(xí)【悠悠課堂】的接口自動(dòng)化教程,文中提到Requests發(fā)送帶cookies請(qǐng)求的方法,筆者隨之也將其用于手頭實(shí)際項(xiàng)目中,大致如下

二、背 景

實(shí)際需求是監(jiān)控平臺(tái)側(cè)下發(fā)消息有無(wú)異常,如有異常便觸發(fā)報(bào)警推送郵件,項(xiàng)目中下發(fā)消息接口需要帶cookies

三、說(shuō) 明

腳本的工程名為ynJxhdSendMsg,大致結(jié)構(gòu)如下圖

  1. sendMsg.py為主程序,函數(shù)checkMsg為在已發(fā)消息列表中查找已下發(fā)消息,函數(shù)sendMsg為發(fā)消息并根據(jù)結(jié)果返回對(duì)應(yīng)的標(biāo)識(shí)
  2. sendAlertEmail.py為發(fā)送郵件程序,在sendMsg.py中根據(jù)不同標(biāo)識(shí)調(diào)用sendAlertEmail.py下的send_alert_email函數(shù)發(fā)報(bào)警郵件

四、實(shí) 現(xiàn)

【重點(diǎn)】發(fā)請(qǐng)求之前先加載cookies,方法如下

~
......
~
# 加載cookies
# 第一步,引入RequestsCookieJar()
coo = requests.cookies.RequestsCookieJar()
# 第二步,設(shè)置cookies參數(shù),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. 發(fā)送帶當(dāng)前時(shí)間戳的特定消息,在發(fā)送成功后便于通過(guò)時(shí)間戳檢索
  2. 函數(shù)checkMsg為在已發(fā)消息列表中查找已下發(fā)消息
  3. 函數(shù)sendMsg為發(fā)消息并根據(jù)結(jié)果返回對(duì)應(yīng)的標(biāo)識(shí)
  4. 導(dǎo)入sendAlertEmail模塊的send_alert_email方法,在sendMsg.py中根據(jù)不同標(biāo)識(shí)調(diào)用send_alert_email函數(shù)發(fā)報(bào)警郵件
#!/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') # 獲取當(dāng)前時(shí)間
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家長(zhǎng);',
  '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():
  """
  在已發(fā)送短信列表檢查已發(fā)送短信
  :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('通知發(fā)送已成功', 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 = "短信已發(fā)送,查詢已發(fā)狀態(tài)失?。?
  elif 'Check Msg connect fail:' in str(status):
    alert_content = "短信已發(fā)送,無(wú)法查詢已發(fā)狀態(tài),報(bào)錯(cuò)信息:%s" % status.split(':')[-1]
  elif status == 302:
    alert_content = "Session失效,請(qǐng)重新獲取'JSESSIONID'!"
  else:
    alert_content = "短信下發(fā)失敗,報(bào)錯(cuò)信息:%s" % status
  if alert_content != "normal":
    send_alert_email(receiver, alert_content)

sendAlertEmail.py,方法較常見,此處略

五、最 后

完成以上,將腳本放在jenkins上定時(shí)構(gòu)建,即可實(shí)現(xiàn)實(shí)時(shí)監(jiān)控平臺(tái)側(cè)消息下發(fā)情況并及時(shí)反饋報(bào)警郵件的需求

以上就是python 實(shí)現(xiàn)Requests發(fā)送帶cookies請(qǐng)求的詳細(xì)內(nèi)容,更多關(guān)于python Requests發(fā)送帶cookies請(qǐng)求的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python讀取文件由于編碼問(wèn)題失敗匯總以及解決辦法

    python讀取文件由于編碼問(wèn)題失敗匯總以及解決辦法

    這篇文章主要給大家介紹了關(guān)于python讀取文件由于編碼問(wèn)題失敗匯總以及解決辦法的相關(guān)資料,文件編碼錯(cuò)誤指的是在Python讀取文件的過(guò)程中出現(xiàn)的編碼不匹配的問(wèn)題,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于python爬蟲的原理解析

    關(guān)于python爬蟲的原理解析

    這篇文章主要介紹了python爬蟲原理,今天我們要向大家詳細(xì)解說(shuō)python爬蟲原理,什么是python爬蟲,python爬蟲工作的基本流程是什么等內(nèi)容,希望對(duì)這正在進(jìn)行python爬蟲學(xué)習(xí)的同學(xué)有所幫助
    2023-07-07
  • python IDLE添加行號(hào)顯示教程

    python IDLE添加行號(hào)顯示教程

    這篇文章主要介紹了python IDLE添加行號(hào)顯示教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 使用Python一鍵提取PDF中的表格到Excel的方法詳解

    使用Python一鍵提取PDF中的表格到Excel的方法詳解

    從PDF文件獲取表格中的數(shù)據(jù),也是日常辦公容易涉及到的一項(xiàng)工作,一個(gè)一個(gè)復(fù)制吧,效率確實(shí)太低了,用Python從PDF文檔中提取表格數(shù)據(jù),并寫入Excel文件,灰常灰常高效,本文就給大家介紹一下如何使用Python一鍵提取PDF中的表格到Excel,需要的朋友可以參考下
    2023-08-08
  • pip安裝tensorflow的坑的解決

    pip安裝tensorflow的坑的解決

    這篇文章主要介紹了pip安裝tensorflow的坑的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法

    Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python運(yùn)維之獲取系統(tǒng)CPU信息的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 詳解Pandas中GroupBy對(duì)象的使用

    詳解Pandas中GroupBy對(duì)象的使用

    本文將探討如何在Python的Pandas庫(kù)中創(chuàng)建GroupBy對(duì)象以及該對(duì)象的工作原理。我們將詳細(xì)了解分組過(guò)程的每個(gè)步驟,以及我們可以從中提取哪些有用信息,需要的可以參考一下
    2022-06-06
  • Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄

    Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄

    這篇文章主要介紹了Python?+?Tkinter連接本地MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄。下面文章著情介紹,需要的小伙伴可以參考一下
    2022-01-01
  • Python3爬蟲里關(guān)于Splash負(fù)載均衡配置詳解

    Python3爬蟲里關(guān)于Splash負(fù)載均衡配置詳解

    在本篇文章里小編給大家分享了關(guān)于Python3爬蟲里關(guān)于Splash負(fù)載均衡配置的相關(guān)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • Python利用AutoGrad實(shí)現(xiàn)自動(dòng)計(jì)算函數(shù)斜率和梯度

    Python利用AutoGrad實(shí)現(xiàn)自動(dòng)計(jì)算函數(shù)斜率和梯度

    AutoGrad 是一個(gè)老少皆宜的 Python 梯度計(jì)算模塊。對(duì)于大學(xué)生、機(jī)器學(xué)習(xí)愛好者而言,你只需要傳遞給它Numpy這樣的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)下編寫的損失函數(shù),它就可以自動(dòng)計(jì)算損失函數(shù)的導(dǎo)數(shù)(梯度)。本文將從普通斜率計(jì)算開始,介紹到如何只使用它來(lái)實(shí)現(xiàn)一個(gè)邏輯回歸模型
    2022-07-07

最新評(píng)論