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

Node.js中Discord服务器加入请求的2captcha令牌配置问题

解决Discord加入服务器API的hCaptcha令牌传递问题

要通过2Captcha解决Discord的hCaptcha校验并成功调用加入服务器API,你需要将2Captcha返回的验证令牌放在POST请求的data参数中,字段名为captcha_key,具体步骤如下:

1. 用2Captcha获取hCaptcha验证令牌

首先调用2Captcha的API提交hCaptcha任务,需要用到Discord返回的captcha_sitekey(即4c672d35-0701-42b2-88c3-78380b0db560)和Discord的域名https://discord.com。示例代码:

// 替换为你的2Captcha API密钥
const CAPTCHA_API_KEY = "你的2Captcha密钥";
const sitekey = "4c672d35-0701-42b2-88c3-78380b0db560";
const pageurl = "https://discord.com";

async function getCaptchaToken() {
  // 提交hCaptcha任务
  const submitResponse = await axios.post(`https://2captcha.com/in.php?key=${CAPTCHA_API_KEY}&method=hcaptcha&sitekey=${sitekey}&pageurl=${pageurl}`);
  if (!submitResponse.data.startsWith("OK|")) {
    throw new Error("提交验证码任务失败: " + submitResponse.data);
  }
  const taskId = submitResponse.data.split("|")[1];

  // 轮询获取验证结果
  while (true) {
    await new Promise(resolve => setTimeout(resolve, 2000));
    const resultResponse = await axios.get(`https://2captcha.com/res.php?key=${CAPTCHA_API_KEY}&action=get&id=${taskId}`);
    if (resultResponse.data.startsWith("OK|")) {
      return resultResponse.data.split("|")[1];
    } else if (resultResponse.data === "CAPCHA_NOT_READY") {
      continue;
    } else {
      throw new Error("获取验证码结果失败: " + resultResponse.data);
    }
  }
}

2. 将令牌传入Discord的POST请求中

拿到2Captcha返回的令牌后,把它添加到请求的data对象里,字段名为captcha_key,同时调整请求参数确保适配API要求:

async function joinServer(inviteCode, authToken) {
  try {
    const captchaToken = await getCaptchaToken();
    
    const response = await axios.request({
      method: 'post',
      url: `https://discord.com/api/v9/invites/${inviteCode}`,
      headers: { 
        'Authorization': authToken,
        'accept': 'application/json', // 改为接受JSON格式,更适配API请求
        'accept-language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7', 
        'referer': 'https://discord.com/', 
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
      },
      data: {
        captcha_key: captchaToken
        // 若需其他参数(如跳过验证选项),可参考Discord API文档添加
      }
    });
    
    console.log("成功加入服务器:", response.data);
    return response.data;
  } catch (error) {
    console.error("加入失败:", error.response?.data || error.message);
    throw error;
  }
}

// 调用示例
joinServer("你的邀请码", "你的Discord令牌");

关键注意事项

  • 字段名必须准确:Discord API指定用captcha_key字段传递验证码令牌,不可使用其他名称。
  • 端点域名修正:使用discord.com而非discordapp.com,避免不必要的重定向问题。
  • Headers精简:移除浏览器导航类Headers(如sec-fetch-*、upgrade-insecure-requests),仅保留API请求必需的核心Headers。
  • 2Captcha参数匹配:提交任务时的sitekey和pageurl必须与Discord返回的完全一致,否则无法生成有效验证令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:38