데스크톱 및 브라우저 자동화 (Desktop & Browser Automation)
즉시 실행 요구사항 (읽은 후 바로 실행)
지금: 현재 작업이 이 스킬의 적용 범위에 해당하는지 확인지금:../tool-index.md를 읽고 도구 가용성 및 실제 경로 검증다음: 도구가 없으면 부트스트랩을 호출하고, 경로를 추측하지 않음실행: "워크플로"의 첫 단계로 진입하여 실행하고, 확인 상태에 머무르지 않음
적용 범위
다음 시나리오의 작업에 이 스킬을 사용합니다:
브라우저 시나리오 (Playwright / agent-browser)
- 웹 페이지 열기 및 페이지 요소 조작 (클릭, 폼 작성, 제출)
- 페이지 콘텐츠 스크래핑 또는 스크린샷
- 로그인 플로우 자동화
- 침투 테스트 중 웹 페이지와 상호작용 (페이로드 전송, XSS 트리거)
- 캡차 페이지 자동화 처리
- 대량 폼 제출
데스크톱 애플리케이션 시나리오 (OpenReverse)
- Windows 데스크톱 애플리케이션 조작 (IDA Pro, x64dbg, Wireshark 등)
- 시각 기반 상호작용 필요 (CUA 모드)
- 구조화된 UI 조작 필요 (UIA 모드)
- 데스크톱 앱의 네트워크 트래픽 관찰 (내장 mitmproxy)
- 역공학 도구의 GUI 자동화
- 블랙박스 테스트 데스크톱 소프트웨어
다른 도구와의 역할 분담
| 시나리오 | 사용 도구 |
|---|---|
| 웹 페이지 조작 (브라우저 내) | Playwright / agent-browser |
| 데스크톱 앱 조작 (Windows GUI) | OpenReverse |
| 패킷 캡처, HTTP 요청 수집 | anything-analyzer 또는 OpenReverse network lane |
| JS 중단점, Hook, CDP 디버깅 | jshookmcp |
| 서명 알고리즘 식별, 환경 복제 | js-reverse |
간단한 판단 기준:
- 대상이 웹 페이지 → Playwright
- 대상이 Windows 데스크톱 앱 → OpenReverse
- 둘 다 필요 → 조합 사용
파트 1: 브라우저 자동화 (Playwright / agent-browser)
핵심 워크플로
# 1. 페이지 열기
agent-browser open <url>
# 2. 상호작용 가능한 요소 가져오기 (@e1, @e2... 참조 반환)
agent-browser snapshot -i
# 3. 참조를 사용하여 요소 조작
agent-browser click @e1
agent-browser fill @e2 "text"
# 4. 완료 후 닫기
agent-browser close
명령어 참조
# 네비게이션
agent-browser open <url>
agent-browser close
# 페이지 스냅샷
agent-browser snapshot # 전체 접근성 트리
agent-browser snapshot -i # 상호작용 가능한 요소만 (권장)
# 상호작용 조작
agent-browser click @e1
agent-browser fill @e2 "text"
agent-browser type @e2 "text"
agent-browser press Enter
agent-browser scroll down 500
# 정보 가져오기
agent-browser get text @e1
agent-browser get title
agent-browser get url
# 대기
agent-browser wait @e1
agent-browser wait 2000
agent-browser wait --load networkidle
주의사항
- 반드시
agent-browser close를 실행해야 프로세스 누수를 방지 - 작업 전에 snapshot을 먼저 실행하고, 요소 참조를 추측하지 말 것
- 폼 제출 후
wait --load networkidle로 페이지 안정화
파트 2: 데스크톱 애플리케이션 자동화 (OpenReverse)
개요
OpenReverse는 AI 에이전트를 위한 데스크톱 상호작용 및 증거 수집 프레임워크로, 다음을 지원합니다:
- UIA 모드: Windows UI Automation, 구조화된 데스크톱 컨트롤 조작
- CUA 모드: 시각 기반 상호작용 (Computer Use Agent), 복잡한 GUI에 적합
- 네트워크 관찰: 내장 mitmproxy 프록시 + 로컬 캡처
상호작용 모드 선택
| 모드 | 적합한 시나리오 | 내부 기술 |
|---|---|---|
| UIA | 대상 앱이 표준 Windows 컨트롤 사용 (버튼, 텍스트 박스, 리스트) | Windows UI Automation API |
| CUA | 대상 앱 UI가 복잡하거나 비표준 컨트롤 사용 (IDA의 디스어셈블리 뷰, 커스텀 렌더링 UI) | 시각 인식 + 마우스/키보드 |
네트워크 관찰 모드
| 모드 | 적합한 시나리오 |
|---|---|
| 프록시 레인 | 대상 앱이 프록시를 구성할 수 있는 경우 (권장) |
| 로컬 레인 | 대상 앱이 프록시를 사용할 수 없어 로컬 캡처가 필요한 경우 |
설치 및 구성
# 1. 프로젝트 클론
git clone https://github.com/zhexulong/openreverse.git
cd openreverse
# 2. 의존성 설치
npm install
# 3. 에이전트 호스트에 연동 (Claude Code / Codex / Zed)
npm run init:agents -- --target=all /path/to/project
# 4. CUA 런타임 설치 (시각 기반 모드 필요시)
npm run install:cua-runtime
npm run doctor:cua-runtime
# 5. 네트워크 관찰 의존성 설치 (패킷 캡처 필요시)
npm run install:mitmproxy
npm run doctor:network
일반적인 조합
| 요구사항 | 구성 |
|---|---|
| 데스크톱 앱만 조작 | UIA 또는 CUA, 네트워크 레인 미사용 |
| 데스크톱 앱 조작 + 패킷 캡처 | UIA/CUA + 프록시 레인 |
| 데스크톱 앱 조작 + 로컬 캡처 | UIA/CUA + 로컬 레인 |
역공학 시나리오 예시
시나리오: IDA Pro를 자동화하여 배치 분석 수행
1. OpenReverse CUA 모드로 IDA Pro 열기
2. 대상 바이너리 자동 로드
3. 분석 완료 대기
4. UI 조작을 통해 함수 목록 내보내기
5. 동시에 network lane으로 IDA의 네트워크 동작 관찰 (예: Lumina 요청)
시나리오: x64dbg 디버깅 자동화
1. OpenReverse UIA 모드로 x64dbg 시작
2. 대상 프로그램 로드
3. 중단점 설정
4. 실행 후 레지스터/메모리 변화 관찰
5. 스크린샷 저장하여 증거 확보
온디맨드 부트스트랩 (On-Demand Bootstrap)
자동화 가능 경계
| 도구 | 자동 설치 가능 | 설치 방법 | 설명 |
|---|---|---|---|
| Playwright | ✓ | npm + npx playwright install | 브라우저 자동화 엔진 |
| agent-browser CLI | ✓ | npm install -g agent-browser | 브라우저 조작 CLI |
| Node.js | ✓ | winget | 선행 의존성 |
| OpenReverse | ✗ | 수동 clone + npm install | 실험 단계, 의존성 무거움 |
| mitmproxy | ✗ | 수동 설치 | OpenReverse 네트워크 관찰 의존성 |
부트스트랩 트리거
- 브라우저 조작에 Playwright 부재 → 자동 부트스트랩
- 데스크톱 조작에 OpenReverse 필요 → 사용자에게 수동 설치 안내 (전체 단계 제공)
OpenReverse 수동 설치 안내
AI가 데스크톱 앱 자동화가 필요하지만 OpenReverse가 설치되지 않은 것을 감지한 경우:
⚠️ **데스크톱 앱 자동화를 위해 OpenReverse가 필요합니다**
**설치 단계**:
1. `git clone https://github.com/zhexulong/openreverse.git`
2. `cd openreverse && npm install`
3. `npm run init:agents -- --target=all <프로젝트 경로>`
4. 시각 모드 필요시: `npm run install:cua-runtime`
5. 네트워크 관찰 필요시: `npm run install:mitmproxy`
**검증**: `npm run doctor:cua-runtime` 및 `npm run doctor:network`
라우팅 컨텍스트
상위 진입점: skills/SKILL.md (총괄), routing.md
적용 시나리오: 브라우저 또는 데스크톱 앱 자동화가 필요한 모든 작업
하위 출력:
- 캡처된 요청 분석 필요 →
anything-analyzer또는js-reverse - JS 디버깅/Hook 필요 →
jshookmcp - 서명 알고리즘 복원 필요 →
js-reverse - 데스크톱 앱이 역공학 도구 →
ida-reverse/
동일 레벨 연관 모듈: js-reverse (브라우저 조작 후 JS 분석 필요), ida-reverse (OpenReverse로 IDA GUI 자동화 가능)
작업 완료 자가 점검 (완료 선언 전 반드시 통과)
- 워크플로의 각 단계를 실제로 실행했습니까? (읽기만 한 것이 아닌가?)
-
tool-index를 기반으로 실제 도구 경로를 사용했습니까? - 재현 가능한 증거를 산출했습니까? (명령어/스크립트/스크린샷/보고서)?
- RULES에서 요구하는 체크리스트 항목을 완료하고 기록했습니까?