셀레니움을 사용하여 자동화 작업을 할 때, 사이트에서 매크로를 탐지하거나 차단하는 경우가 있습니다.
이를 회피하기 위해 사용자 에이전트(User Agent) 값을 조작할 수 있습니다.
사용자 에이전트는 브라우저와 운영 체제 정보를 웹 서버에 제공하여 콘텐츠를 최적화하는 데 사용됩니다.
안드로이드 계열의 유저 에이전트를 설정하면, 셀레니움이 안드로이드 기반의 브라우저로 인식되어 웹 서버에서 매크로를 탐지하기 어려워집니다.
적용법
- 일반 브라우저에서의 유저 에이전트 확인:
- 개발자 도구를 열고 콘솔창에 navigator.userAgent를 입력합니다.
- 나오는 값은 해당 브라우저의 유저 에이전트입니다.
- 셀레니움 옵션으로 설정:
- 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 주소에서 동일한 웹 브라우저를 사용하더라도, 일반적인 브라우저로 요청을 보낼 때와 셀레니움 등의 자동화 도구를 사용하여 요청을 보낼 때, 사용자 에이전트 값이 다를 수 있습니다.
셀레니움 등의 자동화 도구는 기본적으로 자동화 프로그램임을 나타내는 정보를 포함할 수 있어서, 이를 통해 서버는 이 요청을 인식하고 이에 따른 조치를 취할 수 있습니다.
따라서 사용자 에이전트 값을 조작하여 자동화 프로그램이 아닌 것처럼 보이도록 설정할 수 있습니다.