본문 바로가기
Python/크롤링, 스크래핑 (Selenium 등등)

[Python] 유저 에이전트(User Agent)와 셀레니움 옵션 설정에 대해 Options()

by dong_su 2024. 5. 27.

셀레니움을 사용하여 자동화 작업을 할 때, 사이트에서 매크로를 탐지하거나 차단하는 경우가 있습니다.

이를 회피하기 위해 사용자 에이전트(User Agent) 값을 조작할 수 있습니다.

사용자 에이전트는 브라우저와 운영 체제 정보를 웹 서버에 제공하여 콘텐츠를 최적화하는 데 사용됩니다.

안드로이드 계열의 유저 에이전트를 설정하면, 셀레니움이 안드로이드 기반의 브라우저로 인식되어 웹 서버에서 매크로를 탐지하기 어려워집니다.


적용법

  1. 일반 브라우저에서의 유저 에이전트 확인:
    • 개발자 도구를 열고 콘솔창에 navigator.userAgent를 입력합니다.
    • 나오는 값은 해당 브라우저의 유저 에이전트입니다.
  2. 셀레니움 옵션으로 설정:
    • options.add_argument('user-agent=...')를 사용하여 원하는 유저 에이전트 값을 설정합니다.
    • 다양한 옵션을 함께 사용하여 셀레니움이 원하는 환경으로 동작하도록 설정할 수 있습니다.

 

예시)

# import할 모듈
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('user-agent=나오는 유저 에이전트 값')
options.add_argument('headless')  # Headless 모드 (브라우저 표시 없이 실행)
options.add_argument('--window-size=1920,1080')  # 실행되는 브라우저의 크기 설정
options.add_argument('--start-maximized')  # 브라우저가 최대화된 상태로 실행
options.add_argument('--start-fullscreen')  # 전체화면 모드로 실행
options.add_argument('--blink-settings=imagesEnabled=false')  # 이미지 로딩 비활성화
options.add_argument('--mute-audio')  # 음소거 옵션 적용
options.add_argument('incognito')  # 시크릿 모드로 실행

추가 설명)

사용자 에이전트(User Agent) 값은 특정 기기나 하드웨어를 구분하기 위한 것이 아니라,

사용자가 웹 브라우저를 통해 웹 서버에 요청을 보낼 때 해당 브라우저와 운영 체제에 대한 정보를 제공하는 역할을 한다. 이 정보는 웹 서버가 사용자에게 최적화된 콘텐츠를 제공하고 적절한 형식으로 렌더링할 수 있도록 도와줍니다.

예를 들어, 모바일 기기에서는 더 작은 화면에 최적화된 콘텐츠를 제공하거나, 터치 이벤트를 지원하는 등의 작업을 수행할 수 있습니다. 실제로 사용자 에이전트는 웹 브라우저의 종류와 버전, 운영 체제의 종류와 버전 등을 포함합니다.

따라서 동일한 IP 주소에서 동일한 웹 브라우저를 사용하더라도, 일반적인 브라우저로 요청을 보낼 때와 셀레니움 등의 자동화 도구를 사용하여 요청을 보낼 때, 사용자 에이전트 값이 다를 수 있습니다.

셀레니움 등의 자동화 도구는 기본적으로 자동화 프로그램임을 나타내는 정보를 포함할 수 있어서, 이를 통해 서버는 이 요청을 인식하고 이에 따른 조치를 취할 수 있습니다.

따라서 사용자 에이전트 값을 조작하여 자동화 프로그램이 아닌 것처럼 보이도록 설정할 수 있습니다.


참고사이트)

https://codingstep.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%ED%81%AC%EB%A1%AC-%EC%98%B5%EC%85%98-python-selenium-chrome-optionsFeat-headless-window-size-user-agent-etc