자동화 스크립트로 띄운 브라우저가 스크립트가 끝나거나 죽으면 같이 닫혀서, 로그인 세션을 유지한 채 여러 번 재사용하기 어려울 때 해결하는 방법입니다.
1. 문제: 스크립트가 끝나면 브라우저도 같이 닫힌다
로그인이 필요한 사이트를 자동화할 때, 매번 브라우저를 새로 띄우고 로그인부터 다시 하면 번거롭습니다. 그래서 브라우저 하나를 계속 띄워두고 여러 작업이 거기 붙어 쓰고 싶은데, 보통은 안 됩니다. 자동화 도구로 띄운 브라우저는 그 스크립트가 끝나는 순간 같이 닫히기 때문입니다. 창을 열어두려고 대기 코드를 넣어도, 그 스크립트를 백그라운드로 돌렸다가 세션이 정리되면 브라우저까지 딸려 내려갑니다.
- 매번 새로 띄우면 로그인부터 다시 해야 해서 번거로움
- 스크립트 종료 = 브라우저 종료
- 백그라운드로 돌려도 프로세스가 내려가면 창도 닫힘
2. 원인: 브라우저가 스크립트의 자식 프로세스로 뜬다
Playwright 같은 도구로 브라우저를 실행하면, 그 브라우저는 스크립트(파이썬 프로세스)의 자식으로 뜹니다. 부모가 죽으면 자식도 정리되는 게 기본이라, 스크립트 수명과 브라우저 수명이 묶여 버립니다. 그러니 "스크립트와 무관하게 살아있는 브라우저"를 원하면, 애초에 브라우저를 자식이 아니라 독립된 프로세스로 띄워야 합니다.
- 실행된 브라우저 = 스크립트의 자식 프로세스
- 부모(스크립트) 종료 시 자식(브라우저)도 정리
- 해결의 방향 = 브라우저를 부모에게서 떼어내기
3. 해결: 크롬을 OS 독립 프로세스로 분리 실행
브라우저 실행 파일을 직접, 부모와 분리된 프로세스로 띄웁니다. 윈도우에서는 프로세스 생성 플래그에 DETACHED_PROCESS와 CREATE_NEW_PROCESS_GROUP을 주면 부모와 완전히 끊어집니다. 여기에 원격 디버깅 포트를 열어두면(뒤에서 붙을 통로), 이 크롬은 스크립트가 죽든 세션이 정리되든 사용자가 직접 닫을 때까지 유지됩니다.

- 브라우저 실행 파일을 Popen으로 직접 실행
- DETACHED_PROCESS + CREATE_NEW_PROCESS_GROUP으로 부모와 분리
- 원격 디버깅 포트를 열어 나중에 붙을 통로 확보
4. 붙기: 이후엔 CDP로 attach해서 재사용
띄워둔 크롬에는 CDP(크롬 개발자 프로토콜)로 붙습니다. 새 브라우저를 여는 대신, 열려 있는 디버깅 포트에 연결해 그 안의 기존 컨텍스트와 탭을 그대로 씁니다. 로그인 세션이 살아있는 크롬에 붙는 것이라 재로그인이 필요 없고, 여러 스크립트가 번갈아 붙어 써도 됩니다. (이 붙는 기법 자체는 아래 함께 보면 좋은 글의 CDP attach 편에서 더 자세히 다뤘습니다.)

- 새로 열지 말고 열린 포트에 connect
- 기존 컨텍스트/탭 그대로 재사용(로그인 유지)
- 여러 작업이 같은 크롬에 번갈아 attach
5. 실전 팁: 중복 실행 방지와 무한 대기
두 가지를 챙기면 운영이 깔끔합니다. 첫째, 독립 크롬을 띄우기 전에 이미 그 포트에 붙을 수 있는지 먼저 확인해서, 떠 있으면 새로 안 띄우고 재사용합니다(중복 방지). 둘째, 붙어서 창을 열어두는 작업이라면 대기 타임아웃을 무제한으로 둬서, 사용자가 직접 닫기 전에는 임의로 끝나지 않게 합니다.

- 띄우기 전에 포트 연결을 먼저 시도(있으면 재사용)
- 대기 타임아웃은 0(무제한)으로 두어 임의 종료 방지
- 붙는 실패 시 기존 방식으로 자연스럽게 폴백
6. 정리
자동화 브라우저가 스크립트와 함께 죽는 건, 브라우저가 스크립트의 자식으로 뜨기 때문입니다. 크롬을 OS 독립 프로세스로 분리 실행하고 원격 디버깅 포트를 열어두면, 스크립트가 죽어도 브라우저는 남습니다. 이후엔 CDP로 붙어 로그인 세션을 그대로 재사용하면 되고, 중복 실행 방지와 무제한 대기만 챙기면 운영도 안정적입니다.
- 스크립트와 함께 죽음 -> 브라우저를 독립 프로세스로 분리
- 재로그인 반복 -> 살아있는 크롬에 CDP로 attach
- 임의 종료 -> 포트 재사용 가드 + 무제한 대기
함께 보면 좋은 글:
- 플레이라이트(Playwright)로 매번 새 브라우저 띄우지 말고, 디버그 Chrome 세션 재사용하기 (CDP attach) - CDP attach 기법 편
- 웹 자동화(Playwright) 헤드리스가 클라우드플레어(Cloudflare)에 막힐 때 (화면 밖 헤드풀 + 크롬 프로필 재사용) - 상시 프로필 유지 편
여기까지 자동화 브라우저를 스크립트와 분리해 독립 실행하고 CDP로 재사용하는 방법에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!
'일상' 카테고리의 다른 글
| python-pptx로 '편집 가능한' PPT 자동 생성하기 (이미지 말고 네이티브 도형으로) (0) | 2026.07.10 |
|---|---|
| 작업은 다 끝났는데 exit code 9로 죽는 faster-whisper (CUDA 종료 크래시 잡기) (0) | 2026.07.10 |
| 파이썬에서 윈도우 토스트 알림 보내기 (설치 없이 PowerShell로, 한글 깨짐 해결까지) (0) | 2026.07.04 |
| 파이썬 자동화 스크립트에 비밀번호를 평문으로 두지 않기 (Windows DPAPI 암호화, 이 PC에서만 복호화) (0) | 2026.07.04 |
| 밤새 돌리는 클로드(Claude) 자동화, 사용량 한도에 걸려 죽지 않게 (외부 모니터 + 게이트 파일 설계) (0) | 2026.07.04 |