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

Node.js/TypeScript代理脚本自动选择NTLM凭据选项失败求助

解决终端交互选择第一个选项失败的问题

核心问题排查与修复方案

  • 输入时机不匹配:终端的选项提示是异步输出的,若在提示出现前就发送输入,会导致输入被忽略或被后续输出干扰。
    修复逻辑:监听stdout的data事件,匹配到包含「User credentials (NTLM)」的提示内容后,再发送选择指令。
    示例代码:

    process.stdout.on('data', (chunk) => {
      const output = chunk.toString();
      if (output.includes('User credentials (NTLM)')) {
        // 兼容不同系统终端的换行符
        process.stdin?.write('1\r\n');
      }
    });
    
  • 换行符格式错误:Windows终端用\r\n作为确认输入的换行符,仅发送\n可能无法被识别。
    修复逻辑:根据系统动态适配换行符,或直接发送\r\n(多数终端兼容该格式)。
    示例代码:

    const newline = process.platform === 'win32' ? '\r\n' : '\n';
    process.stdin?.write(`1${newline}`);
    
  • 终端原始模式干扰:若代理命令启用了终端原始模式,stdin输入不会被自动解析。
    修复逻辑:临时关闭原始模式发送输入,必要时再恢复。
    示例代码:

    process.stdin.setRawMode(false);
    process.stdin?.write('1\r\n');
    // 业务需要时切回原始模式
    process.stdin.setRawMode(true);
    
  • 输入缓冲延迟:部分终端程序会缓冲输出,导致提示检测时机滞后。
    临时排查方案:添加微小延迟后发送输入(不推荐作为长期解决方案)。
    示例代码:

    setTimeout(() => {
      process.stdin?.write('1\r\n');
    }, 500);
    

调试技巧

  • 打印stdout的所有输出内容,确认选项提示的完整文本和出现时机,避免关键词匹配错误。
  • 监听stdin的data事件,验证发送的输入是否被终端正确接收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:02