-
[python][대신증권] cybos 자동로그인IT/python 2022. 1. 4. 15:37
대신증권 api를 이용하여 로그인 하는 방법은 키움증권과는 다른 점이 많았다.
키움증권의 경우 별도의 로그인 툴을 제공해주기 때문에 로그인 자체에 대해 신경 쓸게 없다.
또한 해당 api가 연동된 프로그램이 종료되면 자동으로 로그아웃이 되기 때문에 추후에 로그인을 할 경우
기존의 로그인 상태와 충돌될 일이 없었다. (중복 로그인의 경우 알아서 체크해주고 에러창까지 띄워준다.)
하지만 대신증권의 경우 별도로 제공되는 로그인 툴이 없기 때문에 코드 상에서 id와 pwd를 입력하여 로그인 해야한다.
때문에 보안에 취약할 수 있다는 단점이 있다.
# 필요 라이브러리
########################################################################################
python 3.7 version (32bit)
win32com.client (pip install pywin32==301)
Name: pywin32
Version: 301
Summary: Python for Window Extensions
Home-page: https://github.com/mhammond/pywin32
Author: Mark Hammond (et al)
Author-email: mhammond@skippinet.com.au
License: PSF
Location: c:\programdata\anaconda3\envs\py37_32bit\lib\site-packages
Requires:
Required-by: web3, pywinauto, jupyter-corepywinauto (pip install pywinauto==0.6.8)
Name: pywinauto
Version: 0.6.8
Summary: A set of Python modules to automate the Microsoft Windows GUI
Home-page: http://pywinauto.github.io/
Author: Mark Mc Mahon and Contributors
Author-email: pywinauto-users@lists.sourceforge.net
License: BSD 3-clause
Location: c:\programdata\anaconda3\envs\py37_32bit\lib\site-packages
Requires: comtypes, pywin32, six
Required-by: hwpconv###################################################################################
# 코드
###################################################################################
import os import win32com.client from pywinauto import application import time def connect(reconnect=True): # 재연결이라면 기존 연결을 강제로 kill if reconnect: try: os.system('taskkill /IM ncStarter* /F /T') os.system('taskkill /IM CpStart* /F /T') os.system('taskkill /IM DibServer* /F /T') os.system('wmic process where "name like \'%ncStarter%\'" call terminate') os.system('wmic process where "name like \'%CpStart%\'" call terminate') os.system('wmic process where "name like \'%DibServer%\'" call terminate') except: pass CpCybos = win32com.client.Dispatch("CpUtil.CpCybos") if CpCybos.IsConnect: print('already connected.') else: app = application.Application() app.start( 'C:\Daishin\Starter\\ncStarter.exe /prj:cp /id:{id} /pwd:{pwd} /pwdcert:{pwdcert} /autostart'.format( id='아이디', pwd='패스워드', pwdcert='공인인증서패스워드') ) # 연결 될때까지 무한루프 while True: if CpCybos.IsConnect: break time.sleep(1) print('connected.') return CpCybos # 이미 연결되어있다면 재연결 x CpCybos = connect(False)###################################################################################
# 실행화면
###################################################################################
다음과 같은 공지사항이 뜨면 로그인이 되었다고 보면 된다.


숨겨진 아이콘에서 [DibServer]를 클릭했을 때 다음과 같이 연결중 으로 되어있으면 끝.

###################################################################################
'IT > python' 카테고리의 다른 글
[python][대신증권] cybos 현재 모든 종목 데이터 받기 (0) 2022.01.04 [python][대신증권] cybos 2년 분봉데이터 받기 (0) 2022.01.04 [python] try-except 이용 시 에러 메세지 및 에러가 발생된 라인 넘버 알아내기 (0) 2022.01.04 [python] mysql 이용하기 (0) 2021.12.12 [python] trading view webhook 수신하기 (0) 2021.12.12