본문 바로가기
투자방법 외 주제

하루 1분! 원클릭으로 로또 자동 구매 시스템 완성하기

by Rich Spy 2024. 1. 8.

카카오톡 오픈챗 : https://open.kakao.com/o/gMm5Vq2f

 

로또 구매는 많은 분들에게 소중한 일상의 즐거움 중 하나입니다. 그럼에도 매번 구매하는 번거로움이 부담스러우시다면, 오늘 제가 소개할 '하루 1분 원클릭 로또 자동 구매 시스템'이 그 해답이 될 수 있습니다.

 

파이썬이라는 프로그래밍 언어를 기반으로 간단하게 매일 로또를 자동으로 구매하는 방법을 안내해 드릴 예정인데요, 프로그래밍 경험이 없으신 분들도 걱정하지 않으셔도 됩니다. 당장 시작할 수 있도록 모든 필요한 코드를 제공해 드릴 것이고, 어렵게 느껴질 수 있는 부분들을 쉽게 풀어 설명할 예정입니다.

 

특히, 파이썬에 익숙하지 않은 분들을 위해 제가 직접 개발한 프로그램을 통해, 복잡한 코딩 지식 없이도 한 번의 클릭으로 로또 구매가 가능하도록 지원합니다. 이 프로그램은 바쁜 일상 속에서도 로또 구매를 빼먹지 않게 도와주는 훌륭한 도우미가 될 것입니다.

 

이 포스팅에서 다룰 내용은 다음과 같습니다:

  1. 로또 온라인 구매 기본 안내사항
  2. 바로 사용할 수 있는 전체 파이썬 코드 제공
  3. 원클릭 자동 구매 프로그램: 복잡한 코딩 지식이 전혀 없이 자동실행
  4. 24시간 완전 자동화를 위한 아마존 AWS 무료 서버 활용법

로또 구매의 번거로움을 잊고, 매주 당첨의 기회를 놓치지 않고 싶으신가요? 그렇다면 이 포스팅이 여러분에게 도움이 될 것입니다. 함께 나만의 로또 비서를 만들어 보겠습니다.

 

1. 로또 온라인 구매 기본 안내사항

로또를 온라인으로 구매하기 위해서는 공식 동행복권 사이트(https://dhlottery.co.kr/)를 이용합니다. 주의해야 할 사항은 다음과 같습니다:

  • 구매 한도: 사용자는 주당 최대 5,000원까지만 로또 구매가 가능합니다. 이 규정은 법적인 규제에 따른 것으로, 개인의 소비를 적절하게 조절하기 위한 조치입니다.

 

2. 바로 사용할 수 있는 전체 파이썬 코드 제공

Selenium 등 필요한 패키지를 설치하신 후, 아래 더보기에 있는 파이썬 코드를 실행하시면, 자동으로 로또를 구매할 수 있습니다. 

더보기
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
from datetime import datetime
import telegram
import asyncio


## 사용자 정보입력 (본인의 정보 입력해야함)
# 동행복권 사이트 ID 입력
my_id = "test123"

# 동행복권 사이트 패스워드 입력
my_pw = "passward1234"

# 구매할 장수 입력 : 1~5 입력가능
buy_amount = "1"

# 텔레그램 ID 입력
chat_id = "7xxxxxxx"

# 텔레그램 채팅방 토큰 입력
TELEGRAM_TOKEN = "68xxxxxxxx:Axxxxxxxxxxxxxxxxxxxxxxx"

# 웹 페이지 조작 딜레이(초) : 느린 컴퓨터일수록 숫자 크게 설정. 최소값 1 (추천값 - 노트북 1, aws 2)
delay = "2"


# 텔레그램 메세지 함수
async def main(msg):
    try:        
        bot = telegram.Bot(token=TELEGRAM_TOKEN)
        async with bot:
            await bot.send_message(chat_id=chat_id, text=msg)
    except Exception as e:
        print(e)

def sendmsg(msg):
    try:
        asyncio.run(main(msg))
    except Exception as e:
        print(e)

# 셀레니움 드라이버 설치
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# 오늘 날짜 전송
dt = datetime.today().strftime('%Y-%m-%d')
print(f'{dt} 로또 오토봇 작동')
sendmsg(f'{dt} 로또 오토봇 작동')


# 페이지 열기
url = 'https://www.dhlottery.co.kr/user.do?method=login&returnUrl='
driver.get(url)
time.sleep(delay*2)


# 메인 창 핸들 저장(팝업 뜰 경우 닫아주기 위함)
main_window_handle = driver.current_window_handle


# 로그인
driver.find_element(By.XPATH, '//*[@id="userId"]').send_keys(my_id)
time.sleep(delay)
driver.find_element(By.XPATH, '//*[@id="article"]/div[2]/div/form/div/div[1]/fieldset/div[1]/input[2]').send_keys(my_pw)
time.sleep(delay)
driver.find_element(By.XPATH, '//*[@id="article"]/div[2]/div/form/div/div[1]/fieldset/div[1]/a').click()
time.sleep(delay*2)

# 팝업 닫기 위해서 모든 창 핸들 가져오기
handles = driver.window_handles

# 팝업 창으로 전환 및 닫기
for handle in handles:
    if handle != main_window_handle:
        driver.switch_to.window(handle)
        time.sleep(delay)
        driver.close()
        time.sleep(delay)

# 메인 창으로 다시 전환
driver.switch_to.window(main_window_handle)
time.sleep(delay)


# 당첨결과 수집
driver.get('https://www.dhlottery.co.kr/userSsl.do?method=myPage')
time.sleep(delay)
driver.find_element(By.XPATH, '//*[@id="article"]/div[2]/div/div[2]/div/a').click()
time.sleep(delay)
driver.find_element(By.XPATH, '//*[@id="frm"]/table/tbody/tr[3]/td/span[2]/a[2]').click()
time.sleep(delay)
driver.find_element(By.XPATH, '//*[@id="submit_btn"]').click()
time.sleep(delay)


# 당첨결과 수집 (iframe 접근)
iframe = driver.find_element(By.XPATH, '//*[@id="lottoBuyList"]')
driver.switch_to.frame(iframe)

tbl = driver.find_element(By.XPATH, '/html/body/table')

tbl_list = []

table_tr = tbl.find_elements(By.TAG_NAME, 'tr')
tbl_list.append([i.text for i in table_tr[0].find_elements(By.TAG_NAME, 'th')])

for a in range(1, len(table_tr)) :
    tbl_list.append([i.text for i in table_tr[a].find_elements(By.TAG_NAME, 'td')])

driver.switch_to.default_content()

# 추첨결과 발송 (일,월요일에만)
today = datetime.now().weekday()

if today == 6 or today == 0:  # 6 is Sunday, 0 is Monday
    result_list = [row for row in tbl_list if row[5] != '미추첨']
    msg = '\n'.join([f'{row[0]} {row[4]}장 {row[5]} {row[6]}원' for row in result_list])
    print(f'추첨결과\n{msg}')
    sendmsg(f'추첨결과\n{msg}')


# 미추첨 메세지 발송
pending_list = [row for row in tbl_list if row[5] == '미추첨']
msg = '\n'.join([f'{row[0]} {row[4]}장' for row in pending_list])
print(f'추첨대기 List\n{msg}')
sendmsg(f'추첨대기 List\n{msg}')


# 잔액조회
money = driver.find_element(By.XPATH, '/html/body/div[1]/header/div[2]/div[2]/form/div/ul[1]/li[2]/a[1]/strong').text
print(f'현재 잔액은 {money} 입니다.')
sendmsg(f'현재 잔액은 {money} 입니다.')


# 로또 구매하기
driver.get('https://el.dhlottery.co.kr/game/TotalGame.jsp?LottoId=LO40')
time.sleep(delay*2)

try:
    iframe = driver.find_element(By.XPATH, '//*[@id="ifrm_tab"]')
    driver.switch_to.frame(iframe)
    driver.find_element(By.XPATH, '//*[@id="checkNumGroup"]/div[1]/label/span').click() # 자동선택
    time.sleep(delay)
    driver.find_element(By.XPATH, f'//*[@id="amoundApply"]/option[{buy_amount}]').click() # 장수 선택
    time.sleep(delay)
    driver.find_element(By.XPATH, '//*[@id="btnSelectNum"]').click() # 확인 클릭
    time.sleep(delay)
    driver.find_element(By.XPATH, '//*[@id="btnBuy"]').click() # 구매하기 클릭
    time.sleep(delay)
    driver.find_element(By.XPATH, '//*[@id="popupLayerConfirm"]/div/div[2]/input[1]').click() # 팝업 확인
    time.sleep(delay)
    driver.find_element(By.XPATH, '//*[@id="closeLayer"]').click()
    time.sleep(delay)

    text = f'{buy_amount}장 구매 완료했습니다.'

except: 
    text = '이번주 구매한도 5000원을 모두 채웠습니다.'

print(text)
sendmsg(text)


# 남은 잔액 확인
driver.get('https://www.dhlottery.co.kr/common.do?method=main')
money2 = driver.find_element(By.XPATH, '/html/body/div[1]/header/div[2]/div[2]/form/div/ul[1]/li[2]/a[1]/strong').text

print(f'남은 잔액은 {money2} 입니다.')
sendmsg(f'남은 잔액은 {money2} 입니다.')

# 접속 종료
driver.quit()

 

3. 원클릭 자동 구매 프로그램: 복잡한 코딩 지식이 전혀 없이 자동실행

로또 자동구매 프로그램: https://www.dropbox.com/scl/fi/eik8aazlt3xnt06d6wk2w/auto_lotto.zip?rlkey=niff3hqxxh63jg2q05qfoufhp&dl=0

 

프로그래밍 경험이 없으신 분들을 위해 복잡한 과정 없이 위 코드를 클릭 한 번으로 실행할 수 있는 프로그램을 공개합니다.

 

또한, 100% 자동화를 위해 로또 구매 금액의 충전까지 자동으로 처리됩니다. 이 부분은 이미지 인식을 위한 AI 기술을 활용한 복잡한 코드를 포함하고 있어, 구체적인 코드 소개는 생략하겠습니다. 프로그램의 사용 방법을 안내드리겠습니다.

 

구매금액 충전방식 설정

케이뱅크 간편충전 기능을 이용해야 구매금액 충전을 자동으로 할 수 있습니다. 홈페이지에서 예치금 간편충전(케이뱅크) 등록을 해야 합니다.

동행복권 간편충전 케이뱅크 계좌 연결

 

프로그램 개인 설정

프로그램을 실행하기 전, config.yaml 파일을 메모장으로 열고 본인의 환경에 맞게 수정해주세요. 텔레그램을 이용해 구매내역을 내 폰으로 전송하기 위해서 텔레그램 정보를 입력해줍니다. 텔레그램 채팅방 토큰과 ID를 확인하는 방법은 여기를 참조해주세요.

개인설정 입력

 

프로그램 실행

개인 설정사항에 맞추어 로또 자동 구매가 이루어집니다.

프로그램 실행

 

(선택사항)스케줄러 설정

원활한 자동 구매를 위해 Windows 스케줄러를 활용하여 프로그램이 정해진 시간(예: 매주 월, 화, 수, 목, 금요일 오전 8시)에 자동으로 실행되도록 설정합니다. 설정 방법은 여기를 참고하시면 됩니다.

 

이제 클릭 한번으로 로또 구매금액 충전부터 구매까지 자동화 할 수 있습니다.

 

4. 24시간 완전 자동화를 위한 아마존 AWS 무료 서버 활용법

손 하나 대지 않고 로또 자동 구매를 100% 자동화하려면 컴퓨터가 항상 켜져 있어야 하는 단점이 있습니다. 그러나 컴퓨터를 24시간 켜두는 것은 에너지 낭비일 뿐만 아니라 비효율적일 수 있습니다. 이런 불편함을 해소할 수 있는 클라우드 기반의 솔루션을 소개합니다.

 

아마존의 AWS는 클라우드 서비스 중 하나로, 사용자가 서버를 무료로 이용할 수 있는 옵션을 제공합니다. 이 서비스를 활용해 24시간 구동되는 윈도우 서버를 생성할 수 있으며, 여기에 로또 자동 구매 프로그램을 설치하여 시스템 종료 없이 24시간 구동될 수 있도록 할 것입니다.

 

이 내용은 상세한 안내가 필요하기에 여기를 통해 자세히 안내드립니다.

 

 

 

문의사항 카카오톡 오픈챗 : https://open.kakao.com/o/gMm5Vq2f

댓글