Skip to content

v3.0.0 — PerimeterX press-and-hold solver + CDP primitives

Choose a tag to compare

@KeyCode17 KeyCode17 released this 15 May 21:51
· 30 commits to main since this release
afb2aa0

Highlights

End-to-end PerimeterX press-and-hold challenge solver via pure CDP — verified clearing the deny page on pedidosya.com.ar. Includes the new BrowserPort primitives that make it possible plus the agent + tools surface to drive it from an LLM.

⚠️ Breaking changes

  • chromiumoxide 0.6 → 0.9 (Chrome 142+ wire compatibility — 0.6's protocol crate can't deserialize new CDP message variants)
  • BrowserPort trait gains 6 required methods:
    • mouse_down(x, y), mouse_up(x, y), mouse_move(x, y, buttons_mask)
    • mouse_hold(x, y, ms) — humanized press-and-hold (pre-approach + ±1px jitter during hold)
    • block_urls(patterns)Network.setBlockedURLs glob suppression
    • clear_cookies(origin)Storage.clearDataForOrigin (cookies + storage)
  • All workspace internal version pins bumped 2.1.0 → 3.0.0

New tools (ras-tools)

  • press_and_hold_element { index, ms? } — resolves bbox center of a clickable, dispatches humanized hold (default 12000ms, max 60000ms)
  • press_and_hold_coordinate { x, y, ms? } — raw pixel variant for buttons inside cross-origin iframes / closed shadow DOM

Logging

  • ras_agent::brain target: per-step agent decision, agent action params, action result records
  • ras_llm_openai TRACE level: full request + response body dumps
  • Presets:
    • RUST_LOG=info,ras_agent::brain=info — brain + action stream
    • RUST_LOG=info,ras_agent::brain=debug — with raw action params
    • RUST_LOG=info,ras_llm_openai=trace — full LLM I/O

New examples

Example What it does
pedidosya_px_solver Pure-CDP (no LLM) PerimeterX solver. Clears cookies, locates #px-captcha shadow host, holds ~18s with humanized approach + jitter. Verified to clear the deny page on pedidosya.com.ar.
pedidosya_perimeterx_smoke LLM-driven variant exercising press_and_hold_* builtins.
mouse_drag_smoke autodraw.com canvas drawing smoke — verifies CDP isTrusted=true mouse pipeline draws a recognizable circle.
youtube_search_claude_code Claude Code OAuth path via ChatAnthropicClaudeCode.

Internal

  • ras-cdp adapter refactored: mouse_input.rs + cdp_ext.rs extracted; new with_page helper and op! macro deduplicate the page_for+within boilerplate.
  • Pre-commit guard scripts (check-loc.sh, check-no-comments.sh, check-no-unwrap.sh) fixed to exclude examples/, tests/, xtask/ when staged without a parent path component.

Verified end-to-end

  • cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test -p ras-tools -p ras-agent -p ras-cdp
  • Manual: cargo run --example pedidosya_px_solver — PASS (PX cleared, redirected to homepage)
  • Manual: cargo run --example mouse_drag_smoke — PASS (visible circle drawn on autodraw canvas)

🤖 Generated with Claude Code