camoufox-reverse-mcp
camoufox-reverse-mcp
안티 핑거프린팅 브라우저 기반의 MCP Server로, JavaScript 리버스 엔지니어링을 위해 특별히 설계되었습니다.
AI 코딩 어시스턴트(Claude Code, Cursor, Cline 등)가 Camoufox 안티 핑거프린팅 브라우저를 통해 대상 웹사이트에서 인터페이스 파라미터 분석, JS 파일 정적 분석, 동적 중단점 디버깅, 함수 Hook 추적, 네트워크 트래픽 가로채기, JSVMP 바이트코드 분석, 쿠키/스토리지 관리 등의 리버스 작업을 수행할 수 있게 해주는 MCP(Model Context Protocol) 서버입니다.
왜 Camoufox인가?
특징 | chrome-devtools-mcp | camoufox-reverse-mcp |
브라우저 엔진 | Chrome (Puppeteer) | Firefox (Camoufox) |
탐지 우회 방식 | 없음 | C++ 엔진 레벨 핑거프린트 위조 |
디버깅 능력 | 제한적 (중단점 없음) | Playwright + JS Hook |
JSVMP 분석 | 없음 | 인터프리터 계측 + 소스 코드 레벨 재작성 |
Hook 지속성 | 지원 안 함 | 컨텍스트 레벨 지속성, 탐색 후 자동 재주입 |
핵심 장점:
Camoufox는 C++ 레벨에서 핑거프린트 정보를 수정하므로 JS 레벨 패치가 아니며, 근본적으로 탐지가 불가능합니다.
Juggler 프로토콜 샌드박스 격리를 통해 Playwright가 페이지 내 JS에 의해 완전히 탐지되지 않도록 합니다.
BrowserForge는 실제 트래픽 통계 분포에 따라 핑거프린트를 생성하며, 무작위로 조합하지 않습니다.
RS, AK, JY, CF 등 다양한 강력한 안티 크롤링 사이트에서 정상적으로 작동합니다.
Hook은
Object.defineProperty를 사용하여 덮어쓰기 방지 보호를 적용하므로, 페이지 스크립트가 원본 메서드를 복구할 수 없습니다.
빠른 시작
방법 1: AI 대화창에서 직접 설치 (권장)
AI 코딩 도구(Cursor / Claude Code / Codex 등)의 대화창에 다음을 입력하세요:
帮我安装下这个mcp工具:camoufox-reverse-mcp
项目地址:https://github.com/WhiteNightShadow/camoufox-reverse-mcpAI가 클론, 의존성 설치, MCP Server 구성의 모든 과정을 자동으로 완료합니다.
방법 2: 수동 설치
git clone https://github.com/WhiteNightShadow/camoufox-reverse-mcp.git
cd camoufox-reverse-mcp
pip install -e .클라이언트 구성
{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": ["-m", "camoufox_reverse_mcp"]
}
}
}{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": ["-m", "camoufox_reverse_mcp", "--headless"]
}
}
}{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": [
"-m", "camoufox_reverse_mcp",
"--proxy", "http://127.0.0.1:7890",
"--geoip",
"--humanize"
]
}
}
}사용 가능한 도구 목록 (35개)
브라우저 제어
도구 | 설명 |
| Camoufox 안티 핑거프린팅 브라우저 실행 |
| 브라우저 종료 및 리소스 해제 |
| 지정된 URL로 이동 (pre_inject_hooks, redirect_chain 추적 지원) |
| 페이지 새로고침 |
| 스크린샷 (전체 페이지, 특정 요소 지원) |
| 페이지 접근성 트리 가져오기 (토큰 효율적) |
| 요소 클릭 / 텍스트 입력 |
| 요소 나타남 또는 URL 일치 대기 |
| 현재 페이지 URL, 제목, 뷰포트 크기 가져오기 |
JS 실행 및 디버깅
도구 | 설명 |
| 페이지 컨텍스트에서 임의의 JS 표현식 실행 (다중 전략 JSON 파싱) |
스크립트 분석
도구 | 설명 |
| 스크립트 관리: |
| 키워드 검색 (script_url=None 시 전체 검색, URL 지정 시 단일 스크립트 검색, 압축 파일 자동 감지 및 문자 단위 컨텍스트 사용) |
Hook 및 추적
도구 | 설명 |
| 함수 Hook 또는 추적: |
| 사전 설정된 Hook 일괄 주입 (xhr / fetch / crypto / websocket / debugger_bypass / cookie / runtime_probe) |
| 모든 Hook 제거 및 원본 객체 복구 |
| 페이지 콘솔 출력 가져오기 |
네트워크 분석
도구 | 설명 |
| 네트워크 캡처 제어: |
| 캡처된 요청 목록 (URL / 도메인 / 메서드 / 타입 / 상태 코드 필터링 지원) |
| 요청 상세 정보 가져오기 (max_body_size로 본문 절단 제어) |
| 요청을 발생시킨 JS 호출 스택 가져오기 |
| 요청 가로채기: log / block / modify / mock / stop |
JSVMP 리버스 분석
안티 크롤링 유형 → 도구 경로 대응표
안티 크롤링 유형
대표
✅ 권장 경로
❌ 사용 금지
서명형 (환경이 곧 서명)
RS 5/6, AK sensor_data
instrumentation(action="install")
pre_inject_hooks,hook_jsvmp_interpreter(mode="proxy")행동형 (파라미터 서명)
TK JSVMP, JY gt4
hook_jsvmp_interpreter(mode="proxy")—
단순 난독화
일반 JS 난독화 도구
임의 조합
—
도구 | 설명 |
| JSVMP 런타임 프로브 (mode="proxy" 전체 커버 / mode="transparent" 서명 안전) |
| 소스 코드 레벨 계측: |
| 브라우저 환경 핑거프린트 수집 (Node.js/jsdom과 비교용) |
쿠키 및 스토리지
도구 | 설명 |
| 쿠키 관리: |
| localStorage / sessionStorage 가져오기 |
| 전체 브라우저 상태 내보내기 / 가져오기 |
검증 및 환경
도구 | 설명 |
| 오프라인 서명 함수 검증: 샘플 목록을 전달하여 샘플별 문자 단위 비교, 첫 번째 편차 지점 식별 |
| 원스톱 자가 진단: MCP 버전, 의존성, 브라우저 상태, camoufox-reverse 커스텀 버전 감지 |
| 잔여물 정리 (hooks / capture / routes), 브라우저는 닫지 않음 |
엔진 레이어 속성 추적 (v1.1.0 추가)
camoufox-reverse 커스텀 브라우저가 필요합니다. 설치되지 않은 경우 오류 메시지가 반환되며 다른 도구 사용에는 영향을 주지 않습니다.
도구 | 설명 |
| C++ 엔진 레이어 DOM 속성 접근 추적 (JSVMP 탐지 불가). summary/timeline/sequence/search 4가지 뷰 지원. duration=0은 시작 이후 모든 이벤트 읽기, duration>0은 새로운 추적 창 시작. collect_values=True는 브라우저에서 모든 속성의 실제 값을 자동으로 읽음 (큰 값은 파일로 저장) |
| 로컬의 모든 trace 파일 목록 (사후 분석용) |
| 지정된 과거 trace 파일 조회, 객체/키워드별 필터링 지원 |
사용 시나리오 예시
시나리오 1: 로그인 인터페이스의 서명 파라미터 리버스
1. launch_browser()
2. inject_hook_preset("xhr")
3. inject_hook_preset("crypto")
4. navigate("https://example.com/login")
5. type_text("#username", "test") → click("#login-btn")
6. list_network_requests(method="POST")
7. get_request_initiator(request_id=3) ← 定位签名函数
8. search_code("sign") ← 搜索签名代码
9. hook_function("window.getSign", mode="trace")
10. reload() → get_console_logs() ← 收集追踪数据시나리오 2: 범용 JSVMP 리버스 (RS / AK / 자체 개발 VMP)
1. launch_browser()
2. network_capture(action="start")
3. navigate("https://target-site.com/")
4. list_network_requests(resource_type="script") ← 找到 VMP 脚本
5. instrumentation(action="install", url_pattern="**/vmp_target*.js", mode="ast")
6. inject_hook_preset("cookie", persistent=True)
7. instrumentation(action="reload") ← 让插桩生效
8. instrumentation(action="log", type_filter="tap_get") ← 看 VMP 读了什么环境
9. instrumentation(action="log", type_filter="tap_method") ← 看 VMP 调了什么 API
10. compare_env() ← 收集环境用于 Node.js 补齐시나리오 3: 프로토콜 코드 검증
1. launch_browser() → navigate("https://target.com")
2. network_capture(action="start")
3. # 触发目标操作,收集带签名的请求
4. reqs = list_network_requests(url_filter="api/search")
5. # 提取样本
6. verify_signer_offline(
signer_code="(s) => ({'X-Bogus': mySign(s.url)})",
samples=[{"id": "r1", "input": {...}, "expected": {"X-Bogus": "..."}}]
)👉 전체 안티 크롤링 유형 식별 및 워크플로우는 docs/JSVMP_PLAYBOOK.md 참조
시나리오 4: 엔진 레이어에서 JSVMP 환경 핑거프린트 추적 (v1.1.0 추가)
1. launch_browser(enable_trace=True) ← 启动带 C++ 追踪的浏览器
2. navigate("https://www.douyin.com/video/xxx") ← JSVMP 执行,事件自动记录
3. trace_property_access(duration=0, mode="summary", collect_values=True)
→ 返回 JSVMP 实际读取的 42 个 DOM 属性、访问频次、以及真实值
→ 小值内联返回,大值(Canvas/WebGL/Cookie 等)自动保存到
~/.cache/camoufox-reverse/values/ 目录
# 按时间线查看属性访问节奏
4. trace_property_access(duration=0, mode="timeline", bucket_ms=500)
# 按对象过滤
5. trace_property_access(duration=0, filter_object="webgl")
# 搜索特定属性
6. trace_property_access(duration=0, mode="search", search_query="cookie")compare_env와의 차이점:
trace_property_access: JSVMP가 실제로 읽는 속성 추적 (정밀함, C++ 레이어, 탐지 불가)compare_env: 브라우저의 모든 환경 속성 수집 (전체, JS 레이어)경로 B 환경 위장 시, trace 결과를 사용하여 "어떤 속성을 보완할지" 결정하여 과도한 보완으로 인한 새로운 유출 지점 방지
기술 아키텍처
┌─────────────────────────────────────────────────┐
│ AI 编码助手 (Cursor / Claude) │
│ ↕ MCP (stdio) │
├─────────────────────────────────────────────────┤
│ camoufox-reverse-mcp (35 tools) │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │Navigation│ Script │Debugging │ Hooking │ │
│ │ │ Analysis │ │ │ │
│ ├──────────┼──────────┼──────────┼──────────┤ │
│ │ Network │ JSVMP │ Cookie │ Verify │ │
│ │ Capture │ Analysis │ Storage │ Signer │ │
│ ├──────────┴──────────┴──────────┴──────────┤ │
│ │ ★ PropertyTracer (trace_property_access) │ │
│ │ C++ 引擎层 DOM 属性追踪(JSVMP 不可检测) │ │
│ └───────────────────────────────────────────┘ │
│ ↕ Playwright API │
├─────────────────────────────────────────────────┤
│ Camoufox (反指纹 Firefox, Juggler 协议) │
│ C++ 引擎级指纹伪造 · BrowserForge 真实指纹分布 │
└─────────────────────────────────────────────────┘업데이트 기록
v1.1.0 (2026-04-22) — 엔진 레이어 속성 추적
3개 도구 추가,
launch_browser에enable_trace파라미터 추가.
추가 도구
trace_property_access— C++ 엔진 레이어 DOM 속성 접근 추적 (JSVMP 탐지 불가), summary/timeline/sequence/search 4가지 뷰 지원list_trace_files— 로컬 trace 파일 목록query_trace_file— 과거 trace 파일 조회
변경 사항
launch_browser에enable_trace파라미터 추가, 활성화 시CAMOU_CONFIG및MOZ_DISABLE_CONTENT_SANDBOX자동 주입check_environment에camoufox_reverse필드 추가, 커스텀 브라우저 설치 상태 감지
의존성
camoufox-reverse 커스텀 브라우저 필요 (선택 사항, 설치하지 않아도 다른 32개 도구 사용에는 영향 없음)
v1.0.0 (2026-04-18) — 도구 간소화 + 순수 JS 리버스 도구 세트로 회귀
메이저 버전: 80 → 32개 도구, 스키마 토큰 절반으로 감소. 세션 아카이브/단언 시스템 제거, 순수 JS 리버스 도구로 포지셔닝 회귀.
도구 통합 (v0.9.0)
network_capture(action=start/stop/clear/status)← start/stop_network_capturescripts(action=list/get/save)← list_scripts / get_script_source / save_scriptsearch_code(keyword, script_url=None)← search_code / search_code_in_scripthook_function(path, mode=intercept/trace)← hook_function / trace_functioninstrumentation(action=install/log/stop/reload/status)← instrument_jsvmp_source / get_instrumentation_log / stop_instrumentation / reload_with_hooks / get_instrumentation_statuscookies(action=get/set/delete)← get_cookies / set_cookies / delete_cookies
제거된 도구
세션 아카이브 시스템 (7개): start/stop_reverse_session, list_sessions, get_session_snapshot, attach_domain_readonly, export/import_session
단언 시스템 (4개): add/verify/list/remove_assertion
비주류 도구 (37개): trace_property_access, freeze_prototype, find_dispatch_loops, get_page_content, bypass_debugger_trap, check_detection, get_fingerprint_info, dump_jsvmp_strings, evaluate_js_handle, add_init_script, set_breakpoint_via_hook, get_breakpoint_data 등
추가
verify_signer_offline— 상태 비저장 서명 함수 검증 (verify_against_session 대체)
버그 수정 (v0.8.1)
evaluate_js: 다중 전략 JSON 파싱 (제어 문자 정리, 이중 인코딩 언패킹)navigate: 기본적으로 네트워크 캐시 정리, 교차 탐색 요청 오염 방지get_network_request:max_body_size파라미터로 본문 절단 제어 (기본값 5000)launch_browser: already_running 시 잔여 상태 진단 반환
제거된 의존성: tldextract (세션에서만 사용)
설계 철학: MCP는 순수 도구 세트(stateless)이며 워크플로우 관리는 하지 않습니다. 분석 프로젝트의 기억/누적은 스킬 레이어와 사용자 작업 공간에 속합니다.
v0.6.0 — 실전 버그 수정
hook_jsvmp_interpreter(mode="proxy"): Proxy 재귀로 인한too much recursion수정remove_hooks: Proxy 객체 완전 복구evaluate_js: BOM / lone surrogate / whitespace 자동 정리instrument_jsvmp_source: CSP 사전 검사navigate: 타임아웃 시 우아한 성능 저하
v0.5.0 — 서명형 안티 크롤링 호환성
instrument_jsvmp_source기본 MCP 측 AST 재작성hook_jsvmp_interpreter에mode="transparent"추가안티 크롤링 유형 결정 테이블 + JSVMP Playbook
v0.4.0 — 범용 JSVMP 적응
소스 코드 레벨 계측, 쿠키 귀인, 런타임 프로브
hook_jsvmp_interpreter 다중 경로 커버리지 재작성
v0.3.0 — 안정성 수정
v0.2.0 — Hook 지속성 + JSVMP 분석
v0.1.0 — 초기 버전 (44개 도구)
피드백 / 교류
사용 중 버그를 발견하거나, 새로운 Hook 프리셋을 원하거나, JS 리버스 아이디어를 공유하고 싶으시면 위챗으로 연락주세요:
위챗 ID:
han8888v8888
친구 추가 시 「camoufox-reverse」라고 메모를 남겨주시면 빠르게 수락해 드립니다.
라이선스
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WhiteNightShadow/camoufox-reverse-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server