用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Demerzels-lab/elsamultiskillagent --skill stealthy-auto-browse命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
The philosophical layer for AI agents.
Agents can sign plugins, rotate credentials without losing identity, and publicly attest to behavior.
A relaxing resource-gathering RPG where AI agents collect resources, trade with NPCs, and manage and build their world at their own pace.
基于 SOC 职业分类
正在显示 SKILL.md
| name | stealthy-auto-browse |
| description | Control a stealthy browser that evades bot detection using OS-level input |
| homepage | https://github.com/psyb0t/docker-stealthy-auto-browse |
| user-invocable | true |
| metadata | {"openclaw":{"emoji":"🕵️","primaryEnv":"STEALTHY_AUTO_BROWSE_URL","always":true}} |
This skill requires a running stealthy-auto-browse container. Set the STEALTHY_AUTO_BROWSE_URL environment variable to connect.
1. Run the container:
docker run -d -p 8080:8080 -p 5900:5900 psyb0t/stealthy-auto-browse
2. Configure OpenClaw (~/.openclaw/openclaw.json):
{
"skills": {
"entries": {
"stealthy-auto-browse": {
"env": {
"STEALTHY_AUTO_BROWSE_URL": "http://localhost:8080"
}
}
}
}
}
Or set the environment variable directly:
export STEALTHY_AUTO_BROWSE_URL=http://localhost:8080
3. Verify: Visit http://localhost:5900 to see the browser via VNC.
Control a headless browser that evades bot detection. Uses Camoufox (custom Firefox) with OS-level mouse/keyboard input via PyAutoGUI - completely undetectable by behavioral analysis.
Why this exists: Standard browser automation (Selenium, Playwright, Puppeteer) is detectable via CDP (Chrome DevTools Protocol) fingerprinting and synthetic event detection. This browser:
Two input modes:
click, fill, type) - Uses CSS selectors, faster but detectablesystem_click, system_type, mouse_move) - OS-level input, undetectable but needs coordinatesWorkflow for undetectable interaction:
gotoget_interactive_elementsx, y coordinatessystem_click with those coordinatessystem_typeSet STEALTHY_AUTO_BROWSE_URL to the browser API endpoint (e.g., http://localhost:8080).
All commands are POST requests to $STEALTHY_AUTO_BROWSE_URL/ with JSON body {"action": "<name>", ...params}.
goto - Navigate to URL
{
"action": "goto",
"url": "https://example.com",
"wait_until": "domcontentloaded"
}
wait_until: domcontentloaded (default), load, networkidle
system_click - Move mouse and click at coordinates (UNDETECTABLE)
{ "action": "system_click", "x": 500, "y": 300, "duration": 0.3 }
duration: Optional mouse movement duration in seconds
mouse_move - Move mouse to coordinates without clicking
{ "action": "mouse_move", "x": 500, "y": 300, "duration": 0.5 }
mouse_click - Click at current position or specific coordinates
{"action": "mouse_click"}
{"action": "mouse_click", "x": 500, "y": 300}
system_type - Type text using OS keyboard (UNDETECTABLE)
{ "action": "system_type", "text": "hello world", "interval": 0.08 }
interval: Delay between keystrokes in seconds (default: 0.08)
send_key - Send special key (enter, tab, escape, etc.)
{"action": "send_key", "key": "enter"}
{"action": "send_key", "key": "tab"}
{"action": "send_key", "key": "escape"}
scroll - Scroll page
{"action": "scroll", "amount": -3}
{"action": "scroll", "amount": 5, "x": 500, "y": 300}
amount: Negative = scroll down, positive = scroll up
click - Click element by CSS selector (detectable)
{"action": "click", "selector": "#submit-btn"}
{"action": "click", "selector": "button.login"}
fill - Fill input field (clears first)
{
"action": "fill",
"selector": "input[name='email']",
"value": "user@example.com"
}
type - Type into element character by character
{ "action": "type", "selector": "#search", "text": "query", "delay": 0.05 }
get_interactive_elements - Get all clickable elements with coordinates (ESSENTIAL!)
{ "action": "get_interactive_elements", "visible_only": true }
Returns array of elements:
{
"elements": [
{
"i": 0,
"tag": "button",
"text": "Sign In",
"selector": "#login-btn",
"x": 500,
"y": 300,
"w": 100,
"h": 40,
"visible": true
}
]
}
Use x and y coordinates with system_click for undetectable clicks!
get_text - Get page text content
{ "action": "get_text" }
get_html - Get full page HTML
{ "action": "get_html" }
eval - Execute JavaScript in page context
{"action": "eval", "expression": "document.title"}
{"action": "eval", "expression": "window.scrollY"}
GET /screenshot/browser - Browser viewport PNG GET /screenshot/desktop - Full desktop PNG
Use curl or fetch:
curl $STEALTHY_AUTO_BROWSE_URL/screenshot/browser -o screenshot.png
GET /state - Current browser state (url, title, window_offset)
GET /health - Health check (returns "ok")
ping - Check connection, returns current URL
{ "action": "ping" }
close - Shut down the browser and server
{ "action": "close" }
calibrate - Recalculate window offset for coordinate translation
{ "action": "calibrate" }
set_resolution - Change display resolution
{ "action": "set_resolution", "width": 1920, "height": 1080 }
Note: Width < 450 requires USE_VIEWPORT=true environment variable
get_resolution - Get current resolution
{ "action": "get_resolution" }
reset_resolution - Reset to original resolution
{ "action": "reset_resolution" }
enter_fullscreen / exit_fullscreen
{"action": "enter_fullscreen"}
{"action": "exit_fullscreen"}
Here's how to login to a site undetectably:
# 1. Navigate to login page
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "goto", "url": "https://example.com/login"}'
# 2. Get all interactive elements
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "get_interactive_elements"}'
# Response shows email input at x:400, y:200 and password at x:400, y:260
# 3. Click email field (undetectable)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 200}'
# 4. Type email (undetectable)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_type", "text": "user@example.com"}'
# 5. Click password field
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 260}'
# 6. Type password
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_type", "text": "secretpassword"}'
# 7. Find and click submit button (from get_interactive_elements, e.g., x:400, y:320)
curl -X POST $STEALTHY_AUTO_BROWSE_URL -H "Content-Type: application/json" \
-d '{"action": "system_click", "x": 400, "y": 320}'
All POST responses follow this format:
{
"success": true,
"timestamp": 1234567890.123,
"data": { ... },
"error": "message if failed"
}
get_interactive_elements first to find coordinates for clickingsystem_click and system_type over Playwright methods for stealthcalibrate if clicks seem offset after page changesConnect to port 5900 via noVNC web viewer to see the browser in action.