濮阳杆衣贸易有限公司

主頁 > 知識庫 > python 實現(xiàn)Requests發(fā)送帶cookies的請求

python 實現(xiàn)Requests發(fā)送帶cookies的請求

熱門標簽:鎮(zhèn)江人工外呼系統(tǒng)供應商 深圳網(wǎng)絡外呼系統(tǒng)代理商 千呼ai電話機器人免費 申請辦個400電話號碼 外呼系統(tǒng)前面有錄音播放嗎 騰訊地圖標注有什么版本 柳州正規(guī)電銷機器人收費 400電話辦理費用收費 高德地圖標注字母

一、緣 起

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

二、背 景

實際需求是監(jiān)控平臺側下發(fā)消息有無異常,如有異常便觸發(fā)報警推送郵件,項目中下發(fā)消息接口需要帶cookies

三、說 明

腳本的工程名為ynJxhdSendMsg,大致結構如下圖

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

四、實 現(xiàn)

【重點】發(fā)請求之前先加載cookies,方法如下

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

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

五、最 后

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

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

您可能感興趣的文章:
  • python爬蟲請求庫httpx和parsel解析庫的使用測評
  • python爬蟲系列網(wǎng)絡請求案例詳解
  • 詳解python requests中的post請求的參數(shù)問題
  • 快速一鍵生成Python爬蟲請求頭
  • Python3+Django get/post請求實現(xiàn)教程詳解
  • python實現(xiàn)三種隨機請求頭方式
  • Python urllib request模塊發(fā)送請求實現(xiàn)過程解析
  • python 爬蟲請求模塊requests詳解
  • Python Http請求json解析庫用法解析
  • python 發(fā)送get請求接口詳解
  • python+excel接口自動化獲取token并作為請求參數(shù)進行傳參操作
  • Python使用grequests并發(fā)發(fā)送請求的示例
  • Python爬蟲基礎講解之請求

標簽:郴州 平頂山 哈爾濱 烏蘭察布 大慶 海南 合肥 烏蘭察布

巨人網(wǎng)絡通訊聲明:本文標題《python 實現(xiàn)Requests發(fā)送帶cookies的請求》,本文關鍵詞  python,實現(xiàn),Requests,發(fā)送,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python 實現(xiàn)Requests發(fā)送帶cookies的請求》相關的同類信息!
  • 本頁收集關于python 實現(xiàn)Requests發(fā)送帶cookies的請求的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    宝丰县| 彭州市| 青龙| 巫溪县| 綦江县| 新龙县| 台州市| 西藏| 翁源县| 宜都市| 巴林左旗| 翼城县| 全州县| 惠安县| 息烽县| 泊头市| 桦南县| 普宁市| 镇雄县| 泽州县| 澜沧| 乌兰县| 广汉市| 武汉市| 万盛区| 大新县| 于都县| 桦南县| 库尔勒市| 曲靖市| 南充市| 平南县| 登封市| 长丰县| 乌兰浩特市| 满洲里市| 哈密市| 体育| 通州市| 东辽县| 唐河县|