钉钉webhook小笔记

本文介绍如何通过Flask搭建中间服务,将Xray扫描结果转换为钉钉/企微格式,以实时通知漏洞信息。重点涉及对接Xray API、定制Markdown消息格式,并强调关键字验证和不同平台的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好久没记笔记了,上次记笔记还是在上次

当时还是个菜鸡,现在也是

没事闲搞想 xray使用webhook发送结果到钉钉

因为xray的输出格式是固定的,所以需要一个中间的服务接受再按钉钉/企微格式发送下,这就用到方便的flask了。

先上代码

from flask import Flask, request
import requests
import datetime
import json

app = Flask(__name__)



#钉钉webhook接口
def DingWebhook(message):
    url='https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx'
    #need with keyword
    program={
        "markdown": {
            "title":"xray通知",
            "text": message+"xx关键字xx"
        },
        "msgtype": "markdown"
    }
    headers={'Content-Type': 'application/json'}
    f=requests.post(url,data=json.dumps(program),headers=headers)
    print(f.text)



@app.route('/webhook', methods=['POST'])
def xray_webhook():
    data = request.json
    #print("****************************")
    #print(data)
    #print("****************************")
    data_type = data['type']
    vuln = data["data"]
    # 因为还会收到 https://chaitin.github.io/xray/#/webhook/statistic 的数据
    if data_type != "web_vuln":
        return "ok"
    content = """ ## xray 发现了新漏洞\n

url: {url}

插件: {plugin}

payload: {payload}

发现时间: {create_time}

请及时查看和处理
""".format(url=vuln["target"]["url"], payload=vuln['detail']['payload'],plugin=vuln["plugin"],
           create_time=str(datetime.datetime.fromtimestamp(vuln["create_time"] / 1000)))
    print(content)
    DingWebhook(content)
    return 'ok'

if __name__ == '__main__':
    app.run(host='0.0.0.0',port='6655')

 python3运行脚本,扫描时候后边加上一句    --wo http://127.0.0.1:6655/webhook 就ok了

 

有几个地方需要注意

  • 钉钉的md标题是不显示在聊天内容里边的,只显示在聊天窗口,app的状态栏提示等
  • 代码里边的 `xx关键字xx`是钉钉里边设置的,防止被攻击滥用,内容必须包含指定关键字
  • 企微和钉钉的发送大同小异,格式稍微有点区别
  • markdown格式比text清晰、明了

要在Python中创建钉钉机器人,可以按照以下步骤进行操作: 1. 首先,需要在钉钉中创建一个群消息机器人。可以参考\[1\]中的钉钉机器人的创建方法。 2. 在Python中,可以使用requests库发送HTTP请求来调用钉钉机器人的接口。可以参考\[3\]中的代码示例。 3. 在代码中,需要提供机器人的webhook地址,这是用来接收消息的URL。可以在钉钉机器人的创建过程中获取到webhook地址。 4. 根据需要,可以选择不同的消息类型进行发送,如基础text类型信息、markdown格式文本、@功能、网页链接、ActionCard类型消息或FeedCard类型消息。可以参考\[1\]中的钉钉机器人的调用方法。 5. 编写代码发送消息,并将消息内容作为参数传递给钉钉机器人的接口。 下面是一个示例代码,用于发送一个基础text类型的消息到钉钉机器人: ```python import requests def send_dingding_message(message, webhook): data = { "msgtype": "text", "text": { "content": message } } response = requests.post(webhook, json=data) if response.status_code == 200: print("消息发送成功") else: print("消息发送失败") webhook = "your_webhook_url" message = "Hello, World!" send_dingding_message(message, webhook) ``` 请将"your_webhook_url"替换为你自己的钉钉机器人的webhook地址。这段代码将发送一个内容为"Hello, World!"的文本消息到钉钉机器人。 希望这个示例能帮助你创建钉钉机器人。如果需要其他类型的消息发送方法,请参考\[1\]中的钉钉机器人的调用方法。 #### 引用[.reference_title] - *1* *2* *3* [Python笔记钉钉机器人使用方法](https://blog.csdn.net/codename_cys/article/details/107850101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值