TaoSourcerer/modules/cookie_manager.py

104 lines
4.4 KiB
Python

import pickle
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import logging
# 로거 인스턴스 가져오기
logger = logging.getLogger('default_logger')
COOKIES_FILE_PATH = 'taobao_cookies.pkl'
def save_cookies(driver):
try:
with open(COOKIES_FILE_PATH, 'wb') as file:
pickle.dump(driver.get_cookies(), file)
logger.debug("쿠키 저장 완료")
except Exception as e:
logger.debug(f"쿠키 저장 중 에러 : {e}")
def load_cookies(driver):
try:
if os.path.exists(COOKIES_FILE_PATH):
with open(COOKIES_FILE_PATH, 'rb') as file:
cookies = pickle.load(file)
for cookie in cookies:
if 'expiry' in cookie:
del cookie['expiry']
driver.add_cookie(cookie)
logger.debug("쿠키 로드 완료")
return True
except EOFError as eof_error:
logger.debug(f"쿠키 로드 중 EOF 에러 발생 : {eof_error}")
return False
except Exception as e:
logger.debug(f"쿠키 로드 중 기타 에러 발생 : {e}")
return False
def check_login_status_by_iframe(driver):
logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
while True:
try:
logger.debug("로그인된 상태 확인 중...")
# 로그인된 상태 확인
if driver.find_element(By.XPATH, logged_in_xpath):
user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
return True
except:
# 로그인되지 않은 상태 확인
try:
logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
time.sleep(5) # 5초 후 다시 체크
except:
logger.debug("로그인 상태를 확인할 수 없습니다. 잠시 후 다시 시도합니다.")
time.sleep(5) # 예외 발생 시 5초 대기 후 재시도
def check_login_status(driver):
not_logged_in_xpath = "//li[@id='J_SiteNavLogin']/div/div/a"
logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
while True:
try:
logger.debug("로그인된 상태 확인 중...")
# 로그인된 상태 확인
if driver.find_element(By.XPATH, logged_in_xpath):
user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
return True
except:
# 로그인되지 않은 상태 확인
try:
if driver.find_element(By.XPATH, not_logged_in_xpath):
logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
time.sleep(5) # 5초 후 다시 체크
except:
logger.debug("로그인 상태를 확인할 수 없습니다. 잠시 후 다시 시도합니다.")
time.sleep(5) # 예외 발생 시 5초 대기 후 재시도
# def check_login_status(driver):
# not_logged_in_xpath = "//li[@id='J_SiteNavLogin']/div/div/a"
# logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
# try:
# # 로그인된 상태 확인
# if WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, logged_in_xpath))):
# user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
# logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
# return True
# except TimeoutException:
# # 로그인되지 않은 상태 확인
# if WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, not_logged_in_xpath))):
# logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
# # 로그인 유도 로직 (예: 로그인 페이지로 이동)
# return False
# except Exception as e:
# logger.debug(f"로그인 상태 확인 중 예외 발생: {e}")
# return False