조금씩 꾸준히 완성을 향해

[Python] selenium 네이버 로그인 / 자동입력 방지 우회 본문

Python/Web Scraping

[Python] selenium 네이버 로그인 / 자동입력 방지 우회

all_sound 2022. 9. 14. 21:47

selenium을 사용해서 네이버 로그인을 해보자.

from selenium import webdriver
import time

# webdriver 경로 지정
driver = webdriver.Chrome("./chromedriver.exe")
time.sleep(3) #시간 지연 3초 주기

#1. 네이버 이동
driver.get("http://naver.com")

#2. 로그인 페이지로 이동
elem = driver.find_element_by_class_name("link_login")
elem.click()
time.sleep(3)

 

일단 네이버로 이동해서 로그인 페이지까지 갔다. 

아이디, 비밀번호를 입력하려는데 문제가 하나 생겨버린다. 

 

driver.find_element_by_id('id').send_keys("naver_id")
driver.find_element_by_id('pw').send_keys("naver_pw")

이 코드로는 로그인이 막혀버린다는 것이다.

 

 

 

요렇게 자동입력 방지가 뜬다. 사람과 컴퓨터를 구별하기 위한 ‘자동 계정 생성 방지 기술'인 캡챠(captcha)가 작동되고 있기 때문이다. 이 captcha를 우회하기 위한 하나의 방법으로 JavaScript를 사용할 수 있다. 

 

#3. id, pw 입력 (captcha 우회)
input_js = ' \
        document.getElementById("id").value = "{id}"; \
        document.getElementById("pw").value = "{pw}"; \
    '.format(id = "naver_id", pw = "naver_pw")
driver.execute_script(input_js)
time.sleep(3)

#4. 로그인 버튼 클릭
driver.find_element_by_id("log.login").click()
time.sleep(3)

 

이렇게 execute_script로 js 코드를 실행시켜 주면, 정상적으로 로그인이 시도된다.

 

자동입력 방지가 뜨지 않고 이렇게 아이디, 비번이 틀렸다는 문구가 뜨는 걸 확인할 수 있다. 

 

 

 

 

[참고] https://jaeseokim.dev/Python/python-Selenium%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-Naver-login-%ED%9B%84-%EA%B5%AC%EB%8F%85-Feed-%ED%81%AC%EB%A1%A4%EB%A7%81/