Debugging Playwright CDP Sessions That Lose Cookies and Proxy Context

개요

Playwright CDP 세션에서 쿠키 및 프록시 컨텍스트가 손실되는 문제에 대한 실용적인 디버깅 체크리스트는 스크립트가 수동으로 확인한 브라우저 ID와 동일한 브라우저 ID에 연결되었는지 확인하는 데 중점을 둡니다.

주요 내용

* 문제 패턴: Playwright가 기존 Chromium 브라우저에 연결할 때 쿠키, 세션 상태 또는 프록시 컨텍스트가 예상과 일치하지 않는 경우입니다. 이는 수동 로그인된 브라우저 세션이 자동화된 세션에서는 로그아웃된 것처럼 보이거나 잘못된 프록시로 요청이 오는 증상으로 나타납니다.
* 세 가지 지속성 모델: 디버깅 전에 storageState, launchPersistentContext, connectOverCDP의 세 가지 모델을 명확히 구분해야 합니다.
* storageState: 쿠키, localStorage 등을 포함하는 스냅샷으로, 전체 브라우저 프로필과 동일하지 않습니다.
* launchPersistentContext: 특정 사용자 데이터 디렉토리와 함께 브라우저를 시작하며, 프로필 디렉토리를 소스 오브 트루스로 간주합니다.
* connectOverCDP: Chrome DevTools Protocol을 통해 기존 Chromium 브라우저에 Playwright를 연결합니다.
* 디버깅 단계:
1. 전용 브라우저 프로필 시작: 디버깅 대상이 아닌 별도의 자동화 디렉토리를 사용하여 브라우저를 시작하고 수동으로 로그인하여 프로필을 신뢰할 수 있는지 확인합니다.
2. CDP를 통한 연결 및 실제 컨텍스트 검사: 최소한의 스크립트를 실행하여 브라우저 컨텍스트 수, 페이지 수, 쿠키 수, localStorage/sessionStorage 내용을 확인합니다.
3. 쿠키가 인증 소스인지 확인: 쿠키 외에 localStorage, IndexedDB, sessionStorage 등 다양한 계층에서 인증 상태가 어떻게 저장되는지 조사합니다.
4. 연결된 세션 내부에서 프록시 확인: api.ipify.org와 같은 서비스에 접속하여 예상된 프록시를 통해 공용 IP가 제대로 나오는지 확인합니다.
5. Headless, CDP 연결, Headed 모드 비교: 수동 모드와 자동화 모드 간의 쿠키 수, IP, 시간대, 로컬라이제이션 등의 차이를 분석합니다.
6. AI 에이전트의 중단 조건 추가: 에이전트가 계속 진행하기 전에 쿠키 수 감소, 로그인 페이지 리디렉션, 예상 프록시 IP 불일치 등 환경 변화를 감지하면 중단하도록 설정합니다.
7. 작은 실행 로그 사용: 디버그 시도마다 실행 ID, 모드, CDP 엔드포인트, 프로필 라벨, 예상/실제 IP, 쿠키 수, 중단 이유 등을 포함하는 실행 로그를 기록합니다.
* 일반적인 원인 및 첫 확인 사항: 잘못된 브라우저 연결, 잘못된 프로필 디렉토리, 쿠키 외 인증 저장소, 프록시 컨텍스트 드리프트, AI 에이전트의 다른 컨텍스트에서의 재시도 등이 있습니다.
* 복구 체크리스트: 워크플로우 중단, 스크린샷/URL/쿠키/IP 저장, 브라우저 닫기, stale Chrome 프로세스 종료, 전용 프로필 재시작, 수동 로그인 확인, Playwright 재연결, 최소 스크립트 재실행, 각 계층 확인 후 실제 워크플로우 실행 순서를 따릅니다.

시사점

Playwright CDP 세션을 안정적으로 사용하기 위해서는 단순히 브라우저가 열리고 페이지가 로드되는 것을 넘어, 자동화가 실행된 정확한 브라우저 ID(프로필, 쿠키, 프록시, IP 등)를 증명하는 것이 중요합니다. 이러한 운영적 가시성은 복잡한 프로필 기반 자동화 환경에서 디버깅의 효율성을 높이고 결과의 재현성을 보장합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions