[리원아빠] 파이썬 크롬 셀레니움 봇탐지 우회 쿠키 활용

2023. 1. 9. 10:21Python

반응형

 


파이썬 셀레니움 봇탐지 우회 쿠키 활용하기



파이썬 셀레니움을 이용해 웹크롤링을 하다보면 봇탐지에 걸리는 경우가 있다.

 

셀레니움에 의해 실행되는 크롬이 우리가 흔히 사용하는 모드가 아닌

 

자동화 테스트 모드이기 때문인데 이번 포스팅에서는

 

다른 방법으로 크롬을 실행하여 봇탐지 우회를 하는 방법에 대해 알아보자.

 

 

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time


option = Options()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=option)
driver.get("https://www.naver.com")
time.sleep(1000)

일반적으로 파이썬에서 셀레니움을 통해 크롬을 시작하는 방법은 위와 같다. (왼쪽 이미지)

 

웹드라이버를 사용해 크롬을 실행하면 실행된 크롬에서 "자동화된 테스트 소프트웨어" 라는 구문이 확인된다.

 

크롬 자체가 이처럼 일종의 테스트 모드로 실행되기 때문에 봇탐지에 걸리는 경우가 발생하게 되는것이고

 

더 나아가 테스트 모드이다 보니 쿠키 정보를 일체 저장하지 않는 일회성 실행이 되어버린다.

 

쿠키란 우리가 로그인을 했던 사이트는 로그인 정보를 저장해 재방문시 로그인을 하지 않아도

바로 사이트를 이용할 수 있도록 로그인정보등을 관리해주는 일종의 데이터 영역이다.

 

 

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import subprocess
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service


subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chromeCookie"')
url = "https://www.naver.com"


option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=option)
driver.maximize_window()
driver.get(url)

문제가 무엇인지 알았으니 해결책을 알아보자.

 

파이썬에서는 다양한 모듈을 제공하는데 그 중 subprocess 모듈은 특정 프로세스를 실행해주는 기능을 제공한다.

 

우리는 이 subprocess 모듈을 활용해 크롬을 실행해야 한다.

 

먼저 간단하게 위의 이미지 코드에 대해 설명을 하자면

 

subprocess 모듈을 통해 자신의 PC에 설치된 크롬을 디버그 모드로 실행하는 것이다.

 

이렇게 실행된 크롬은 셀레니움 드라이버를 통해 제어할 수 있다.

 

이미지상의 빨간 박스 중 첫번째는 자신의 PC에 크롬이 설치되어 있는 위치를 지정해야 하며

 

일반적으로는 아래 2가지 값 중 하나이다.

 

  • C:\Program Files\Google\Chrome\Application\
  • C:\Program Files (x86)\Google\Chrome\Application\

 

두번째 빨간박스는 디버그 모드로 수행된 크롬의 쿠키정보등을 저장할 위치인데

 

이 부분은 자신이 원하는 경로로 지정하면 된다.

 

 

subprocess 모듈을 통해 실행한 크롬이다.

 

 "자동화된 테스트 소프트웨어" 라는 구문이 더 이상 나타나지 않으며 우리가 흔히 사용하는 크롬과 별차이가 없다.

 

더불어 이렇게 실행된 크롬은 쿠키정보를 우리가 지정한 위치에 저장하고 있으므로 일회성이 아니다.

 

이말인 즉슨 사용자가 A라는 사이트에서 한번 수동으로 로그인을 해 쿠키정보만 저장되었다면

 

다음에 A라는 사이트를 방문시에는 로그인을 할 필요가 없다는거다.

 

웹크롤링이나 셀레니움 제어시 번거로운게 로그인 작업인데 그 번거로운 작업조차 한방에 해결해준다.

 

끝으로 저장된 쿠키정보등을 삭제하고 싶다면 우리가 지정했던 저장 위치 폴더만 삭제하면 된다.

 

그럼 끝.

반응형