jackwener/OpenCLI · error · AuthRequiredError

auth

Error message

auth

What it means

The in-page probe on my.hupu.com returned { kind: 'auth', ... }, meaning the page rendered but the 'u' cookie was absent — a stale/expired session. verifyHupuIdentity converts that into AuthRequiredError('hupu.com', detail).

Source

Thrown at clis/hupu/auth.js:29

    throw new AuthRequiredError('hupu.com', 'Hupu u cookie missing — anonymous');
  }
  await page.goto('https://my.hupu.com/');
  await page.wait(2);
  const probe = await page.evaluate(`
    (() => {
      if (/passport\\.hupu\\.com\\/.*login/.test(location.href)) {
        return { kind: 'auth', detail: 'Hupu my page redirected to passport login' };
      }
      const uCookie = (document.cookie.split('; ').find(c => c.startsWith('u=')) || '').split('=')[1] || '';
      const el = document.querySelector('.user-name, .username, .nick, [class*="userName"]');
      const username = (el?.innerText || '').trim();
      if (!uCookie) {
        return { kind: 'auth', detail: 'Hupu my page rendered but u cookie absent — stale session' };
      }
      return { ok: true, user_id: uCookie, username };
    })()
  `);
  if (probe?.kind === 'auth') throw new AuthRequiredError('hupu.com', probe.detail);
  if (!probe?.ok) throw new CommandExecutionError(`Unexpected Hupu probe: ${JSON.stringify(probe)}`);
  return { user_id: probe.user_id, username: probe.username };
}

registerSiteAuthCommands({
  site: 'hupu',
  domain: 'hupu.com',
  loginUrl: 'https://passport.hupu.com/pc/login',
  columns: ['user_id', 'username'],
  quickCheck: hasHupuUserCookie,
  verify: verifyHupuIdentity,
  poll: async (page) => {
    if (!await hasHupuUserCookie(page)) {
      throw new AuthRequiredError('hupu.com', 'Waiting for Hupu u cookie');
    }
    return verifyHupuIdentity(page);
  },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Re-login to hupu.com in the browser session and rerun identity verification
  2. Delete stale cookies and perform a clean login
  3. Check the probe detail message to confirm the stale-session diagnosis
  4. If redirects to passport.hupu.com occur, complete the login flow before calling verify
Defensive patterns

Strategy: try-catch

Type guard

const isAuthProbe = p => p && typeof p === 'object' && p.kind === 'auth';

Try / catch

try { const identity = await verifyHupuIdentity(page); } catch (e) { if (e instanceof AuthRequiredError && /stale session/.test(e.detail ?? e.message)) { await clearCookiesAndLogin(page); return verifyHupuIdentity(page); } throw e; }

Prevention

When it happens

Trigger: The first cookie check passed (or raced), but after page.goto('https://my.hupu.com/') the session proved invalid: no u cookie in the page context, or the page redirected to passport.hupu.com login.

Common situations: Session expired between commands; server-side session revoked while the cookie still existed; intermittent redirect to the login page; clock/token expiry on Hupu's side.

Related errors


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