본문 바로가기
VBA/엑사남_심화방

[심화방] VBA_심화_100제 #13 [ 셀레니움 네이버 로그인]

by 일등미노왕국 2023. 3. 20.

파이썬으로 네이버 자동 로그인을 하는 코드를 작성한 적은 있는데, 막상 VBA로는 한적이 없어서 남긴다.

 

실제 사용시에는 본인의 아이디와 패스워드를 입력하여 사용하길 바란다.

 

아직 익숙하지 않아서 그런지 Selenium.Keys 로는 원할하게 구현하지 못해

 

Shell을 통해서 구현하였다.

 

Dim shell: Set shell = CreateObject("WScript.Shell")

네이버는 SendKeys를 통한 키 전달 방식의 로그인은 봇으로 감지하여 캡챠를 발생하기 때문에 다른 방법으로 로그인을 하여야 한다.

 

바로 복사 붙혀넣기 인데 파이썬으로 할때는 Selenium.Keys 로 특수키를 전달하여 키보드를 입력과 같은 방식으로 우회할 수 있는데 VBA에서는 그게 되지 않는다. 

 

몇번 다른 사이트에서 한번 테스트해봐야겠다..

 

그래서 그대안으로 사용한것이 Shell이다.

 

Shell은 윈도우를 조작할 때 사용하기도 하는데, 오늘 여기에서 키보는 입력을 하는 대안으로 사용하였다.

 

shell.SendKeys "^v"

 

일단 아직까진 본인한테는 크게 와 닿지 않은 코드이지만 누군가에겐 도움이 될 듯 하여 올린다.

더보기
Option Explicit
Dim Sel As New Selenium.ChromeDriver
Sub Haja_Guid()
    
    Dim guid
    Dim Str
    guid = Array("{0277FC34-FD1B-4616-BB19-A9AABCAF2A70}", _
                 "{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}", _
                 "{662901FC-6951-4854-9EB2-D9A2570F2B2E}", _
                 "{F5078F18-C551-11D3-89B9-0000F81FE221}")

    
    On Error Resume Next
    For Each Str In guid
        ThisWorkbook.VBProject.References.AddFromGuid Str, 0, 0 '= 가장 최신버전
    Next Str

    Call naver_login

End Sub

Sub naver_login()

     Dim strUrl$
     Dim shell: Set shell = CreateObject("WScript.Shell")               '= 셀 선언
    
     strUrl = "https://www.naver.com"

   ' Sel.AddArgument "--headless"                                        '= 헤드리스모드
     Sel.Start "chrome"                                                  '= 크롬으로 진행
     Sel.Get strUrl                                                      '= Url 이동
     Sel.Window.Maximize                                                 '= 창 크기 최대화
   
     Sel.FindElementByCss("a[data-clk='log_off.login']").Click           '= 로그인 버튼 클릭
     Application.Wait (Now + TimeValue("00:00:01"))                      '= 1초 지연
    
     [e1].Copy                                                           '= ID 복사
     Application.Wait (Now + TimeValue("00:00:01"))
     shell.SendKeys "^v"                                                 '= ID 붙혀넣기
   
     Application.Wait (Now + TimeValue("00:00:01"))

     shell.SendKeys "{TAB}"                                              '= 패스워드로 이동
   
     [e2].Copy                                                           '= 패스워드 복사
     Application.Wait (Now + TimeValue("00:00:01"))
     shell.SendKeys "^v"                                                 '= 패스워드 붙혀넣기
     Application.Wait (Now + TimeValue("00:00:01"))
    
     Sel.FindElementByCss(".btn_login").Submit                           '= 로그인 버튼 클릭
     
     Sel.ExecuteScript "alert('네이버 로그인을 완료했습니다.')"
    
End Sub

심화방13.xlsm
0.02MB

댓글