# 2026-06-12 远程浏览器 — 验证码 / 反自动化优化

## 摘要

针对阿里云等站点验证码失败：Worker 改为 headed + Xvfb + 反自动化指纹；前端滑块拖动支持窗口级鼠标跟踪与平滑步进。

## 动机

用户反馈阿里云验证码过不去。根因非 Nexus URL 拦截，而是 headless Chromium 被风控识别，且拖滑块时鼠标移出 canvas 会丢失 move 事件。

## 涉及文件

| 区域 | 文件 |
|------|------|
| Worker | `browser_stealth.py`, `session_manager.py`, `config.py`, `Dockerfile`, `docker-entrypoint.sh`, `docker-compose.yml` |
| 前端 | `useRemoteBrowserSession.ts`, `GlobalBrowserPanel.vue` |

## 变更要点

- 去掉 `--enable-automation`，`disable-blink-features=AutomationControlled`，init script 隐藏 `navigator.webdriver`
- 默认 `WORKER_HEADLESS=false`，容器内 Xvfb `:99`
- 中文 locale / Asia/Shanghai / 常见 Chrome UA
- Screencast JPEG quality 90
- MOUSE：`down/up` 先 move 到位；`move` 支持 `steps`；新增 `click`
- 前端：mousedown 后 `window` 级 mousemove/mouseup，滑块拖出画面仍有效

## 部署

```bash
# Worker
cd /opt/nexus-browser-worker && docker compose up -d --build

# 前端
cd frontend && npx vite build
# sync_webapp_to_container.sh
```

Worker `.env` 可选：`WORKER_HEADLESS=false`（默认）、`WORKER_SCREENCAST_QUALITY=90`

## 验证

- 打开 `https://account.aliyun.com` 或控制台登录页，滑块可拖到底
- 仍失败时：Worker IP 为机房段，阿里云可能加强风控 — 可本机 Chrome 登录后仅浏览公网页，或换住宅 IP Worker

## 残余限制

- 无法保证 100% 通过所有风控（拼图、短信、设备指纹）
- Cookie 在 Worker Profile，与本机浏览器不共享
