1. 문제
Python을 사용하여 크롤링을 할 때 Selenium
을 많이 사용합니다. 이 때, 매 번 새로운 브라우저를 띄우는 과정이 필요하게 됩니다. 원하는 크롤링에서 로그인이 필요하면, 코드에서 새로 로그인하는 과정이 많이 필요하며 로그인 할 때 봇을 감지하기 위한 인증 문자 입력이나 추가적으로 MFA 와 같은 2차 인증이 필요할 수 있습니다. 로그인이 많으면 해당 서버에서 접속이 막힐 수도 있고, 생각보다 코드 작성이 다소 복잡해집니다.
이 때, 현재 사용 중인 브라우저에서 크롤링을 시도한다면 이러한 문제를 손쉽게 해결할 수 있을 것입니다. 사용중인 창에서 바로 크롤링 하는 방법은 무엇일까요?
2. 해결법
이 문제의 해결법은 바로 Selenium Debugging Mode
를 사용하는 것입니다. 주로 9222 port 를 사용하며 아래와 같은 명령어를 사용하여 Windows 와 Mac 에서 각각 Debugging Mode 는 아래와 같이 실행할 수 있습니다.
2.1. Windows 에서 사용법
Windows 에서는 아래의 코드를 사용하여 9222
port에 Chrome 실행할 수 있습니다.
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:/ChromeTEMP"
C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:/ChromeTEMP"
2.2. Mac 에서 사용법
Mac 에서는 아래의 코드를 사용하여 9222
port에 Chrome 실행할 수 있습니다.
$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="~/ChromeProfile"
2.3. Python 코드
위의 코드를 사용하면 브라우저가 실행되었을 것입니다. 그 때, 해당 브라우저에 미리 필요한 로그인을 해줍니다. 그 이후 Debugging Mode
가 수행된 Browser 를 실행하면 아래와 같은 python 코드를 사용하여 현재 브라우저에서 로그인이 되어 있는 것을 확인할 수 있습니다.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "드라이버 경로"
# 드라이버 경로에 아래의 값을 입력해줍니다
# Windows
# - C:\Program Files\Google\Chrome\Application\chrome.exe
# - C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
# Mac
# /Applications/Google\ Chrome.app/Contents/MacOS/Google
driver = webdriver.Chrome(chrome_driver, options=chrome_options)
driver.get('크롤링 하기 위한 url')
위의 코드를 잘 사용하여 크롤링에 도움이 되셨으면 좋겠습니다!