Commit Graph

4 Commits

Author SHA1 Message Date
Deeman
d96f977c0f fix scout_js: reference browser._state not undefined _state
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 17:26:50 +01:00
Deeman
ab9dc62dd6 scout: add German DSGVO text patterns + Usercentrics shadow DOM support
- German accept texts: Alle akzeptieren, Akzeptieren, Zustimmen, Einverstanden, etc.
- Usercentrics (shadow DOM) support — very common with German publishers
  (Bild, Spiegel, Focus, etc.) — requires shadowRoot traversal, not addressable
  by normal CSS selectors
- Consentmanager selectors — another common German CMP
- Note: German sites tested (Spiegel, Zeit, finanzen.net, Bild) showed no banners
  because Pydoll reuses the existing Chrome user profile with stored consents.
  New-site behaviour will be handled by the added patterns.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 17:23:33 +01:00
Deeman
ec7cfda605 scout: JS-based cookie dismiss + scout_js tool
- _dismiss_cookie_banner: switch to execute_script for CSS selector clicks
  (OneTrust on ICE uses pointer-events:none overlay — mouse clicks don't reach it,
  but JS .click() bypasses this). Falls back to text-based JS search.
- Selectors cover: OneTrust, Cookiebot, CookieYes, generic [id/class*=accept/consent]
- Text fallback covers: IAB TCF "Allow All" pattern (Reuters, etc.)
- Add scout_js tool: run arbitrary JS on current page — useful for shadow DOM,
  z-index overlays, and any element that resists normal CSS/text selectors
- Add _click_via_js helper for targeted JS injection clicks

Tested patterns:
  ICE (theice.com) — OneTrust #onetrust-accept-btn-handler — requires JS click
  CFTC (cftc.gov) — no banner
  Reuters — IAB TCF "Allow All" — text click works

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 17:19:34 +01:00
Deeman
b167a0a9f4 Add scout MCP server for browser recon + msgspec workspace dep
- tools/scout/: browser automation MCP server using Pydoll (CDP, no WebDriver)
  - scout_visit, scout_elements (text-first), scout_click, scout_fill, scout_select
  - scout_scroll, scout_text, scout_screenshot (opt-in)
  - scout_har_start / scout_har_stop (asyncio task holds recording context open)
  - scout_analyze: HAR parsing with HarEntry/HarSummary msgspec structs
  - Standalone project (not workspace member — websockets conflict with prefect)
  - Runs via: uv run --directory tools/scout scout-server

- .mcp.json: registers scout as Claude Code MCP server (project scope)

- msgspec>=0.19 added to root project deps (workspace-wide struct/validation)

- coding_philosophy.md: document msgspec as approved dep, usage rules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 15:44:02 +01:00