[CasperJS] 자바스크립트 CasperJs 로그인 구현하기



#. Introduction


자바스크립트 외부모듈인 CasperJS를 통해 웹사이트에 로그인하는 방법을 알아보도록 하겠습니다. 이번 예제에서는 네이버에 로그인해보는 것을 알아보도록 하겠습니다. CasperJS 가 무엇인지 궁금하신 분들은 [Javascript WebPage Parsing] 자바스크립트 웹페이지 파싱 - CasperJs 포스트를 참고 해 주세요.



#. Description


들어가기에 앞서, 로그인 폼이 있는 URL 주소가 반드시 필요합니다. 그 안에 있는 폼을 파싱할 것이기 때문입니다. 네이버의 경우 https://nid.naver.com/nidlogin.login 이 주소가 네이버에서 로그인을 할 수 있는 폼이 있는 곳의 주소입니다. 우리는 여기서 폼의 정보를 우선 분석해야 합니다.



일반적으로 네이버에 로그인하는 방법은, 아이디와 패스워드를 입력하고 '로그인' 버튼을 누르는 것으로 이루어 질 수 있습니다. 그렇다면 우리에게 필요한 것은 무엇일까요? 바로 폼의 아이디(ID),  유저 아이디, 비밀번호의 에디트 박스의 이름(Name)입니다. 



크롬의 개발자도구에 의하면 폼의 아이디는 'frmNIDLogin' 이며, 아이디의 이름은 'id' 이고, 비밀번호의 이름은 'pw' 임을 알 수 있습니다. 이제 우리는 CasperJS 를 통해 로그인을 할 준비가 끝났습니다.



#. Code



#. Naver_Login.js


로그인을 할 수 있는 간단은 클래스를 소개하도록 하겠습니다. Naver_Login 클래스는 네이버 아이디와 패스워드를 생성자로 받으며, login 메서드는 받은 정보를 기반으로 네이버에 로그인을 시도합니다. 여기서 핵심함수는 폼에 데이터를 채워주는 CasperJS 함수인 casper.fill 함수입니다.


m_naverID : 네이버 아이디

m_naverPW : 네이버 비밀번호

m_Url : 네이버의 로그인 URL


function Naver_Login(naverID, naverPW) {

    this.m_naverID = naverID;
    this.m_naverPW = naverPW;

    this.m_Url = "https://nid.naver.com/nidlogin.login";
}

Naver_Login.prototype.login = function() {
    target = this;
    casper.then(function() {
        casper.fill('form#frmNIDLogin', {
            'id':    target.m_naverID,
            'pw':    target.m_naverPW,

        }, true);
    });
}


메서드를 호출할 때에는 보통 casper.start 함수, 아니면 로그인이 필요한 곳에서 이루어집니다. 로그인은 대부분 제일 처음하고 들어가는 경우가 대부분이기때문에 casper.start 함수에 호출을 해 보았습니다. 간단하게 Naver_Login 객체로 login 함수를 호출해주시면 됩니다.


var naver_login = new Naver_Login(casper.cli.args[0], casper.cli.args[1]);

casper.start(
    naver_login.m_Url, 
    function() {
        naver_login.login();
        this.echo('Naver Login... : '+naver_login.m_Url);
    }
);


* casper.cli.args[..] : CasperJS 를 CLI(Commend Line Interface) 에서 실행할 때 넣어주는 파라매터입니다. 

ex) casperjs naver_login.js NAVER_ID NAVER_PW



#. PostScript


CasperJS 다음 포스팅에서는 네이버 카페를 파싱 해보도록 하겠습니다. 해당 라이브러리는 유저가 직접 브라우저를 열어서 작업하는 효과가 있기 때문에, 로그인을 여러번 시도한다거나, 다수의 아이디로 로그인을 시도하는 경우 네이버의 운영정책에 따라 '블럭' 처리가 될 수 있으니 주의해주시기 바랍니다.


신고