Requests --> Selenium 세션 쿠키 유지

2024. 1. 26. 12:02IT관련

반응형

Cookies

웹사이트에 로그인 후 작업하는 것을 자동화 해야 한다. Selenium으로 로그인하면 되는데, 이 경우 id/ password가 유출될 수 있고 selenium은 post 방식의 api를 지원하지 않는다. 게다가 chrome을 실행해야 하기 때문에 실행 속도가 빠르지도 않다. 그래서 requests로 빠르게 로그인 하고 세션을 유지한채 chrome으로 전환하고 싶었다. 

로그인을 유지하려면 세션 쿠키를 유지하면 되는데 쿠키에 대해서는 HTTP 쿠키를 참고하도록 한다. 추가로 쿠키에는 여러가지 attributes가 존재하며 모질라 웹사이트에 가면 attributes에 대해 자세히 알 수 있다.

 

requests --> selenium

# requests 로그인
url = 'xxx/login'
params = {
    "id": "id",
    "pwd": "pwd",
}
session = requests.Session()
response = session.post(url, params=params) # POST로 로그인 시도
if response.status_code == 200:
    print('로그인 성공')
else:
    return

# selenium 실행
url = 'xxx/main'
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
driver.get(url) # URL로 이동

# requests 세션 쿠키를 selenium에 복사
for cookie in response.cookies:
    cookie_dict = {"domain": cookie.domain, "name": cookie.name, 
                   "value": cookie.value, "secure": cookie.secure}
    if cookie.expires:
        cookie_dict["expires"] = cookie.expires
    if cookie.path_specified:
        cookie_dict["path"] = cookie.path
    driver.add_cookie(cookie_dict)  # 쿠키 적용

response의 cookie를 selenium에 add_cookie해서 적용하면 로그인 상태를 유지하게 된다.

 

 

반응형