본문 바로가기

만들기/크롤러

selenium으로 네이버 자동 로그인하기

 

네이버는 셀레니움으로 로그인을 시도하면 캡챠 페이지가 뜬다.

아래는 시도한 코드와 로그인이 막힌 모습.

from selenium import webdriver

driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com')
driver.find_element_by_name('id').send_keys('아이디')
driver.find_element_by_name('pw').send_keys('비밀번호')
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()

 

 

 

구글링을 해보니 클립보드를 이용해서 우회하는 법이 나왔다. 파이썬으로 클립보드를 이용하는 방법은 여기

필자가 작성한 전체 코드는 다음과 같다. 시간이 너무 빠르면 자동툴로 인식하는 경우가 있어 계속 sleep을 걸었다.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import pyperclip
import time


#클립보드에 input을 복사한 뒤
#해당 내용을 actionChain을 이용해 로그인 폼에 붙여넣기
def copy_input(xpath, input):
    pyperclip.copy(input)
    driver.find_element_by_xpath(xpath).click()
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
    time.sleep(1)


id = '아이디'
pw = '비밀번호'

driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)

driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com')

copy_input('//*[@id="id"]', id)
time.sleep(1)
copy_input('//*[@id="pw"]', pw)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()

 

copy_input 함수를 만들어 미리 입력해둔 id와 pw를 로그인 폼에 붙여넣었다.

함수 동작방법은 다음과 같다.

key_down 메소드를 이용해 컨트롤키를 누르고, 그 상태에서 v를 입력시킨고 key_up 메소드를 이용, 컨트롤 키를 뗀다.

즉, 클립보드에 있는 내용을 Ctrl+V를 이용해 붙여넣은 뒤 perform으로 실행시키는 형식이다.

 

def copy_input(xpath, input):
    pyperclip.copy(input)
    driver.find_element_by_xpath(xpath).click()
    #클립보드 내용 붙여넣기
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
    time.sleep(1)
    
id = '아이디'
pw = '비밀번호'

copy_input('//*[@id="id"]', id)
copy_input('//*[@id="pw"]', pw)

 

잘 동작하는 걸 확인할 수 있다.

 

 

 

참고글

https://hyrama.com/?p=693