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

如何用Puppeteer获取Discord Token?执行代码遇未定义错误

解决Puppeteer获取Discord Token时的webpackChunkdiscord_app未定义错误

问题原因

你写的代码错误地将浏览器环境的webpackChunkdiscord_app变量直接暴露在了Node.js上下文里,导致Node.js找不到这个变量报错。另外Discord的webpack chunk变量名可能随版本更新变化,硬写变量名也容易失效。

修复方案

1. 修正page.evaluate的使用逻辑

所有要在浏览器内执行的代码必须封装成函数传入page.evaluate,这样代码才会在浏览器上下文运行,能正常访问Discord页面的全局变量。

2. 动态查找webpack chunk变量

通过遍历window对象找到以webpackChunk开头的变量,避免硬写变量名导致的适配问题。

完整代码示例

const puppeteer = require('puppeteer');

(async () => {
  // 启动浏览器并添加反检测参数,避免被Discord识别为自动化工具
  const browser = await puppeteer.launch({
    headless: 'new',
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-blink-features=AutomationControlled'
    ],
    ignoreDefaultArgs: ['--enable-automation']
  });

  const page = await browser.newPage();
  // 跳转至Discord登录页,需自行补充登录逻辑(如输入账号密码、点击登录)
  await page.goto('https://discord.com/login');
  // 等待登录完成,以用户设置按钮出现作为登录成功标识
  await page.waitForSelector('[aria-label="User Settings"]');

  // 获取Token
  const token = await page.evaluate(() => {
    // 动态定位webpack chunk变量
    let webpackChunk;
    for (const key in window) {
      if (key.startsWith('webpackChunk')) {
        webpackChunk = window[key];
        break;
      }
    }
    if (!webpackChunk) return null;

    let modules = [];
    webpackChunk.push([
      "",
      {},
      (e) => {
        for (const c in e.c) modules.push(e.c[c]);
      }
    ]);

    // 查找包含getToken方法的模块
    const tokenModule = modules.find(m => m?.exports?.default?.getToken);
    return tokenModule?.exports?.default.getToken() || null;
  });

  console.log('获取到的Token:', token);
  await browser.close();
})();

额外提示

  • 必须使用await处理page.evaluate,因为它是异步函数,返回Promise对象。
  • 登录逻辑需要自行补充,比如通过page.type输入账号密码、page.click触发登录按钮等操作。
  • 如果仍无法获取Token,可能是Discord更新了webpack模块结构,需要重新定位存储Token的模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:30:53