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

如何用纯JavaScript通过Discord用户ID批量获取用户数据及头像?

问题解答

不行,你没法仅靠Discord用户ID批量获取用户数据——Discord的API有严格的权限限制,discord.id这类工具本质也是依赖用户的个人认证令牌才能工作,不是公开无授权就能调用的。

为什么之前的尝试失败?

  • Discord的用户信息接口(GET /users/{user.id})必须携带有效的认证令牌:要么是机器人的Bot Token,要么是用户通过OAuth2授权拿到的个人User Token。无令牌请求会直接返回401未授权,这就是你碰壁的核心原因。
  • 就算有令牌,API还有调用频率限制,批量请求很容易触发限制导致请求失败。

纯前端JS的额外障碍

如果是浏览器环境的纯JS,还会遇到跨域问题:Discord API没有开启CORS允许前端直接请求,你没法在浏览器里直接发请求,必须靠后端代理,但这就不是纯前端JS能搞定的了。

合规的可行方案(仅限个人自用)

如果你只是自己使用,可以手动获取个人User Token(绝对不能分享给任何人,Discord禁止泄露令牌,否则账号可能被封),用Node.js写脚本批量请求:

const fs = require('fs');
const fetch = require('node-fetch');

// 读取存储用户ID的JSON文件
const userIds = JSON.parse(fs.readFileSync('user-ids.json', 'utf8'));
// 替换成你的个人User Token
const authToken = 'YOUR_PERSONAL_USER_TOKEN';

async function getUserData(userId) {
  try {
    const response = await fetch(`https://discord.com/api/v10/users/${userId}`, {
      headers: {
        'Authorization': authToken
      }
    });
    if (!response.ok) throw new Error(`请求失败,状态码:${response.status}`);
    return await response.json();
  } catch (error) {
    console.log(`获取ID为${userId}的用户数据失败:${error.message}`);
    return null;
  }
}

// 批量请求,添加延迟避免触发频率限制
async function batchGetUsers() {
  const collectedData = [];
  for (const id of userIds) {
    const userData = await getUserData(id);
    if (userData) collectedData.push(userData);
    // 每请求一次暂停1秒,降低触发rate limit的概率
    await new Promise(resolve => setTimeout(resolve, 1000));
  }
  // 将结果写入新的JSON文件
  fs.writeFileSync('user-data-result.json', JSON.stringify(collectedData, null, 2));
  console.log('批量获取完成,结果已保存');
}

batchGetUsers();

⚠️ 注意:使用个人令牌必须严格遵守Discord服务条款,禁止用于批量抓取、自动化操作等违规行为,否则你的Discord账号可能被永久封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:11:32