IT/Selenium

시크릿모드로 창 열기(ChromeOptions)

소꼼냥의 일상 2025. 3. 22. 18:42
728x90
반응형

자동화에서 시크릿 모드를 사용하는 이유는 여러 가지가 있습니다. 주요 이유는 다음과 같습니다:

1. 쿠키와 캐시를 피할 수 있음

  • 시크릿 모드에서는 브라우저가 쿠키나 캐시를 저장하지 않습니다. 이는 웹사이트에 로그인하거나 자동화 작업을 진행할 때 이전에 저장된 정보로 인해 영향을 받지 않게 만들어줍니다. 예를 들어, 테스트가 반복될 때마다 초기 상태로 시작하여 이전 세션의 쿠키나 캐시로 인해 발생할 수 있는 오류를 방지할 수 있습니다.

2. 로그인 세션 분리

  • 시크릿 모드를 사용하면 기존에 로그인된 계정이나 세션 정보가 자동으로 로드되지 않습니다. 따라서 자동화 테스트에서 여러 계정으로 로그인하거나 세션 간 충돌을 방지할 수 있습니다. 예를 들어, 다른 계정으로 로그인하여 테스트를 진행하고자 할 때 유용합니다.

3. 브라우저 환경을 깨끗하게 유지

  • 일반적인 브라우징 모드에서는 웹사이트를 방문할 때마다 생성된 임시 파일들(쿠키, 세션 정보 등)이 쌓입니다. 시크릿 모드에서는 이러한 임시 파일이 생성되지 않기 때문에 자동화 테스트 후 브라우저를 종료할 때 모든 데이터가 삭제되어, 후속 테스트나 작업이 깨끗한 환경에서 진행될 수 있습니다.

4. 로그인 상태나 사용자 정보에 의존하지 않음

  • 자동화 테스트에서는 종종 특정 웹 페이지나 애플리케이션이 "사용자 맞춤형" 정보를 기반으로 동작하는 경우가 있습니다. 시크릿 모드를 사용하면 이전 사용자 정보나 설정에 의존하지 않고 정확하고 일관된 테스트가 가능합니다.

5. 익명성 확보

  • 시크릿 모드는 브라우징을 익명으로 처리하여 자동화 과정에서의 데이터 유출을 방지할 수 있습니다. 웹 사이트가 사용자 데이터를 추적하거나, 쿠키를 활용한 리타게팅을 하는 경우 이를 차단할 수 있습니다.

6. 테스트 환경의 일관성 유지

  • 자동화 테스트를 할 때 시크릿 모드를 사용하면 각 테스트 간에 환경이 일관되게 유지됩니다. 일반적인 브라우징 모드에서는 여러 사이트에서 저장한 쿠키나 로컬 저장소 데이터가 테스트 결과에 영향을 줄 수 있지만, 시크릿 모드는 이를 방지하여 테스트의 일관성을 높여줍니다.

Selenium에서 웹페이지를 크롬의 시크릿 모드(Incognito 모드)로 여는 방법은 ChromeOptions를 사용하여 시크릿 모드를 활성화하는 것입니다.

Python에서 Selenium을 사용하여 크롬 시크릿 모드로 웹페이지 열기

def open_report_page():
    # WebDriverManager(Chromium)로 ChromeDriver 경로를 자동으로 관리
    service = Service(ChromeDriverManager().install())

    # 옵션 설정
    options = webdriver.ChromeOptions()
    # 시크릿 모드 활성화
    options.add_argument("--incognito")

    # 크롬 드라이버 경로 지정
    driver = webdriver.Chrome(service=service, options=options)

    #1. 웹 페이지 열기(URL 열기)
    driver.get("https://www.etoday.co.kr/search/main?fldSort=1&keyword=%EC%98%A4%EB%8A%98%EC%9D%98+%EC%A6%9D%EC%8B%9C+%EB%A6%AC%ED%8F%AC%ED%8A%B8&fldTermType=2&fldTermStart=&fldTermEnd=")

    # 윈도우 크기 최대화
    driver.maximize_window()

설명:

  1. Options() 객체를 생성하여 크롬 설정을 조작할 수 있습니다.
  2. add_argument("--incognito")를 사용하여 시크릿 모드로 실행되도록 설정합니다.
  3. webdriver.Chrome(options=chrome_options)로 시크릿 모드 설정을 포함한 크롬 드라이버를 실행합니다.

1. --headless (헤드리스 모드)

  • 설명: 크롬 브라우저를 UI 없이 백그라운드에서 실행하도록 설정합니다. 브라우저를 화면에 띄우지 않고 작업을 수행할 수 있기 때문에 서버 환경에서 테스트를 자동화할 때 유용합니다.
  • 예시:
  • python
chrome_options.add_argument("--headless")

2. --disable-gpu (GPU 비활성화)

  • 설명: GPU 하드웨어 가속을 비활성화합니다. 보통 헤드리스 모드에서 사용하는 옵션으로, 일부 환경에서 GPU를 비활성화하면 브라우저 성능이 안정적일 수 있습니다.
  • 예시:
  • python
     
chrome_options.add_argument("--disable-gpu")

3. --window-size=<width>,<height> (창 크기 설정)

  • 설명: 크롬 브라우저의 창 크기를 지정할 수 있습니다. 자동화 테스트 시 특정 화면 크기에서만 동작하는 기능을 테스트할 때 유용합니다.
  • 예시:
  • python
chrome_options.add_argument("--window-size=1920,1080")

4. --incognito (시크릿 모드)

  • 설명: 브라우저를 시크릿 모드로 실행합니다. 이 모드에서는 브라우징 데이터가 저장되지 않으며, 쿠키나 캐시가 사용되지 않습니다.
  • 예시:
  • python
    코드 복사
    chrome_options.add_argument("--incognito")

5. --disable-extensions (확장 프로그램 비활성화)

  • 설명: 크롬 브라우저의 확장 프로그램을 비활성화합니다. 테스트 중에 불필요한 확장 프로그램이 영향을 미치지 않도록 할 수 있습니다.
  • 예시:
  • python
     
chrome_options.add_argument("--disable-extensions")

6. --no-sandbox (샌드박스 비활성화)

  • 설명: 보안상의 이유로 브라우저에서 샌드박스를 사용하는데, 특정 환경에서는 이 옵션을 비활성화해야 할 수도 있습니다. 주로 Docker 환경에서 유용합니다.
  • 예시:
  • python
chrome_options.add_argument("--no-sandbox")

7. --disable-dev-shm-usage (디바이스 공유 메모리 사용 비활성화)

  • 설명: 일부 환경에서 Docker나 리소스가 제한적인 시스템에서 크롬을 실행할 때 이 옵션을 사용하여 오류를 피할 수 있습니다. 이는 /dev/shm(공유 메모리)을 비활성화하고, 대신 디스크를 사용하도록 합니다.
  • 예시:
  • python
     
chrome_options.add_argument("--disable-dev-shm-usage")

8. --remote-debugging-port=<port> (원격 디버깅 활성화)

  • 설명: 특정 포트를 통해 원격 디버깅을 활성화합니다. 이를 통해 브라우저를 원격으로 디버깅할 수 있습니다.
  • 예시:
  •  
  • python
chrome_options.add_argument("--remote-debugging-port=9222")

9. --user-data-dir=<path> (사용자 데이터 디렉토리 설정)

  • 설명: 크롬의 사용자 데이터를 저장할 디렉토리를 지정합니다. 이를 통해 특정 사용자 프로파일을 로드하거나, 여러 프로파일을 사용하는 테스트를 할 수 있습니다.
  • 예시:
  • python
chrome_options.add_argument("--user-data-dir=/path/to/your/custom/profile")

10. --start-maximized (최대화 상태로 시작)

  • 설명: 크롬 브라우저를 실행할 때 자동으로 창을 최대화합니다. 테스트에서 화면 크기나 레이아웃을 고려해야 할 때 유용합니다.
  • 예시:
  • python
chrome_options.add_argument("--start-maximized")
더보기
driver.maximize_window()와 --start-maximized 옵션의 주요 차이점

 

언제 최대화됨 브라우저가 실행된 후에 최대화 브라우저가 실행될 때부터 최대화됨
설정 위치 코드에서 직접 호출 (브라우저 실행 후) 크롬 브라우저 실행 시 옵션 설정
동적 창 크기 변경 가능 (실행 중에 창 크기 변경 가능) 불가능 (브라우저가 실행되면 고정됨)
유용한 상황 테스트 중간에 창 크기 조정이 필요할 때 브라우저 실행 시 기본적으로 최대화된 창을 원할 때
브라우저 실행 시부터 창이 최대화된 상태로 시작되므로 테스트 환경이 일관
장점 동적으로 창 크기를 변경할 수 있음 브라우저 실행 시 자동으로 최대화됨
  • **driver.maximize_window()**는 브라우저 실행 후에 창 크기를 동적으로 최대화할 때 사용하며, 창 크기를 나중에 변경할 수 있는 유연성이 있습니다.
  • **--start-maximized**는 브라우저가 처음 실행될 때 자동으로 최대화된 창을 원할 때 사용하며, 브라우저가 실행되면 즉시 최대화된 상태로 시작됩니다.

따라서, 브라우저 실행 시부터 최대화된 창을 원한다면 --start-maximized 옵션을 사용하는 것이 좋고, 브라우저 실행 후에 창 크기를 동적으로 변경하고 싶다면 driver.maximize_window()를 사용하는 것이 좋습니다.

11. --disable-notifications (알림 비활성화)

  • 설명: 웹사이트에서 보내는 알림을 비활성화하여 테스트 중에 방해받지 않도록 설정합니다.
  • 예시:
  •  
  • python
chrome_options.add_argument("--disable-notifications")

12. --enable-automation (자동화 모드 활성화)

  • 설명: 이 옵션을 설정하면, 크롬 브라우저가 자동화 도구로 제어되고 있다는 표시가 브라우저 UI에 나타납니다. 예를 들어, "Chrome is being controlled by automated test software"라는 문구가 나타날 수 있습니다.
  • 예시:
  • python
chrome_options.add_argument("--enable-automation")

13. --no-proxy-server (프록시 서버 사용 안 함)

  • 설명: 프록시 서버를 사용하지 않도록 설정합니다. 이를 통해 자동화 도구가 직접 인터넷에 연결되도록 할 수 있습니다.
  • 예시:
  • python
chrome_options.add_argument("--no-proxy-server")
더보기

프록시 서버를 사용하는 것과 사용하지 않는 것의 자동화 차이는 주로 네트워크 트래픽 관리, 익명성, 속도차단 우회와 관련됩니다. 아래에 두 가지를 비교한 주요 차이점을 설명합니다.

1. 프록시 서버를 사용할 때

프록시 서버는 클라이언트(자동화 도구)가 요청하는 모든 트래픽을 대신 처리하고, 실제 웹 서버와의 통신을 대리합니다. 일반적으로 웹 요청을 중계하는 서버로, IP 주소를 숨기거나 변경하는 역할을 합니다.

장점:

  • 익명성 제공:
    • 프록시 서버를 사용하면 실제 사용자 IP 주소가 아닌 프록시 서버의 IP 주소로 요청이 전달됩니다. 이를 통해 익명성을 유지할 수 있습니다. 자동화 도구가 특정 웹사이트에 접근할 때, 원본 IP를 숨기거나 바꿀 수 있어 트래킹을 방지하거나 차단을 회피할 수 있습니다.
  • IP 차단 우회:
    • 일부 웹사이트는 일정한 IP에서 많은 요청을 받으면 IP 차단을 하거나 캡차를 요구할 수 있습니다. 여러 IP를 사용하여 요청을 분산시키면 차단을 피할 수 있습니다. 예를 들어, 다양한 프록시 서버를 사용하여 IP를 변경하면, 웹사이트가 자동화 요청을 감지하거나 차단하는 것을 피할 수 있습니다.
  • 지리적 제한 우회:
    • 프록시 서버를 사용하면 특정 지역 제한(Geo-blocking)을 우회할 수 있습니다. 예를 들어, 특정 국가에서만 접근 가능한 웹사이트에 접속하기 위해 해당 국가의 IP를 사용할 수 있습니다.
  • 트래픽 관리:
    • 여러 프록시 서버를 사용하여 트래픽을 분산시키거나, 트래픽 속도를 조절할 수 있습니다. 이를 통해 자동화 스크립트의 효율성을 높일 수 있습니다.

단점:

  • 성능 저하:
    • 프록시 서버를 사용하면 추가적인 네트워크 홉이 생기기 때문에 응답 속도가 느려질 수 있습니다. 특히 프록시 서버가 과부하 상태이거나 속도가 느린 경우, 자동화 작업이 지연될 수 있습니다.
  • 추가적인 설정:
    • 프록시 서버를 설정하는 데 시간이 걸릴 수 있고, 프록시 서버의 안정성에 따라 자동화 스크립트가 중단되거나 오류가 발생할 수 있습니다.
  • 프록시 차단:
    • 일부 웹사이트는 프록시 서버를 감지하고 차단할 수 있습니다. 특히 공용 프록시는 차단될 가능성이 높고, 반복적인 요청이 감지되면 프록시 IP를 차단할 수 있습니다.

14. --disable-logging (로그 비활성화)

  • 설명: 크롬 브라우저에서 발생하는 로그를 비활성화하여, 브라우저의 로그가 불필요하게 출력되지 않도록 설정합니다.
  • 예시:
  • python
chrome_options.add_argument("--disable-logging")
728x90
반응형