AI를 이용한 프로그램 만들기
"Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 문구 제거??
쌩양파
2025. 5. 25. 17:46
오늘은 이런 저런 프로그램을 만들어 보다가...웹크롤링중 Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 라는 문구가 자꾸 크롬화면에 뜨는것을 보고, 어떻게 하면 없애 볼까 하면서, AI 선생님들에게 물어 물어서 터득한 방법을 공유합니다.
아마 파이썬으로 Web을 가지고 놀다보면, 위와 같은 문구를 만나신 분들이 있으실텐데요. 자동화 봇 감지 우회 기술 하는 3단 콤보를 한번에 말씀 드립니다. 이것 해보시고 안되면, AI 선생님께 물어보세요.
1. import 추가
import undetected_chromedriver as uc # undetected_chromedriver import 추가
2. 코드 삽입 1
1) 코드의 가장 위에 있는 Class XXXX 안에 있는 def__init__ABC 안에 self.driver = self._initialize_undetected_driver() 추가
class XXXX (어쩌고 저쩌고):
def __init__(self, start_hour=9):
super().__init__()
어쩌고 저쩌고 코드들
self.driver = self._initialize_undetected_driver() # < -- 봇 감지 우회용
어쩌고 저쩌고 코드들
3) 코드 삽입 2
def _initialize_undetected_driver(self):
"""
undetected_chromedriver를 초기화하고 봇 감지 우회 설정을 적용합니다.
"""
options = uc.ChromeOptions()
# 랜덤 User-Agent 설정
USER_AGENTS = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/120.0.2210.144',
]
options.add_argument(f"user-agent={random.choice(USER_AGENTS)}")
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--disable-blink-features=AutomationControlled')
driver = uc.Chrome(options=options)
# Page.addScriptToEvaluateOnNewDocument를 통한 JavaScript 속성 조작
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': '''
Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
Object.defineProperty(navigator, 'plugins', {get: () => [1, 2, 3]});, C
Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']});
Object.defineProperty(navigator, 'hardwareConcurrency', {get: () => 4});
Object.defineProperty(navigator, 'deviceMemory', {get: () => 8});
Object.defineProperty(navigator, 'platform', {get: () => 'Win32'});
window.chrome = { runtime: {}, app: {} };
'''
})
# 랜덤한 창 크기 설정 (봇 감지 우회에 도움)
width = random.randint(1280, 1420)
height = random.randint(720, 1080)
driver.set_window_size(width, height)
driver.set_window_position(0, 0) # 창 위치 고정 (선택 사항)
return driver
혹시 성공하시 도움이 되신분들은... 댓글 필수요..^^