Closed bug report

Extension lane: drive reCAPTCHA itself (trusted clicks + fake cursor, image-grid loop) - UltraLibrarian CAD download stalls at I'm not a robot

John Lauer · 1mo ago ·closed by John Lauer

Summary

On the extension lane pup cannot get past the reCAPTCHA that Ultra Librarian now puts in front of "Download Now" even for a signed-in UL Pro user, so a CAD download that is otherwise fully prepared (login from the vault OK, formats ticked, units set) stalls at "I'm not a robot". The user's standing instruction is that the AI drives captchas itself (with pup's fake cursor / trusted input), never hands them to the human, and never switches to the CDP lane for it. Today the extension lane has no verb that can do this: pup_input_dispatch answers lane_needs_cdp, and pup_eval cannot click inside the reCAPTCHA iframe (cross-origin, and an untrusted click() does not count anyway).

This is the captcha half of #116 (closed, ext-lane input on CSP pages) and sits next to #119 (ext-lane Basic-Auth). The full flow chip-fetcher's cf-ul-fast.sh drives (checkbox click → image grid → AI vision picks tiles → trusted tile clicks → Verify → token → Submit) needs trusted input on the extension lane.

Environment

  • Windows (AdomLapper), Adom Bridge 2.1.130, pup 2.0.641, extension lane, shared adom-you profile, signed in to UL as [email protected] via pup_login (vault:app.ultralibrarian.com)

Repro (2026-09-19)

  1. pup_open_window {sessionId:"ul-login", url:"https://app.ultralibrarian.com/account/login"} then pup_login {submit:true, submitReason:...} → ok, page reads "Hello [email protected]".
  2. pup_navigate to https://app.ultralibrarian.com/details/5392524b-0755-11ec-9033-0a34d6323d74/STMicroelectronics/VL53L5CXV0GC-1?uid=497-VL53L5CXV0GC-1-ND, pup_eval click #export-selection-btn, open the "3D CAD Model" and "KiCAD" accordions (picker-scoped anchors, not the footer links of the same text), tick #MfrThreeDModel (STEP, exports=37) and #KiCADv6 (KiCAD v6+, exports=42), set export_options[1] to 2-2 (Metric), click #submit-export.
  3. Screenshot: the picker is correct, and a reCAPTCHA "I'm not a robot" sits above the red "Download Now". Nothing downloads; no modal; Downloads stays empty for 10 minutes.
  4. There is no extension-lane verb to click the captcha: pup_input_dispatch → lane_needs_cdp. (A lane:"cdp" attempt was made once before the user forbade it and it failed anyway: browser_launch_failed: chrome-for-testing did not publish a DevTools port within 30s | chrome exited during launch | edge exited during launch.)

The chip-fetcher playbook ultra-librarian.md says signed-in UL Pro has no captcha; that is no longer true (2026-09-19).

Expected

On the extension lane, with no human and no CDP lane: pup clicks "I'm not a robot" with a trusted click (real cursor glide + click, so the widget's behaviour signals look human), returns the image-grid screenshot when one appears (stage:"image_grid", iframe PNG, grid size), accepts the AI's tile picks, clicks them and Verify with trusted input, loops rounds until the token populates, then clicks the submit. The zip lands and pull_file works.

Proposal

  1. Extension-lane trusted input: a short-lived chrome.debugger attach on the ONE tab for Input.dispatchMouseEvent / Input.dispatchKeyEvent (the lane already does this for its screenshot fallback), released immediately — exposed as pup_click {x,y | selector} / pup_type / pup_move (fake cursor glide) that work on every page including cross-origin iframes. That removes the lane_needs_cdp answer.
  2. A pup_captcha composite (the cf-ul-fast.sh loop as a verb): find the reCAPTCHA anchor iframe, trusted-click the checkbox, detect the bframe image grid, return {stage:"image_grid", iframePng, grid:"3x3|4x4", prompt}; accept {tiles:[...]}, click them + Verify, detect escalation rounds, return {stage:"token"} when g-recaptcha-response fills. The AI does only the vision step.
  3. Every captcha-related _hint (this verb, pup_input_dispatch's lane_needs_cdp, the UL and ST site skills) must say: DRIVE IT — do not toast the user, do not switch lanes.

Found while

Fetching ST's real STEP for VL53L5CX/L7CX/L8CX through ST's CAD Resources tab (which is an UltraLibrarian/SamacSys widget) for the Adom release-video run of the ToF library prompt. Basic-Auth on the SamacSys route is #119; this issue is the UL route.

1 Reply

John Lauer · 1mo ago

The blocker is fixed in pup 2.0.648 (insiders): pup_input_dispatch works on the extension lane. Every Input.dispatchMouseEvent / dispatchKeyEvent goes through the worker's DevTools driver (chrome.debugger), so the event is trusted and lands inside cross-origin frames; no lane_needs_cdp, no CDP lane, no human. Measured on ConfRoomROG on the reCAPTCHA demo page: pup_eval read the anchor iframe's rect, pup_input_dispatch {type:'click'} at the checkbox, and 4 s later g-recaptcha-response held a 2404-character token, no image grid. Not run tonight: the full image-grid loop against Ultra Librarian's export page (screenshot, tile pick, trusted tile clicks, Verify, Submit); that is chip-fetcher's cf-ul-fast.sh on top of these verbs and should now run unchanged with the window on the extension lane. Reopen with the UL repro if the grid loop fails there.

John Lauer closed this · 1mo ago

Log in to reply.