본문 바로가기
Information

파이썬 셀레니움 네이버 로그인 자동입력 방지문자 뚫기

by 정티그로 2021. 7. 25.

목차

    파이썬 셀레니움(selenium)을 이용해 네이버 로그인을 자동으로 해보겠다. 셀레니움과 크롬 드라이버가 필요하며, 준비가 되지 않은 분은 이전 글을 참고하길 바란다.

     

     

    파이썬 셀레니움(selenium) 크롬 드라이버 설치

    파이썬 셀레니움을 이용하면, 웹에서 동작하는 매크로를 만들 수 있습니다. 예를 들면, 네이버 카페 글쓰기를 자동으로 하는 프로그램을 만들어볼 수 있겠죠. 네이버 블로그 포스팅을 자동으로

    kissi-pro.tistory.com

     

      파이썬 셀레니움 네이버 로그인 코드

     

    from selenium import webdriver
    import time
    
    naver_url = 'http://naver.com'
    browser = webdriver.Chrome('크롬드라이버 경로')
    time.sleep(1)
    browser.get(naver_url)
    time.sleep(1)
    
    #로그인 클릭
    browser.find_element_by_xpath('//*[@id="account"]/a').click()
    time.sleep(1)
    
    #아이디 입력
    browser.find_element_by_xpath('//*[@id="id"]').send_keys('아이디')
    time.sleep(1)
    
    #비밀번호 입력
    browser.find_element_by_xpath('//*[@id="pw"]').send_keys('비밀번호')
    time.sleep(1)
    
    #로그인 버튼 클릭
    browser.find_element_by_xpath('//*[@id="log.login"]').click()
    time.sleep(1)

     

    browser.get('URL')은 해당 URL로 이동하는 코드이다. URL은 네이버 주소이므로 코드가 실행되면, 네이버로 이동한다. 

     

     

    개발자 도구를 이용해 네이버 로그인 버튼의 Xpath를 알아내야 한다. 

     

     

    '우클릭 - Copy - Copy XPath'를 이용하면, 손쉽게 해당 XPath가 무엇인지 알 수 있다. 

     

    browser.find_element_by_xpath('//*[@id="account"]/a').click()

     

    browser.find_element_by_xpath('XPath').click() 은 해당 XPath를 찾고, 클릭하라는 코드이다. 

     

     

    위 코드까지 실행되면, 로그인 페이지까지 이동하는 모습을 볼 수 있다. 똑같은 방법으로 아이디, 비밀번호의 XPath를 찾고, send_keys('값')을 이용해 아이디와 비밀번호를 전달하면 된다. 전달 후 로그인 버튼을 누르면, 네이버 로그인에 성공할 수 있다. 

    그러나, 실제로 해보면, 다음과 같은 화면이 나온다.

    자동입력 방지문자가 나오고, 이것으로 인해 자동 로그인은 실패로 끝이 난다. 


      자동입력 방지문자 어떻게 하면 뚫을 수 있을까?

     

    인터넷 검색을 통해 찾아본 결과 (1) 사람이 직접 입력한 것처럼 아이디와 비밀번호를 전달하는 방법과 (2) 크롬 디버깅 모드로 접근하는 방법이 있다. 

     

    (1) 방법은 '복사-붙여넣기'방식으로 'pyperclip' 라이브러리를 활용해 뚫는 방식이다. 

     

    (2) 방법은 '로그인 상태 유지'를 이용해 애초부터 로그인이 되어 있는 크롬 브라우저에서 작업하는 방식이다. 

     

    두 개의 방법 중 편한 것으로 택해 자동입력 방지 문자를 뚫으면 된다. 

     

    이번 시간에는 2번 방법을 이용해볼 예정이다. 자동 로그인 상태로 유지할 경우, 인터넷 기록, 쿠키 삭제를 하지 않는 이상 또다시 로그인할 필요가 없다. 훨씬 편하다고 볼 수 있으며, 글쓴이는 방법을 자주 애용한다.


      크롬 디버깅 모드로 셀레니움 실행하는 방법

     

    1. 크롬 설치 위치를 찾는다. (ex : C:\Program Files\Google\Chrome\Application)

    Program Files (x86)에 설치되는 경우도 있으니, 위치를 잘 파악해야 한다.

     

    2. CMD 창을 띄운 후 크롬이 설치 위치로 이동한다.

     

    3. 아래 명령어를 입력한다. "새로운 크롬 정보가 저장될 위치"는 어떤 곳이든 상관없다.

     

    chrome.exe --remote-debugging-port=9222 --user-data-dir="새로운 크롬 정보가 저장될 위치"

     

    4. 위 코드를 실행하면, 아무것도 로그인 되어 있지 않은 '새로운 크롬'이 실행될 것이다.

     

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import time
    
    naver_url = 'http://naver.com'
    
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    chrome_driver = "크롬드라이버 경로" # Your Chrome Driver path
    browser = webdriver.Chrome(chrome_driver, options=chrome_options)
    
    browser.get(naver_url)

     

    이제 위와 같이 코드를 작성 한 후 실행해보면, 새로운 크롬이 동작할 것이다. '자동화된 테스트 소프트웨어에 의해 제어되고 있습니다.'라는 문구 역시 안 보일 것이다. 

     

    '로그인 상태 유지'를 체크한 후 로그인을 하면, 로그인 상태의 크롬 브라우저를 셀레니움을 통해 제어할 수 있다. 

     

    이 방법을 이용해 네이버블로그에 쿠팡파트너스 자동 포스팅 작업을 진행했다. 캡차를 뚫었다고 표현하기는 애매하지만, 로그인한 상태의 브라우저를 제어하기 원하는 분에게는 이 방법도 괜찮다고 생각한다.