python 공부/매크로 만들기

[파이썬 매크로 만들기] #03. PYAUTOGUI로 네이버 로그인 매크로 만들기

피치피치어피치♥ 2021. 8. 9. 19:55

<초보코딩님 유투브로 공부하며 정리하였습니다>

 

pyautogui 라이브러리 이용해서 매크로 만들기 

 

필요기능 

- 클릭 

- 아이디 / 비번 타이핑 

 

  1. 쥬피터 노트북에서 pyautogui 사용하기 위해 라이브러리 설치하기 
    • pip install xxx

 

[*]는 아직 실행중인 상태를 나타냄 

 

끝나면 숫자로 바뀜

 

 

  1. install 한 후에는 import 해주어야 함
    • install은 인터넷에서 이 라이브러리를 다운 받아서 내 컴퓨터에 깐다
    • import는 내 컴퓨터에 깔려있는 라이브러리를 이번에 내 코딩 코드로 들고와서 사용하겠다
      • install은 한번 깔고나면 매번 할 필요는 없고, 
        import는 소스파일을 만들 때마다 매번 import 해주어야 함
      • import xxx as yyy
        • 라이브러리 이름이 너무 길 경우에, 라이브러리의 별명을 지어줄 수 있음
        • import pyautogui as pag : pyautogui를 앞으로 pag로 사용하겠다
          pip install pyauto gui
          import pyautogui as pag
  2. pyautogui의 position 함수를 사용하여, 마우스 커서 위치 추출
  3. pyautogui의 click 함수를 사용하여, 로그인 버튼 클릭
  4. pyautogui의 typewrite를 사용하여, 아이디 / 비밀번호 입력 
    • pag.typewrite("abcde") 
    • enter나 tab, alt 같은 특수 키는 typewrite 대신 press를 통해 입력할 수 있음
      pyautogui.typewrite("studying python")
      pyautogui.press("enter")​
    • 아이디 입력 창 클릭된 상태에서 아이디 / 비번 입력  
  5. 그리고나서 final 로그인 버튼 눌러주면 됨

 

미리 준비해야 할 것

  1. naver 홈페이지에서의 로그인 버튼 위치
  2. id 입력하기 위해 click 할 id 위치 버튼 위치
  3. id / 비번 입력 후의 최종 로그인 버튼 위치
  4. 로그인 할 네이버 아이디 / 비번 

 

trouble shooting 

  1. 만약 네이버 홈페이지에서 로그인 버튼 위치 눌렀을 때에,
    미리 로그인 아이디가 저장되어 있어 미리 타이핑 되어 있을 경우에 

    A1. 그 아이디로 로그인 할 거면 -> 바로 로그인 버튼 클릭
    A2. 다른 아이디로 로그인하고 싶으면 : 기존 저장되어 있는 아이디 지워주어야 함

  2. capslock이 안 눌렸는데도 불구하고 아이디가 대문자로 입력되는 경우 

    A. 안 눌린 상태에서, 
    아이디 입력창 클릭 한 후 
    강제로 capslock을 한 번 누른 후, 또 눌러서 강제로 한번 껐다 켜주기


     제대로 입력된 상태 : 
  3. 키보드 입력이 너무 빨라서, 로봇인지 체크 당할 경우 
    A1. 중간에 delay 넣어주기 
    import time
    time.sleep(1) #sleep for 1 sec​

    A2. 타자치는 속도를 낮춰야 함 
    : pyautogui의 typewrite에서 interval 옵션을 넣어줄 수 있음 
    my_id = id123
    my_pw = pw321
    
    pag.typewrite(my_id, interval = 0.5) #type one character every 0.5sec​

    A3. 그럼에도 불구하고 안된다면?
    - 현재 네이버에서 직접 타이핑하는 경우가 아니면, 봇으로 인지해서 막혀있는 것 같다고
    초보코딩님께서 말씀주심! 
    네이버 말고 다른 사이트로 테스트하기 :D
    (참고로 카톡은 잘 됨)

 

#prepare
#0. import pyautogui, time
#1. get naver login button position to "login_btn"
#2. get id input position to "id_position"
#3. get final login button position to "final_login_btn"
#4. set naver_id and naver_pw

login_btn = (1094, 615)
id_position = (573, 476)
final_login_btn = (425, 626)

naver_id = "myid123"
naver_pw = "mypw321"

pag.click(login_btn) #click login button
time.sleep(1) #delay for 1 sec

pag.click(id_position) # click id position
time.sleep(1) #delay for 1 sec

i = 0
while i < 20:
    pag.press("backspace", interval = 1)
    i = i + 1

pag.press("capslock", interval = 0.5)
pag.press("capslock", interval = 0.5)
time.sleep(1) #delay for 1 sec

pag.typewrite(naver_id, interval = 0.5)
time.sleep(1) #delay for 1 sec

pag.press("tab")
time.sleep(1) #delay for 1 sec

pag.typewrite(naver_pw, interval = 0.5)
time.sleep(1) #delay for 1 sec

pag.click(final_login_btn)