본문 바로가기

카테고리 없음

파이썬 Selenium 네이버 로그인 자동입력 방지(캡차) 피하기

파이썬에서 셀레니움 라이브러리를 이용하면 손쉽게 로그인이 필요한 웹사이트도 접근할 수 있습니다. 다만 종종 문제가 되는 것이 캡차(captcha)에 걸리는 경우입니다.

 

오랜만에 네이버를 selenium을 통해서 들어가려고 했더니 로그인 자동 입력 방지에 걸렸습니다. 방법을 찾아보니 생각보다 간단하게 해결할 수 있었습니다.

 

로그인 자동 입력 방지에 걸리는 방법 제목

처음에 사용했던 코드입니다. 대부분의 사람들과 마찬가지로 send_keys() 메서드를 이용하여 로그인을 시도했습니다. 

 

from selenium import webdriver
import time
# 크롬 브라우저를 이용해서 네이버에 접근합니다.
driver = webdriver.Chrome()
driver.get('https://www.naver.com/')
time.sleep(3)

# 로그인 버튼을 찾고 클릭합니다
login_btn = driver.find_element_by_class_name('ico_local_login')
login_btn.click()
time.sleep(3)

# id, pw 입력할 곳을 찾습니다.
tag_id = driver.find_element_by_id('id')
tag_pw = driver.find_element_by_id('pw')
tag_id.clear()

# id, pw 입력합니다.
tag_id.send_keys('아이디')
tag_pw.send_keys('비밀번호')

# 로그인 버튼을 클릭합니다
login_btn = driver.find_element_by_id('log.login')
login_btn.click()

 

네이버 캡차에 걸렸습니다. 로그인 방법을 바꿔야 할 것 같습니다.

 

 

로그인 자동 입력 방지에 걸리지 않는 방법 

pyperclip 라이브러리를 이용해서 아이디와 비밀번호를 클립보드에 저장한 뒤, Ctrl + v 키를 보내서 붙여 넣도록 했습니다. (아마 이 방법도 머지않아 막히게 되지 않을까 싶습니다.)

 

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

driver = webdriver.Chrome()
driver.get('https://www.naver.com/')
time.sleep(1)

# 로그인 버튼을 찾고 클릭합니다
login_btn = driver.find_element_by_class_name('ico_local_login')
login_btn.click()
time.sleep(1)

# id, pw 입력할 곳을 찾습니다.
tag_id = driver.find_element_by_name('id')
tag_pw = driver.find_element_by_name('pw')
tag_id.clear()
time.sleep(1)

# id 입력
tag_id.click()
pyperclip.copy('아이디')
tag_id.send_keys(Keys.CONTROL, 'v')
time.sleep(1)

# pw 입력
tag_pw.click()
pyperclip.copy('비밀번호')
tag_pw.send_keys(Keys.CONTROL, 'v')
time.sleep(1)

# 로그인 버튼을 클릭합니다
login_btn = driver.find_element_by_id('log.login')
login_btn.click()

 

 

* pyperclip 예제

>>> import pyperclip

>>> pyperclip.copy('클립보드에 붙여 넣을 텍스트')

>>> pyperclip.paste()

 

'클립보드에 붙여 넣을 텍스트'

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.