본문 바로가기

[Python]/[Python 프로젝트]

[Python 프로젝트] 라이엇 게임즈 자동 로그인 프로그램 - Selenium, Pyautogui, webdriver

728x90

프로젝트 설명

안녕하세요! 이제 대학생이 된.. 더이상 고등학생 개발자가 아닌 대학생 개발자가 된 주이어입니다. 이번에 만든 프로젝트는 python을 해보셨다면 누구나 알만한 모듈인 selenium을 사용해서 만든 프로젝트 입니다. 

바로 '라이엇 게임즈 자동 로그인 프로그램' 입니다!

이 프로그램을 만들게 된 이유는 라이엇 게임즈 사이트에 들어갈 때 마다 다시 로그인을 해줘야 하는게 불편해서 만들게 됐습니다.(자동 로그인을 해도 왠지 모르게 들어갈때 마다 다시 로그인을 해야 하는 경우가 많았음..) 또 2차 인증까지 해놔서 메일 켜서 번호 보고 입력하는게 그렇게 귀찮을 수 없습니다. 

 

코드상세 설명

모듈 import

1
2
3
4
5
6
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pyperclip
import pyautogui
cs

프로그램을 제작하는데 필요한 모듈들을 다운받는 코드입니다.
가장 중심이 되는 selenium모듈과 그 외에 부분 부분 사용되는 모듈들 입니다.

 

Pyautogui를 이용한 라이엇 게임즈 로그인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pyautogui.click(14311417)
time.sleep(1)
pyautogui.click(1113768)
time.sleep(1)
pyautogui.write('https://www.riotgames.com/ko')
time.sleep(1)
pyautogui.press('enter')
time.sleep(2)
pyautogui.click(2461119)
time.sleep(2)
pyautogui.click(1108603)
time.sleep(1)
pyautogui.typewrite('라이엇 아이디', interval=0.1)
time.sleep(1)
pyautogui.press('tab')
time.sleep(1)
pyautogui.typewrite('라이엇 비밀번호', interval=0.1)
time.sleep(1)
pyautogui.press('enter')
cs

Pyautogui를 이용하여 라이엇 게임즈를 로그인 하는 코드입니다.

selenium이 아닌 Pyautogui를 이용해서 만든 이유는 처음에 selenium으로 로그인을 시도하니 webdriver을 사용한 자동화 프로그램으로 인식돼 로그인 오류가 계속 발생해서 pyautogui로 바꿔서 로그인을 해줬습니다.

 

selenium을 이용한 네이버 로그인 후 메일 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
url = 'https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/'
 
driver = webdriver.Chrome()
driver.get(url)
time.sleep(1.5)
 
ID = driver.find_element(By.XPATH, '//*[@id="id"]')
ID.click()
pyperclip.copy("네이버 아이디")
ID.send_keys(Keys.CONTROL, 'v')
time.sleep(0.5)
 
PW = driver.find_element(By.XPATH, '//*[@id="pw"]')
PW.click()
pyperclip.copy("네이버 비밀번호")
PW.send_keys(Keys.CONTROL, 'v')
time.sleep(0.5)
 
LOGIN_2 = driver.find_element(By.XPATH, '//*[@id="log.login"]/span')
LOGIN_2.click()
time.sleep(1)
 
driver.execute_script("window.open('https://mail.naver.com/v2/folders/0/all');")
driver.switch_to.window(driver.window_handles[-1])
time.sleep(1)
 
CODE = driver.find_element(By.XPATH, '//*[@id="mail_list_wrap"]/ul/li[1]/div/div[4]/div/a/span[2]')
code = CODE.text
print(code)
 
driver.quit()
cs

selenium을 이용하여 네이버 로그인 후 메일 확인 후 2차 인증 번호까지 가져오는 코드입니다.

XPATH를 이용한 요소 찾기를 진행했구요. 그리고 id와 pw를 입력하는 방법은 selenium모듈이 아닌 pyperclip 모듈을 이용하여 복사 붙여넣기를 하는 방식으로 입력해 주었습니다.

이렇게 해준 이유는 selenium으로 바로 입력해줄 경우, 네이버에서 봇으로 인식해서 로그인이 안되는 경우가 가끔 있기 때문입니다. 

 

Pyautogui를 이용한 2차 인증 코드 입력

1
2
3
pyautogui.typewrite(code[8:], interval=0.1)
time.sleep(0.5)
pyautogui.press('enter')
cs

selenium을 이용해 가져온 2차 인증 코드를 Pyautogui를 사용해 입력해주는 코드입니다.

Pyautogui를 사용하여 만든 창과 selenium을 사용해서 만든 창이 다르기 때문에, 라이엇 게임즈 로그인을 할 때 사용한 Pyautogui를 사용하여 2차 인증을 진행해 주었습니다. 

 

후기

이 프로젝트를 만들기 위해서 처음으로 selenium에 대해서 배우게 됐는데 확실히 새로운 모듈을 배우는 것은 어렵지만, 배울 때 마다 '아니 이런 것도 만들 수 있다고?' 라는 재미가 있어 계속 새로운 모듈을 배우게 되는 것 같습니다.

 

Pyautogui와 selenium을 동시에 사용해보니 확실히 selenium이 자동화 프로그램을 만들기에는 최적화 되어있는 것 같다는 생각이 들었습니다. 물론 Pyautogui로도 충분히 좋은 자동화 프로그램을 만들 순 있지만요.

 

다음에는 이번에 배운 selenium을 활용하여 심화 프로젝트를 진행하고 싶다는 생각이 들었습니다.

오늘도 방문해주셔서 감사합니다.


728x90