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
- 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
- Provide an authenticated browser session/cookies if the library/runner supports it
- Slow down request rate or change IP to avoid captcha/security-verification triggers
- 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
- Verify share links open in a private window before bulk processing
- Throttle request rate to avoid captcha/security walls
- Refresh share links periodically; owners can revoke or restrict them
- Use a reputable egress IP/region for automated access
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
- BOSS redirected the job detail page to the login flow
- Ctrip is asking for a captcha; complete it in your browser s
- Ctrip is asking for a captcha; complete it in your browser s
- Ctrip is asking for a captcha; complete it in your browser s
- Ctrip is asking for a captcha; complete it in your browser s
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/26f466375bb34693.
Report an issue: GitHub.