🔑 크롤링&스크래핑에서 쿠키를 사용하여 로그인 상태 유지하기

2025. 2. 17. 02:29·AlgoMate

웹 크롤링을 하다 보면 로그인 후 작업을 지속적으로 수행해야 하는 경우가 많다. 매번 로그인하는 번거로움을 피하고 로그인 상태를 유지하려면 쿠키를 사용하는 방법이 매우 유용합니다. 이번 포스팅에서는 Selenium을 활용해 로그인 후 쿠키를 저장하고, 이를 불러와 로그인 상태를 유지하는 방법을 소개하려고 한다.


1️⃣ Selenium을 활용한 로그인

웹사이트에 로그인하려면 Selenium을 사용해 로그인 폼에 사용자 정보를 입력하고 로그인 버튼을 클릭하는 작업을 자동화할 수 있습니다.

def login(driver):
    driver.get("https://www.aaa.com/login")

    username = os.getenv("USERNAME")  #.env파일에 저장해놓은 정보를 불러왔다.
    password = os.getenv("PASSWORD")  #.env파일에 저장해놓은 정보를 불러왔다.

    username_field = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.NAME, "login_user_id"))
    )
    username_field.send_keys(username)

    password_field = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.NAME, "login_password"))
    )
    password_field.send_keys(password)

    login_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "submit_button"))
    )
    login_button.click()

    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "username"))
    )

    save_cookies(driver)  # 로그인 후 쿠키 저장
    print("로그인 성공")

2️⃣ 쿠키 저장 및 불러오기

쿠키를 사용하여 로그인 상태를 유지하려면 로그인 후 쿠키를 저장하고, 이후 이를 불러와 사용할 수 있습니다.

✅ 쿠키 저장 함수

import pickle
def save_cookies(driver, filename="cookies.pkl"):
    with open(filename, "wb") as f:
        pickle.dump(driver.get_cookies(), f)

✅ 쿠키 불러오기 함수

import pickle
def load_cookies(driver, filename="cookies.pkl"):
    with open(filename, "rb") as f:
        cookies = pickle.load(f)
        for cookie in cookies:
            driver.add_cookie(cookie)

3️⃣ 쿠키로 로그인 상태 유지

쿠키를 저장한 후, 페이지를 새로고침하여 로그인된 상태인지 확인하는 방법입니다.

def login_using_cookies(driver):
    driver.get("https://www.acmicpc.net")
    load_cookies(driver)  # 쿠키 불러오기
    driver.get("https://www.acmicpc.net/login")  # 페이지 새로 고침
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "username"))
    )
    print("이미 로그인된 상태입니다.")
    return True

4️⃣ 요약: 왜 쿠키를 사용해야 할까?

🔑 장점

  • 효율성: 매번 로그인할 필요 없이 쿠키만 불러오면 되므로 작업을 더 빠르고 효율적으로 할 수 있습니다.
  • 자동화: 로그인 정보를 저장하여 매번 입력할 필요 없이 자동화된 작업을 실행할 수 있습니다.

🚀 언제 사용하면 좋을까?

  • 반복적인 로그인 절차가 필요한 경우
  • 크롤링/스크래핑을 위한 로그인 상태 유지가 필요한 경우

'AlgoMate' 카테고리의 다른 글

Redis만으로도 비동기 처리는 가능하잖아‼️ 근데 왜 Celery+Redis를 사용해야 할까  (0) 2025.02.18
🚀 크롤링 서버 vs 메인 서버, 크롤링한 데이터를 어디서 저장해야 할까?  (0) 2025.02.17
Celery + Redis vs Celery + RabbitMQ: 어떤 선택이 더 나을까?  (0) 2025.02.17
🚀 동적으로 파일을 제공하는 방법  (2) 2025.02.16
Spring Boot 단위 테스트: @Mock 과 @InjectionMocks의 원리와 활용  (2) 2025.02.14
'AlgoMate' 카테고리의 다른 글
  • Redis만으로도 비동기 처리는 가능하잖아‼️ 근데 왜 Celery+Redis를 사용해야 할까
  • 🚀 크롤링 서버 vs 메인 서버, 크롤링한 데이터를 어디서 저장해야 할까?
  • Celery + Redis vs Celery + RabbitMQ: 어떤 선택이 더 나을까?
  • 🚀 동적으로 파일을 제공하는 방법
SungHoJung
SungHoJung
  • SungHoJung
    HOLOUD
    SungHoJung
  • 전체
    오늘
    어제
    • 분류 전체보기 (42)
      • AlgoMate (13)
      • TroubleShooting (0)
      • 여러가지 모음집 (4)
      • Infra (18)
  • 링크

    • github
  • 인기 글

  • 태그

    docker-compose
    recaptcha 우회
    크롤링
    celery+redis
    컨테이너 간 통신
    IAM
    메세지 브로커
    로컬 서버와 통신
    EC2
    Celery
    스왑 메모리 설정
    bypass recaptcha
    AWS
    host.docker.internal
    k8s
    ci-cd
    Kubernetes
    ECS
    redis
    크롤링한 데이터
  • hELLO· Designed By정상우.v4.10.3
SungHoJung
🔑 크롤링&스크래핑에서 쿠키를 사용하여 로그인 상태 유지하기
상단으로

티스토리툴바