You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cloudflare Bot Management: combines all of the above
When stealth-runner is deployed on protected sites, CDP-based clicking will fail at the bot-detection layer before the CAPTCHA solver even runs.
Clicky's solution (CGEventCreateMouseEvent on macOS Accessibility API): generate real OS-level mouse events that are indistinguishable from human interaction.
Acceptance Criteria
New module survey-cli/survey/captcha/coordinate_mouse.py
Cross-platform: macOS (pyobjc), Linux (xdotool/pyautogui), Windows (pyautogui)
API: click_at(x, y, button="left"), move_to(x, y, duration=0.5), drag(start, end)
Coordinates map browser pixels to OS screen pixels (handles devicePixelRatio)
Bezier curve mouse trajectories with human-like jitter
Variable timing distributions (NOT fixed sleeps)
Unit tests with mocked OS calls
Integration test: click target on a test page, verify via JS event listener
defbezier_curve(start, end, control_points=2, jitter=5):
"""Generate human-like mouse path using Bezier curves with random jitter."""# Implementation based on research papers on mouse-movement biometrics
OS-Level Mouse Driver (Anti-CDP-Detection)
Why
stealth-runner today uses CDP for all clicks (
page.mouse.click(x, y)). This is detectable by:Runtime.evaluatecallsnavigator.webdriverand DOM event sourcesWhen stealth-runner is deployed on protected sites, CDP-based clicking will fail at the bot-detection layer before the CAPTCHA solver even runs.
Clicky's solution (
CGEventCreateMouseEventon macOS Accessibility API): generate real OS-level mouse events that are indistinguishable from human interaction.Acceptance Criteria
survey-cli/survey/captcha/coordinate_mouse.pypyobjc), Linux (xdotool/pyautogui), Windows (pyautogui)click_at(x, y, button="left"),move_to(x, y, duration=0.5),drag(start, end)API Spec
Implementation Notes
Platform-Specific Backends
pyobjc+Quartz.CGEvent*xdotool(subprocess) orpyautoguipyautogui+win32apipyvirtualdisplay+pyautoguiHuman-Like Trajectories
Browser Pixel ↔ Screen Pixel Mapping
Dependencies
pyautogui(cross-platform, well-maintained)pyobjc-framework-Quartz(macOS only, forCGEvent)python-xdotool(Linux optional, falls back to pyautogui)Related
Labels
enhancement,priority-high,anti-detection,architecture