Gitub Actions로 로또 구매 자동화 (동행복권 사이트 리뉴얼)

w-beom·2026년 2월 3일

얼마전에 동행복권 사이트가 리뉴얼 되고나서 기존에 로또구매자동화를 해놨었던 코드가 정상적으로 작동하지 않고 있었다. 그렇다고 직접 나가서 또 사기에는 귀찮아서 미루고 미루다가 이제야 수정했다.

from playwright.sync_api import Playwright, sync_playwright
import time

# 동행복권 아이디와 패스워드를 설정
USER_ID = 'id'
USER_PW = 'password'

# 구매 개수를 설정
COUNT = 5

def run(playwright: Playwright) -> None:
    # 브라우저 실행
    browser = playwright.chromium.launch(headless=True)
    context = browser.new_context()
    page = context.new_page()

    # 로그인 페이지 이동
    page.goto("https://dhlottery.co.kr/login")

    # 로그인
    page.fill("#inpUserId", USER_ID)
    page.fill("#inpUserPswdEncn", USER_PW)
    with page.expect_navigation():
        page.click("#btnLogin")

    time.sleep(5)

    # 로또 구매 페이지 이동
    page.goto("https://ol.dhlottery.co.kr/olotto/game/game645.do")
    time.sleep(3)

    # "비정상적인 방법으로 접속하였습니다" 팝업이 있으면 닫기
    popup = page.locator("#popupLayerAlert")
    if popup.is_visible(timeout=3000):
        popup.get_by_role("button", name="확인").click()

    # 자동번호발급 클릭
    page.click("text=자동번호발급")
    time.sleep(1)

    # 구매할 개수 선택
    page.select_option("select", str(COUNT))
    time.sleep(1)

    # 확인 버튼 클릭
    page.click("#btnSelectNum")
    time.sleep(1)

    # 구매하기 버튼 클릭
    page.click("#btnBuy")
    time.sleep(1)

    # "구매하시겠습니까?" 팝업에서 확인 클릭
    page.click("input[onclick='javascript:closepopupLayerConfirm(true);']")
    time.sleep(3)

    # 구매 완료 후 닫기
    page.click("#closeLayer")

    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)
profile
습득한 지식과 경험을 나누며 다른 사람들과 문제를 함께 해결해 나가는 과정에서 서로가 성장할 수 있는 기회를 만들고자 노력합니다.

0개의 댓글