2. 해외선물/2-4. 해외선물 API (사용)

(키움증권 해외선물 OpenAPI-W) 로그인 설정하기 (2) pyautogui 모듈

봄이오네 2023. 1. 4. 08:05
반응형
목 차
1. 들어가며
2. 사전설명
1) pyautogui 모듈의 기능 및 활용방법
2) pyautogui 활용형태
3. 코드 설명
1) 비밀번호 칸의 좌표 찾기 (pyautogui.position)
① 화면 해상도 확인
② 비밀번호 좌표 확인하기
2) 좌표로 이동 (pyautogui.moveTo)
3) 좌표 내용 활성화 (pyautogui.press)
① 비밀번호 칸 활성화 시키기
② 관리자권한 필요
③ 파이참의 관리자권한 실행 방법
4) 좌표에 내용 입력 (pyautogui.write)
5) 로그인 버튼 누르기 (pyautogui.click)
4. 코드 현황
5. 마치며

1. 들어가며

지난 글에서는 OpenAPI-W를 이용하여 키움서버에 접속하는 함수를 알아보았다.
키움 레지스트리에 접속하여,
키움측에서 제공하는CommConnect 및 OnEventConnect의 함수의
개발가이드 내용을 확인하였다.

아래에서 설명하겠지만,
국내주식의 OpenAPI처럼 자동로그인은 되지 않는다.
키움 측에서 보안상의 사유로 막아 놓았다. ㅠㅠ

이번 글에서는
키움증권에서 제공하는 CommConnect 함수로 실행하면
화면에 띄워지는 로그인 윈도우(창)에
파이썬 외장모듈인 pyautogui 모듈을 이용하여 비밀번호 입력하는 방법을 알아보자.


2. 사전설명

1) pyautogui 모듈의 기능 및 활용방법

모듈의 기능, 설치 및 활용방법을 알아보자.

  • 모듈 기능 : 파이썬에서 마우스와 키보드 제어를 위해 필요한 모듈
  • 모듈 설치 : 파이참 터미널 창에서, " pip install pyautogui " 를 입력
  • 활용 방법 : import pyautogui 로 파이참에서 활용한다.
  • 활용 형태 : 마우스의 현재위치, 이동, 클릭, 드래그키보드의 내용 입력

2) pyautogui 활용형태

위에서 설명한 pyautogui 활용형태 중
마우스 현재위치, 이동, 클릭 및 내용입력의 4가지를 설명한다.

CommConnect 함수 실행으로 < 그림1 >의 로그인 윈도우(창)이 화면에 뜨면,

  • 비밀번호 칸으로 이동하여 (moveTo)
  • 비밀번호 칸(②)을 활성화 시키고 (click)
  • 비밀번호를 입력하고 (write)
  • 로그인(③) 버튼을 누른다. (press)

그림1. 로그인 윈도우(창) 화면

3. 코드 설명

"비밀번호"에 입력하고 로그인하는 화면은 < 그림1 >과 같다.

사용자마다 모니터 크기 및 윈도우 디스플레이 해상도가 다르다.
좌표를 찾을 때는 모니터 크기 및 해상도의 고려할 필요가 있다.
(로그인 위도우 창이 뜨는 좌표가 각각 다를 수 있다)

비밀번호 칸의 좌표를 찾아서 그 칸으로 이동하고,
로그인 버튼을 클릭하는 프로세스이다.
(OpenAPI-W를 활성화하기 위해 필요한 내용만 설명한다)

1) 비밀번호 칸의 좌표 찾기 (pyautogui.position)

마우스 현재 위치 찾기 기능을 활용하여,
비밀번호 칸의 좌표를 찾을 수 있다.

① 화면 해상도 확인
(경로) 바탕화면에서 오른쪽 마우스 클릭 → 디스플레이 설정(D) → 디스플레이 해상도

그림2-1. 디스플레이 해상도

사용자별로 24인치, 27인치 등 각각 모니터 크기가 다르고 화면 해상도도 다르다.

중요한건, CommConnect 함수 실행으로 화면에 나타난
"로그인 윈도우(창)"이 뜨는 비밀번호 좌표확인할 필요가 있다.
결론은 화면해상도는 굳이 바꿀 필요는 없다.

비밀번호 좌표 확인하기
< 그림2-2 >의 마우스를 비밀번호 칸에 넣어두고 파이참을 실행하면,
pyautogui.posiotion() 함수를 실행(②)하면,
현재 마우스 좌표는 x = 968, y = 499로 출력된다.

참고로, 필자는 x = 1010, y = 485를 활용한다.

그림2-2. 비밀번호 좌표 확인하는 방법

2) 좌표로 이동 (pyautogui.moveTo)

좌표는 필자가 설정한 좌표(x = 1010, y = 485)를 활용하여 설명할 예정이다.

pyautogui 모듈을 활용하여 마우스를 이동하려면,
moveTo 함수 안에 x, y 좌표를 넣어주면 된다.

아래 링크는 "로그인 창"의 비밀번호 칸으로 이동한다.

pyautogui.moveTo(1010, 485)


3) 좌표 내용 활성화 (pyautogui.click)
① 비밀번호 칸 활성화 시키기
비밀번호를 넣어주기 위해서는,
좌표로 마우스를 이동(x = 1010, y = 485)시킨 후,
클릭하여 "비밀번호 칸"을 활성화 시킨다.

pyautogui.click()     # 실행 안될 때는 파이참을 "관리자 권한 실행"으로 실행


② 관리자권한 필요
여기서 주의할 점은, 파이참을 관리자 권한으로 실행시켜주어야 한다.
< 그림2-3 >에서 확인하였듯이,
키움증권에서 제공하는 프로그램은 관리자권한으로 실행된다.

그림2-3. 관리자권한으로 실행되는 키움증권 프로그램


< 그림2-4 >은 바탕화면에 나타는 프로그램의 관리자권한이 획득된 표시이다.

그림2-4. 관리자 권한 표시


파이참은 "일반권한"으로 실행되고, OpenAPI-W는 "관리자권한"으로 실행되면,
파이참(일반권한)이 OpenAPI-W(관리자권한)의 로그인창을 제어할 수 없다.
→ 파이참을 "일반권한"이 아닌, "관리자권한"으로 실행시켜 줄 필요가 있다.

③ 파이참의 관리자권한 실행 방법
바탕화면의 "파이참 바로가기" 아이콘 위에서 오른쪽 마우스를 누르면, 속성(R)이 뜬다.

  • (경로) 파이참 아이콘 우클릭 > 속성(R) > 호환성 > 모든 사용자에 대한 설정 변경 > 관리자 권한으로 이 프로그림 실행

그림2-5. 속성(R)에서 관리자권한 얻는 경로

< 그림2-6 >처럼 파이참은 관리자권한을 부여받았다.

그림2-6. 파이참 관리자권한 획득

4) 좌표에 내용 입력 (pyautogui.write)

좌표에 아이디의 비밀번호를 입력한다.
pyautogui.write("abcd1234", interval=0.1)로 작성한다.

아이디의 비밀번호가 abcd1234의 8자리라면,
비밀번호는 위와 같이 코드를 작성한다
시간간격(interval)은 0.1초로 기록한다.

* 아이디의 비밀번호는 키움증권 홈페이지에 접속할 때, 입력하는 비밀번호이다.

pyautogui.write("abcd1234", interval=0.1)

5) 로그인 버튼 누르기  (pyautogui.press)

모의투자이므로, 인증서 비밀번호 입력은 필요없다.
필요한 것은 아이디의 비밀번호이다.

비밀번호를 입력해 주고, 엔터(enter)를 누르면(press)
OpenAPI-W에 로그인된다.
즉, 별도로 "로그인 버튼" 좌표로 이동할 필요없이
"아이디의 비밀번호"를 입력 후 엔터를 누르는 형태이다.

pyautogui.press('enter')


※ 참고로 키보드의 "탭"을 누르는 명령어는 pyautogui.press('tab')이다.


4. 코드 현황

import pyautogui

print("Current Mouse Position :", pyautogui.position())

pyautogui.moveTo(1010, 485)  # 비밀번호 좌표 : Point(x=1010, y=485)
pyautogui.click()     # 실행 안될 때는 파이참을 "관리자 권한 실행"으로 실행
time.sleep(3)

pyautogui.write(self.password, interval=0.1)
# time.sleep(3)

# pyautogui.write(self.cetification_password, interval=0.1)  # 인증서 비번

pyautogui.press('enter')

5. 마치며

OpenAPI-W의 로그인 창에서 자동로그인하는 방법을 알아보았다.
pyautogui에서 쓰이는 명령어는 아래의 4가지이다.

  • pyautogui.moveTo : 마우스 이동
  • pyautogui.click : 마우스 클릭
  • pyautogui.write : 키보드 내용 입력
  • pyautogui.press : 키보드 누르기

국내주식 OpenAPI가 자동로그인되어, 별도 고민할 필요는 없었다.
해외선물 OpenAPI-W는 자동로그인이 되지 않아,
어쩔 수 없이 pyautogui를 이용하여 로그인 창에서 비밀번호를 입력하였다.

CommConnect 를 최초로 실행하면,
아이디를 입력하고, 아이디 저장, 모의투자에 체크해 주어야 한다.

다음 글에서는 "계좌비밀번호" 창을 띄우는 방법을 알아보자.

반응형