Profile picture

[Python] 셀레니움(Selenium) 로그인 유지하기

JaehyoJJAng2024년 07월 03일

개요

네이버 카페에서 특정 키워드가 포함된 게시글이 올라올 때 자동으로 답변을 달아주는 봇을 구현해보려고 하는데

구현 도중, 매번 프로그램을 재실행할 때마다 새로운 브라우저가 실행되어 로그인이 풀리는 현상이 발생하였다.

따로 로그인 처리 로직 구현 없이 자동화하려는 사이트의 로그인 상태가 유지된 상태에서 프로그램이 실행되었으면 좋겠다는 생각이 들었다.

방법을 모색하기 위해 열심히 찾아본 결과, 셀레니움에서는 add_argument() 함수를 활용하여 로그인을 유지 시킬 수 있는 것 같았다.

그러나 이 작업은 자동화 하려는 사이트에 로그인 자동 유지 라는 기능이 존재할 때에만 가능하다.


사전 준비

  • Chrome
  • Python

User-Data

크롬은 기본적으로 user data에 사용자 정보를 저장한다.

기본 경로는 다음과 같다.

C:\Users\USER\AppData\Local\Google\Chrome\User Data 이며,

새로운 user data 폴더 생성도 가능하다.

나는 경로를 단순화하기 위해 아래와 같은 user-data용 폴더를 생성하였다.

C:\user_data\selenium

Naver

먼저 베이스가 되는 셀레니움 코드는 아래와 같다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add.experimental_option('detach', True)
options.add.experimental_option('excludeSwitches', ["enable-logging"])

driver = webdriver.Chrome(options=options)
driver.maximize_window()

driver.get(url="https://www.naver.com")

위 코드를 그대로 실행하면 아래와 같이 자동화된 브라우저가 뜨게 된다.
image
위 상태에서 로그인을 하고 브라우저를 끄고 코드를 다시 실행하면 새로운 브라우저가 실행되어 로그인이 풀려있게 된다.


이제 로그인을 유지시키기 위해 위 코드에서 아래 코드 한 줄만 추가해보자.

options = Options()
options.add_argument(r"user-data-dir=C:\user_data\selenium")
...

user-data-dir의 경로에는 위에서 생성해두었던 C:\user_data\selenium 경로를 명시한다.


위 코드 한 줄을 추가한 상태로 다시 실행시킨 후, 로그인을 진행해보자.
image
정상적으로 로그인을 진행하였고(로그인의 경우 수동으로 진행), 브라우저를 종료하자.


그리고 다시 코드를 실행해보자.

로그인이 유지되어 있는 것을 볼 수 있을 것이다.

참고로, 로그인 진행 시 로그인 자동 유지 기능을 켜줘야 한다.

해당 기능이 없는 사이트의 경우에는 위 작업이 불가능하다.

Google

구글의 경우에는 위 작업과 동일하지만 아래 코드를 한 줄 추가해줘야 한다.

options.add_argument("disable-blink-features=AutomationControlled")

해당 옵션은 크롬 브라우저 내에서 자동화 탐지를 비활성화하는 옵션이다.

위 옵션을 주지 않고 작업을 진행하면 아래와 같은 창이 떠 다음 단계로 진행이 불가능하기 때문에 꼭 넣어줘야한다.
image


Loading script...