헤드리스 브라우저(Headless Browser) cli javascript

agnusdei·2025년 12월 16일

###1. 핵심 기술: 헤드리스 브라우저 (Headless Browser)CLI에는 화면(GUI)이 없지만, 화면만 안 보일 뿐 실제 크롬(Chrome)이나 파이어폭스(Firefox) 엔진을 백그라운드에서 실행할 수 있습니다. 이것을 '헤드리스 모드'라고 부릅니다.

  • 일반 브라우저: 브라우저 엔진 + 화면(UI) 표시
  • 헤드리스 브라우저: 브라우저 엔진만 실행 (메모리 상에서 동작)

따라서 React나 Vue로 만들어진 최신 웹페이지(SPA)의 자바스크립트도 실제로 모두 실행되고, 버튼 클릭 같은 이벤트도 좌표 계산을 통해 똑같이 수행됩니다.

###2. 어떻게 요청/응답을 가로채나? (Network Intercept)사용자가 크롬 개발자 도구(F12)의 [Network] 탭에서 보는 정보를 프로그램 코드가 실시간으로 보고 있다고 생각하시면 됩니다.

주로 Puppeteer(퍼피터)Playwright(플레이라이트) 같은 라이브러리를 사용하며, 작동 순서는 다음과 같습니다:

  1. 명령 실행: 사용자가 CLI에서 툴을 실행합니다.
  2. 고스트 브라우저 실행: 실제 크롬이 화면 없이 켜집니다.
  3. 후킹(Hooking): 브라우저가 서버와 통신하는 길목(Network Layer)에 감시자(Listener)를 심습니다.
  4. 페이지 조작: AI나 스크립트가 "로그인 버튼 클릭" 명령을 내리면 브라우저 내부에서 자바스크립트 이벤트를 발생시킵니다.
  5. 데이터 캡처:
  • 버튼을 누를 때 발생하는 실제 API 요청(URL, Header, Body, Cookie)을 중간에서 가로챕니다.
  • 서버에서 오는 응답(JSON, HTML)도 캡처합니다.
  1. 결과 반환: 캡처한 데이터를 정리해서 터미널 화면에 텍스트로 뿌려주거나, Hydra 같은 다른 해킹 툴에 넘겨줍니다.

###3. 왜 이 방식이 "BEST"인가? (vs 일반 요청)코드 설명에 [BEST]라고 적힌 이유는 일반적인 방식으로는 불가능한 것을 해내기 때문입니다.

  • 기존 방식 (curl/requests): 단순히 주소로 요청만 보냅니다. 자바스크립트가 실행되지 않으므로, 로그인 버튼을 눌러야 생성되는 복잡한 토큰이나 암호화된 값을 알아낼 수 없습니다.
  • 브라우저 인터셉트 방식: 실제 사용자가 클릭한 것과 100% 동일한 환경을 만듭니다. 따라서 CSRF 토큰, 세션 ID, 동적으로 생성되는 API 주소 등을 정확하게 따올 수 있습니다.

###요약CLI 환경이라고 해서 텍스트만 처리하는 것이 아닙니다. "보이지 않는 크롬"을 띄워서 그 안에서 실제로 로그인을 수행하고, 그 과정에서 오고 가는 네트워크 패킷을 훔쳐보는 것이 가능합니다.


profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글