※ 이 문서는 뭐 그냥 하면 되지. ()에서 인쇄하였으며,
저작권은 해당 블로그 운영자에게 있습니다.

자동로그인하는 방법 - IE 함수 이용

/Autoit/AutoIt :: 2011. 3. 23. 13:00

자동로그인하는 방법 - IE 함수 이용

이 글은 USBOFFICE AutoIt 질문 게시판 웹사이트 자동 로그인에 대한 답변입니다.

웹사이트에 자동 로그인하는 가장 쉬운 방법은 주소를 이용한 방법이죠.
https://nid.naver.com/nidlogin.login?id=아이디&password=비번 이런 형식으로 만든 주소를 주소창에 입력하면 로그인한 상태로 창이 열리게 됩니다.

AutoIt으로 자동 로그인을 하려면 _IE 함수를 이용하는데, HTML 관련 지식이 아주 조금 필요합니다. 정말 아주 조금이요. 로그인 입력창이 있는 폼(Form)을 가져오고 그 폼안에 있는 항목들에 아이디와 비밀번호를 입력해서 전송하는 방식을 사용하기 때문에 form과 input에 대해서 알아야 합니다 class와 name도 알면 더 좋고요.

_IE 함수가 아니라 http 프로토콜을 이용해서 직접 접속하는 방법도 있는데, 이 방법은 조금 어렵네요.

이 글에서는 _IE 함수를 이용해서 사이트에 자동 로그인하는 방법을 설명하겠습니다.

사이트 자동 로그인 예제 1 - 다음

다음에 자동 로그인해보죠. 다음의 메인페이지 소스에서 로그인 영역을 살펴볼까요. 아래처럼 Form과 Input에 name 속성이 있는 걸 확인할 수 있습니다. 이렇게 되어 있다면 자동 로그인 소스 만들기가 매우 쉽습니다. Form과 Element들을 바로 찾을 수 있으니까요. form의 name은 loginform이고, 아이디 입력 칸의 name은 id, 비밀번호 입력 칸의 name은 pw이네요.

자동로그인 - 다음의 로그인 폼 html 소스

_IEFormGetObjByName_IEFormElementGetObjByName 함수명을 보면 알 수 있듯이 각 오브젝트의 name 속성을 읽어서 폼과 엘리먼트를 찾을 수 있습니다. 이렇게 찾은 엘리먼트에 _IEFormElementSetValue로 특정한 값(아이디, 비밀번호)을 입력하면 됩니다.

_IE 함수를 이용해서 다음에 자동 로그인하는 과정입니다. 괄호 안의 숫자는 아래 소스에서 해당하는 줄의 번호입니다.

_IECreate로 Internet Explorer를 열어서 다음에 접속(4) - 로그인 폼의 name을 이용해서 form 찾기(5) - form 내부에서 name을 이용해 엘리먼트를 찾고(6, 8) 그 엘리먼트에 값을 입력(7, 9) - 로그인(10)

Global $oIE, $oForm, $oQuery
Global $sId = 'testid', $sPassword = 'testpassword'

$oIE = _IECreate("http://www.daum.net")
$oForm = _IEFormGetObjByName($oIE, "loginform")
$oQuery = _IEFormElementGetObjByName($oForm, "id")
_IEFormElementSetValue($oQuery, $sId)
$oQuery = _IEFormElementGetObjByName($oForm, "pw")
_IEFormElementSetValue($oQuery, $sPassword)
_IEFormSubmit($oForm)

form과 input에 name 속성이 있기 때문에 쉽게 할 수 있습니다. 생각보다 어렵지 않죠?

name이 없을 때 자동 로그인 - USBOFFICE

자동로그인 - USBOFFICE html 소스

위는 USBOFFICE의 로그인 영역의 html소스입니다. form에 name이 없죠. name이 없을 때는 이름 대신 첫째, 둘째, 셋째 이렇게 부르면 됩니다.

앞서 다음에서는 직접 name을 불러서 "loginform 가져와" 했다면 USBOFFICE에서는 "두 번째 폼 가져와" 이런 식이죠. 마찬가지로 "pw 엘리먼트 가져와" 대신 "두 번째 엘리먼트 가져와" 하는 겁니다.

_IEFormGetCollection_IEFormElementGetCollection을 이용하면 페이지에 있는 모든 폼과 그 폼에 있는 하위 엘리먼트들을 가져옵니다. 이때 우리가 필요한 폼이나 엘리먼트의 번호를 입력하면 그 번호에 해당하는 폼과 엘리먼트만 가져올 수 있습니다.

폼 번호는 0부터 시작한다는 점을 주의하세요.

USBOFFICE에는 폼이 2개 있습니다. 첫 번째는 검색을 위한 폼이고 두 번째가 로그인을 위한 폼이지요. 우리는 로그인 폼만 필요하니까 두 번째 폼만 가져와야겠지요. 그래서 _IEFormGetCollection($oIE, 1) 라고 써야합니다.

순서는 다음에서 자동 로그인하는 방법과 같습니다. 단지 name 대신 첫째, 둘째, 셋째를 입력한다는 차이뿐이지요. 엘리먼트를 불러올때도 name대신 번호를 이용했습니다.

Global $oIE, $oForm, $oQuery
Global $sId = 'testid', $sPassword = 'testpassword'

$oIE = _IECreate("http://usboffice.kr")
$oForm= _IEFormGetCollection($oIE, 1)
$oQuery = _IEFormElementGetCollection($oForm, 0)
_IEFormElementSetValue($oQuery, $sId)
$oQuery = _IEFormElementGetCollection($oForm, 1)
_IEFormElementSetValue($oQuery, $sPassword)
_IEFormSubmit($oForm)

때로는 _IEFormSubmit가 안되는 때도 있는데 이때는 _IEAction으로 로그인 버튼을 클릭하면 됩니다.

자동로그인은 폼을 활용하는 방법의 하나일 뿐입니다. 저는 같은 방법으로 온라인 맞춤법 검사 사이트 활용 프로그램을 만들어서 사용하고 있고요. 해서는 안 되겠지만 방명록에 스팸 댓글을 남기는 프로그램을 만들 수도 있습니다. 폼을 활용하는 방법 더 나아가서는 IE를 제어하는 방법까지 익혀보세요.

블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. =>  자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프
굿네이버스 배너
사랑의 열매 배너
아름다운 재단 배너 어린이 재단 배너 유니세프 한국위원회 - 배너