sharex可通过webhook将截图/录屏事件实时推送至外部服务,支持原生配置、脚本中转、discord集成、zipline双向同步及系统化调试。

如果您在使用ShareX进行截图或录屏操作后,希望将事件结果(如文件上传完成、链接生成)实时推送至外部服务,则需通过Webhook机制实现自动化通知。以下是配置ShareX Webhook通知功能的详细步骤:
一、启用并配置ShareX内置Webhook
ShareX原生支持Webhook事件回调,可在任务完成后向指定URL发送HTTP POST请求,携带事件元数据(如文件路径、URL、缩略图地址等)。该功能依赖于“任务完成后运行命令/脚本”或“上传后运行Webhook”模块。
1、启动ShareX主程序,点击左上角“任务设置”按钮(齿轮图标)。
2、在左侧菜单中选择“Webhook”,确保右侧“启用Webhook”复选框已勾选。
3、在“URL”输入框中粘贴您的目标接收端点,例如:https://your-server.com/sharex-hook。
4、从下拉菜单中选择触发时机:“上传后”、“缩短URL后”或“两者都触发”。
5、在“请求头”区域点击“添加”,填入Key为Content-Type、Value为application/json的条目。
6、点击“测试Webhook”按钮,验证连接是否可达及响应状态码是否为200。
二、使用自定义脚本中转Webhook(适用于需签名或格式转换场景)
当目标服务要求特定认证方式(如HMAC签名)、字段重命名或JSON结构改造时,ShareX原生Webhook无法直接满足,需借助本地脚本作为中间层处理后再转发。
1、在ShareX“任务设置”→“常规”→“上传后运行命令”中,填写脚本绝对路径,例如:C:\sharex\hook-wrapper.ps1。
2、创建PowerShell脚本hook-wrapper.ps1,内容包含:读取ShareX传入的环境变量(如$env:UPLOAD_URL、$env:FILE_NAME),构造新JSON载荷,并调用Invoke-RestMethod发送至目标地址。
3、在脚本中加入HMAC-SHA256签名逻辑,使用预共享密钥对请求体哈希,并将结果写入X-Hub-Signature-256请求头。
4、保存脚本后,在ShareX中执行一次上传操作,检查Windows事件查看器或脚本日志确认执行成功。
三、集成Discord机器人实现即时消息推送
ShareX不直接支持Discord,但可通过Discord Webhook URL接收结构化通知。需确保Discord频道已启用Webhook,并配置允许外部POST请求。
1、登录Discord服务器,在目标频道设置中进入“集成”→“Webhook”,点击“新建Webhook”,复制生成的完整URL。
2、在ShareX“Webhook”设置页,“URL”栏粘贴该Discord Webhook地址,注意末尾不能有空格或换行符。
3、将“请求体”格式切换为“表单数据(x-www-form-urlencoded)”,并在“自定义参数”中添加键值对:
key=content,value=截图已上传:$uploadurl$。
4、点击“测试Webhook”,观察Discord频道是否立即收到含短链接的文本消息。
5、如需富媒体消息(含附件预览),则必须改用自定义脚本方案,构造符合Discord API规范的JSON结构并发送至同一URL。
四、对接Zipline服务器触发双向同步通知
Zipline作为ShareX常用后端,其自身具备Webhook能力。若同时在ShareX与Zipline两端启用Webhook,可形成事件闭环:ShareX上传→Zipline存储→Zipline再通知其他系统。
1、确认Zipline实例已部署并正常响应ShareX上传请求,且返回的JSON响应中包含url和shortUrl字段。
2、在Zipline配置文件中启用DISCORD_ON_UPLOAD_WEBHOOK_URL或HTTP_WEBHOOKS.upload,指向同一接收服务。
3、在ShareX“任务设置”→“上传后运行命令”中,调用curl命令向Zipline的/api/webhook/test端点发送空POST,触发Zipline主动回推。
4、检查Zipline日志输出,确认src/lib/webhooks/http.ts模块成功发出第二跳请求,状态码为200且无超时。
五、调试Webhook失败的常见定位方法
当Webhook未按预期触发时,需逐层排查网络链路、权限策略与数据格式问题,避免仅依赖ShareX界面提示。
1、在ShareX“历史记录”窗口中右键某次上传条目,选择“复制详细信息”,粘贴至文本编辑器,确认Webhook response字段是否存在非2xx状态码或超时标记。
2、在目标Webhook接收端启用调试模式(如使用RequestBin、Webhook.site或本地ngrok + Flask服务),捕获原始请求头与请求体,比对Content-Length与实际字节数是否一致。
3、检查Windows防火墙或第三方安全软件是否拦截了ShareX进程的出站连接,临时禁用后重试。
4、若使用HTTPS URL,确认目标服务器证书有效且由受信任CA签发;ShareX默认不跳过SSL验证,自签名证书将导致连接失败。
5、在ShareX“高级设置”→“日志”中启用“详细日志”,重启后复现问题,搜索关键词webhook定位错误堆栈。











