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

Node.js跨设备复用funcaptcha的challenge调用getImage()报错解决

问题:保存funcaptcha Challenge到文件后无法调用getImage()函数

问题原因

  1. 第一台电脑中,challenge是funcaptcha.SessionChallenge类的实例对象,自带getImage()方法。
  2. 直接使用fs.writeFile(filePath, challenge)保存时,Node.js会把实例对象隐式转换为字符串(或不完整的JSON),丢失了类实例的方法和原型链。
  3. 第二台电脑读取后得到的只是普通的字符串/JSON对象,不是SessionChallenge类的实例,因此没有getImage()方法,触发TypeError。

修复方案

步骤1:修正第一台电脑的保存代码

需要将SessionChallenge实例序列化为完整的JSON字符串保存,确保所有必要数据都被存储:

const fun = require("funcaptcha");
const fs = require('fs');

async function saveChallenge() {
    // 获取token并创建session
    const token = await fun.getToken({
        pkey: "476068BF-9607-4799-B53D-966BE98E2B81",
        site: "https://roblox-api.arkoselabs.com",
    });
    const session = new fun.Session(token);
    const challenge = await session.getChallenge();

    // 测试方法可用性
    await challenge.getImage();
    console.log("本地测试图片获取成功");

    // 将实例序列化为JSON字符串保存
    const filePath = "./challenge.json"; // 替换为你的文件路径
    fs.writeFileSync(filePath, JSON.stringify(challenge));
    console.log("Challenge已成功保存到文件");
}

saveChallenge();

步骤2:修正第二台电脑的读取代码

读取JSON文件后,需要重新构建SessionChallenge类的实例,恢复其方法:

const fun = require("funcaptcha");
const fs = require('fs');

async function loadChallengeAndGetImage() {
    const filePath = "./challenge.json"; // 替换为你的文件路径
    // 读取并解析JSON数据
    const challengeData = JSON.parse(fs.readFileSync(filePath, 'utf8'));

    // 重新创建Session和SessionChallenge实例
    const session = new fun.Session(challengeData.session.token);
    const challenge = new fun.SessionChallenge(session, challengeData);

    // 调用getImage()方法
    const image = await challenge.getImage();
    console.log("跨设备图片获取成功");
    // 这里可以对image进行后续处理
}

loadChallengeAndGetImage();

额外注意点

  • 避免使用异步fs.readFile的回调写法,容易出现变量作用域和异步顺序问题,优先使用同步fs.readFileSync或await fs.promises.readFile。
  • 确保两台电脑都安装了相同版本的funcaptcha库,避免因版本差异导致的实例构造差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:16:07