You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用requests模块调用Discord Webhook发消息遇403错误求解决

不用requests给Discord Webhook发消息(解决403 Forbidden问题)

嘿,你遇到的403错误其实是因为Discord的Webhook接口对请求格式有明确要求,你的代码漏掉了关键的请求头部信息,导致服务器直接拒绝了你的请求~

问题根源

Discord的Webhook端点需要两个核心请求头部:

  • Content-Type: application/json:必须告诉服务器你发送的是JSON格式的数据,不然它无法正确解析你的请求体
  • 可选但推荐的User-Agent:避免被Discord的反拦截机制当成可疑请求屏蔽

你之前的代码只传递了JSON数据,但没设置这些头部,所以触发了403禁止访问。

修改后的可用代码

import urllib2
import json

# 替换成你的Discord Webhook链接
webhook_url = '你的Webhook URL'
# 构造符合Discord要求的消息内容
message_data = {
    "username": "Bot",
    "text": "This is a test message."
}
# 将Python字典转换为JSON字符串
json_data = json.dumps(message_data)

# 创建请求对象
req = urllib2.Request(webhook_url, json_data)
# 添加必须的Content-Type头部
req.add_header('Content-Type', 'application/json')
# 添加一个常见的User-Agent,降低被拦截概率
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')

try:
    # 发送请求并获取响应
    response = urllib2.urlopen(req)
    response_content = response.read()
    print("消息发送成功!服务器响应:", response_content)
except urllib2.HTTPError as e:
    print(f"请求失败,状态码: {e.code}")
    print(f"错误详情: {e.read()}")

额外注意事项

  • 确保你的Webhook链接完全正确,没有拼写错误,也没有被服务器管理员删除或过期
  • 如果还是出现403,可以尝试更换一个不同的User-Agent值,比如手机端的UA字符串
  • Discord的Webhook还支持嵌入消息、@用户等复杂格式,你可以根据需求调整message_data的结构

内容的提问来源于stack exchange,提问作者Fabulous Job

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:27:44