Наверное, есть такая необходимость
Как только вы поймете необходимость, идите Официальный сайт Я ищу документацию.
На самом деле, в документе официального сайта об этом сказано очень четко. Нечего добавить.
Запуск с помощью Flash
Основной логический код
from flask import Flask
# http://flask.pocoo.org/docs/0.12/api/#flask.Flask
app = Flask(__name__)
@app.route('/HelloWorld')
def hello_world():
return "Hello World!"
if __name__ == "__main__":
# http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application
app.run(host='0.0.0.0', port='5000')
При использовании Python для открытия веб-службы Flask
Вы также можете запустить его таким образом
if __name__ == "__main__":
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 8083))
server_socket.listen(120)
while True:
client_socket, client_address = server_socket.accept()
handle_client_process = Process(target=handle_client, args=(client_socket,))
handle_client_process.start()
client_socket.close()
Затем просто реализуйте handle_client. Пространство ограничено. Полный код можно получить, подписавшись на публичный аккаунт Luol Street.
процесс
Выберите пользовательского робота
Затем настройте один из методов безопасности
Получите адрес вебхука.
Вы также можете сначала создать завиток, чтобы проверить его.
curl 'https://oapi.dingtalk.com/robot/send?access_token=381c2f405e0f906fd556b27cea9f66864120860b5d8b117bb046e10b6599b050×tamp=1613211530113&secret=SEC2e67120c5e4affa1177ac25fe8dc77ba1c5b49284a9dc7e1888770bc3b76b1fc' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "test"}}'
Основной логический код
import base64
import hashlib
import hmac
import json
import time
import urllib
import urllib.parse
import requests
def sign():
timestamp = str(round(time.time() * 1000))
secret = "SECe5d17dac6060b76c01ea60aec260fe76c6e0644394b932bfffa963342bb630a1"
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign_res = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return timestamp, sign_res
def send_ding_message(text_info):
webhook = "https://oapi.dingtalk.com/robot/send?access_token=f069339ad1fcb9410d0e96fd947d9a2bf3416451d01dc97e3ef4256c1fdb2b7a"
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
text = text_info
message = {
"msgtype": "text",
"text": {
"content": text
},
"at": {
# "isAtAll": False
# "atMobiles": [
# "18512345678"
# ]
"atUserIds": [
"lbkgv8q"
]
}
}
message_json = json.dumps(message)
timestamp, sign_res = sign()
webhook += "×tamp=" + timestamp + "&sign=" + sign_res
info = requests.post(url=webhook, data=message_json, headers=header)
def usage():
send_ding_message('test 1')
if __name__ == "__main__":
usage()
Эффект
Просто перейдите по ссылке и сначала добавьте его
Поскольку DingTalk необходимо перезвонить нашему сервису, нам необходимо проверить легальность токена и его подписи.
timestamp = request.headers.get('Timestamp')
sign = request.headers.get('Sign')
if sign(timestamp) == sign:
Сгенерировать правила, приведены официальные примеры
def sign():
timestamp = str(round(time.time() * 1000))
secret = "SECe5d17dac6060b76c01ea60aec260fe76c6e0644394b932bfffa963342bb630a1"
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign_res = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return timestamp, sign_res
Конечно, вы также можете использовать сегмент IP для проверки безопасности.
Если это внутренняя сеть предприятия, а не общедоступная сеть, для проникновения в нее необходимо использовать внутреннюю сеть. Чиновник также привел примеры, поэтому я не буду их здесь повторять.