오류 해결 과정

ChromeDriver 'DevToolsActivePort' 오류 해결: --no-sandbox 옵션의 중요성

필만이 2024. 7. 7. 10:21

오류내용

Message: session not created: Chrome failed to start: crashed.
  (session not created: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Program Files (x86)\Google\Chrome\Application\chrome.exe is no longer ru
nning, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:

배경

winrm을 통한 원격 실행도중 셀레니움에서 오류 발생, 평소 로컬실행에서는 발생하지 않았던 오류

해결방법

  • chrome_options.add_argument("--no-sandbox") 옵션추가
    chrome_options = Options()
      chrome_options.headless = True
      chrome_options.add_experimental_option('prefs', {
          "download.default_directory": path_daily_download,
          "download.prompt_for_download": False,
          "download.directory_upgrade": True,
          "safebrowsing.enabled": True
      })
      # 샌드박스 모드는 보안 기능이지만, 일부 환경에서는 충돌을 일으킬 수 있습니다. 
      # 이를 비활성화하여 충돌을 방지합니다.
      chrome_options.add_argument("--no-sandbox")

이유 분석

1. 샌드박스 모드와 권한 문제

샌드박스 모드는 브라우저가 실행되는 환경을 격리하여 보안을 강화하는 기능입니다. 이는 프로세스가 제한된 권한으로 실행되도록 하여 시스템을 보호합니다. 그러나 특정 환경에서는 샌드박스 모드가 문제를 일으킬 수 있습니다.

권한 부족

  • 샌드박스 모드는 추가적인 보안 제약을 가합니다. 원격 서버 또는 가상화된 환경에서는 브라우저가 필요한 시스템 리소스에 접근하지 못할 수 있습니다.
  • 샌드박스 모드가 활성화된 상태에서는 Chrome이 시스템 리소스에 대한 접근 권한이 제한되어 브라우저가 제대로 실행되지 않을 수 있습니다.

2. 원격 및 가상화 환경에서의 제한

리소스 접근 제한

  • 원격 데스크톱 또는 가상 머신에서 실행할 때, 샌드박스 모드가 시스템의 가상화 및 리소스 제한과 충돌할 수 있습니다.
  • 가상화된 환경에서는 프로세스 격리와 자원 제한이 기본적으로 설정되어 있어 샌드박스 모드와 충돌할 가능성이 큽니다.

3. 브라우저 및 시스템 간의 충돌

시스템 보안 설정

  • 특정 시스템 보안 설정이 샌드박스 모드와 충돌하여 Chrome이 제대로 실행되지 않을 수 있습니다.
  • 예를 들어, Windows의 사용자 계정 컨트롤(UAC) 설정이나 다른 보안 소프트웨어가 샌드박스 모드의 동작을 방해할 수 있습니다.