python Requests送信バンドcookiesの要求を実現します。
一、縁起
最近は「ヨーヨーヨー教室」のインターフェース自動化教程を勉強していますが、レクズがcookiesの要求を送る方法について言及しました。筆者もそれを実際のプロジェクトに使っています。大体次の通りです。
二、背景
実際の需要は監視プラットフォームの側でメッセージを送るのに異常がないかということです。異常があれば、アラームを起こしてメールを送ります。プロジェクトの中でメッセージを送るインターフェースはcookiesを持つ必要があります。
説明する
脚本の工程名はynJxhdSendMsgで、大体の構造は下図の通りです。
sendMsg.pyをメインプログラムとして、関数checkMsgは既報のリストでメッセージを検索し、関数sendMsgはメッセージを送信し、結果に基づいて対応する識別子 を返します。 sendAlertEmail.pyはメールを送信するためのプログラムであり、sendMsg.pyでは、異なる標識に従ってsendAlertEmail.pyの下のsend_を呼び出します。alert_email関数からアラームメールを送る 四、実現する
【ポイント】発注前にcookiesをロードする方法は以下の通りです。は、現在のタイムスタンプを有する特定メッセージを送信し、成功後にタイムスタンプで を検索するのに便利である。関数checkMsgは、送信済みメッセージリストの中で、送信済みメッセージを検索する である。関数sendMsgはメッセージであり、結果に基づいて対応する識別情報 を返す。 sendAlertEmailモジュールのsend_を導入する。alert_emailメソッドは、sendMsg.pyにおいて、異なる標識に従ってsend(u)を呼び出します。alert_email関数からアラームメールを送る
五、最後に
以上を完成して、脚本をjenkinsに置いてタイミングで構築すれば、リアルタイムでプラットフォーム側のメッセージを監視して状況を送り、警報メールの要求をタイムリーにフィードバックすることができます。
以上はpythonがRequestsを実現してcookies要求の詳しい内容を発送して、更にpython Requestsに関してcookies要求の資料を発送します。他の関連記事に注目してください。
最近は「ヨーヨーヨー教室」のインターフェース自動化教程を勉強していますが、レクズがcookiesの要求を送る方法について言及しました。筆者もそれを実際のプロジェクトに使っています。大体次の通りです。
二、背景
実際の需要は監視プラットフォームの側でメッセージを送るのに異常がないかということです。異常があれば、アラームを起こしてメールを送ります。プロジェクトの中でメッセージを送るインターフェースはcookiesを持つ必要があります。
説明する
脚本の工程名はynJxhdSendMsgで、大体の構造は下図の通りです。
【ポイント】発注前に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
#!/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要求の資料を発送します。他の関連記事に注目してください。