jackwener/OpenCLI · error · AuthRequiredError

note.youdao.com

Error message

note.youdao.com

What it means

AuthRequiredError thrown by normalizeExtractionResult when the in-page classifier detects login/permission text ('登录', '无权', 'forbidden', captcha, etc.) on the shared note page (reason === 'auth'). The shared note requires login or extra permission, which the anonymous browser session doesn't have; the message 'note.youdao.com' is the site field of the error.

Source

Thrown at clis/youdao/note.js:181

            }
          }
        } catch {}
      }
      return [true, title, content, summary, keywords.join(' | '), contentData.ct || null, contentData.sz || null, hasContentField, rawContent.length, window.location.href];
    })()
  `;
}

function normalizeExtractionResult(payload, sourceUrl) {
  const data = unwrapEvaluateResult(payload);
  if (!Array.isArray(data)) {
    throw new CommandExecutionError('Youdao note extractor returned a malformed payload');
  }
  const ok = data[0] === true;
  if (!ok) {
    const reason = typeof data[1] === 'string' && data[1].trim() ? data[1].trim() : 'unknown_parser_failure';
    if (reason === 'auth') {
      throw new AuthRequiredError('note.youdao.com', 'Youdao shared note requires login or additional permission');
    }
    if (reason === 'not_found') {
      throw new EmptyResultError('youdao note', 'The shared note is missing, expired, cancelled, or inaccessible.');
    }
    throw new CommandExecutionError(`Youdao note parser failed: ${reason}`);
  }
  const title = String(data[1] ?? '');
  const content = String(data[2] ?? '');
  const summary = String(data[3] ?? '');
  const keywords = String(data[4] ?? '');
  const createTime = data[5];
  const fileSize = data[6];
  const hasContentField = data[7] === true;
  const rawContentLength = Number(data[8] ?? 0);
  const finalUrl = String(data[9] || sourceUrl);
  if (!title) {
    throw new CommandExecutionError('Youdao note parser did not extract a title');
  }

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Verify the link opens without login in a private/incognito browser window; if not, ask the owner to re-share it as a public link
  2. Provide an authenticated browser session/cookies if the library/runner supports it
  3. Slow down request rate or change IP to avoid captcha/security-verification triggers
  4. Re-generate the share link from Youdao Notes and retry with the fresh URL
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await youdaoNote(url);
} catch (e) {
  if (e.name === 'AuthRequiredError' || /requires login|AuthRequired/i.test(String(e.message))) {
    // verify the link is public in incognito; attach credentials or ask owner to re-share
  } else throw e;
}

Prevention

When it happens

Trigger: The share link was set to require login; the note's owner restricted access or revoked public sharing; Youdao served a captcha/security verification; rate limiting pushed the page into a login wall; the note is internal to an org requiring auth.

Common situations: Corporately-owned notes with restricted sharing; too many automated requests triggering Youdao's anti-bot captcha; share links that expired into permission-gated states; scraping from an IP/region Youdao distrusts.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/26f466375bb34693. Report an issue: GitHub.