셀레니움 자동화를 감지하지 않도록 웹 사이트가 강제하는 경우가 있을 수 있습니다. 이런 경우, 웹 사이트가 셀레니움을 사용하여 자동화를 탐지하고 이에 대응하는 자동화 방지 메커니즘을 사용합니다. 셀레니움 자동화 감지를 회피하고 테스트를 원활하게 실행하기 위해 몇 가지 방법을 시도할 수 있습니다.
하이어시스템 소개
하이어시스템 소개 feat.김프로
소개 안녕하세요, 저는 하이어시스템의 김프로입니다. 여러분들이 어려움을 겪고 계신 일상 업무를 저의 안정적이고 빠른 소프트웨어로 자동화하는 것, 그것이 저의 목표입니다. '하이어시스템
wise-office-worker.tistory.com
User-Agent 변경
셀레니움을 사용하는 경우, 브라우저의 User-Agent를 변경하여 일반적인 브라우저처럼 보이도록 설정할 수 있습니다. user-agent를 설정하여 웹 사이트에 접속할 때 셀레니움 자동화가 아닌 일반 사용자처럼 보이도록 합니다.
일반 브라우저를 열고 개발자 모드(F12)로 접속합니다. 그리고 콘솔 창에서 navigator.userAgent 를 입력하여 현재 OS에서 실행되는 일반 크롬 브라우저의 user-Agent 값을 확보합니다. 이 값을 크롬드라이버의 argument에 설정합니다.
![](https://blog.kakaocdn.net/dn/bvUehi/btspUnXPXyM/tFTpGcJXIyrx77dZiwTwDk/img.png)
![](https://blog.kakaocdn.net/dn/c0eX4K/btsp0RRoSWb/vYhMjyO9j9nkPmAqei8R4K/img.png)
셀레니움 코드에서 아래와 같이 추가합니다.
user_agent=f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{chrome_ver}.0.0.0 Safari/537.36'
chrome_options.add_argument(user_agent)
Headless 모드 사용
Headless 모드를 사용하여 브라우저가 UI 없이 백그라운드에서 동작하도록 설정할 수 있습니다. 이로 인해 일부 웹 사이트가 자동화를 탐지하는 것을 어려워할 수 있습니다.
브라우저 옵션 설정
excludeSwitches, useAutomationExtension, --disable-blink-features 등의 브라우저 옵션을 설정하여 자동화를 탐지하는 기능을 비활성화하도록 할 수 있습니다.
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging', 'enable-automation'])
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
3번 행에 의해 navigator.webdriver 값이 False로 설정됩니다.
동적 대응
웹 사이트가 자동화를 감지하는 메커니즘이 변경되거나 업데이트될 수 있으므로, 동적으로 자동화 대응 코드를 변경하는 방법을 사용하기도 합니다.
프록시 서버
프록시 서버를 사용하여 셀레니움과 웹 사이트 사이에 중계 서버를 두어 자동화 감지를 우회할 수 있습니다.
속도 제어
셀레니움으로 자동화하는 동작을 브라우저가 인지하기 어렵게 조정하여 자동화 감지를 회피할 수 있습니다. 일반적으로 웹 사이트에서는 최소시간을 정하고 이 시간 이내에서 반복적으로 처리되는 경우 자동화 브라우저로 판정하는 경우가 많습니다.
이러한 방법을 사용하여 셀레니움 자동화 감지를 회피할 수 있지만, 웹 사이트는 정기적으로 업데이트되고 자동화 방지 메커니즘도 개선될 수 있으므로, 특정 웹 사이트에 대한 자동화 테스트를 실행할 때는 반드시 웹 사이트의 이용 약관을 준수하고, 법적인 제약사항을 확인하고, 테스트를 진행해야 할 수도 있습니다. 또한 셀레니움을 사용하여 웹 사이트를 자동화할 때는 적절한 테스트 코드를 작성하여 예외 상황을 처리하는 것이 중요합니다.
'파이썬코드공유' 카테고리의 다른 글
Selenium Waits Explicit Implicit 명시적대기 암묵적대기 (0) | 2023.08.04 |
---|---|
셀레니움 웹드라이버 close 와 quit 차이점 (0) | 2023.08.04 |
Tkinter Background Task 백그라운드 작업 (0) | 2023.08.03 |
Tkinter layout methods 위젯 배치방법 (0) | 2023.08.03 |
Tkinter 그리드 레이아웃(grid layout) (1) | 2023.08.03 |