Selenium으로 네이버 자동 로그인

Leanne Kim·2023년 8월 7일
3
post-thumbnail
  • 기본 설정
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager # Chrome driver 자동 업데이트

# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 불필요한 에러메시지 노출 방지
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# Chrome driver Manager를 통해 크롬 드라이버 자동 설치
service = Service(excutable_path=ChromeDriverManager().install()) 
driver = webdriver.Chrome(service=service, options = chrome_options)

# 이동하려는 해당 웹페이지 주소
driver.get("http://naver.com")

1. 네이버 로그인창 URL copy

2. drive.get()에 URL paste

추가적으로, 웹페이지가 켜진 후 해당 페이지에서 5초간 확인할 수 있게 하는 옵션과 화면을 최대화 사이즈로 보여주는 옵션을 추가

driver.implicitly_wait(5)
driver.maximize_window()

URL에 맞게 화면이 표시되었는지 확인해준다

3. F12 > 개발자 도구

(1) element 선택 도구 클릭

(2) 아이디 입력 부분 태그 클릭

(3) 우측 개발자 도구 탭 내에서 HTML 코드 확인 가능

(4) CSS 선택자 추출 >> HTML 코드 위치를 알려주는 역할

해당 영역 마우스 우측 클릭 > Copy > selector

4. 입력창 찾아 클릭하도록 설정

라이브러리 하나 더 추가

from selenium.webdriver.common.by import By

# 아이디 입력창
driver.find_element(By.CSS_SELECTOR, "")

아이디 입력창 찾을 수 있게 코드 추가 후 "" 사이에 ctrl+c한 selector를 ctrl+v

id라는 변수에 담아줄 수 있도록 설정

클릭과 키보드 입력을 받을 수 있도록 설정

# 클릭하도록 설정
id.click()

# 키보드 입력 설정
id.send_keys("네이버 아이디") # "네이버 아이디"에는 본인 네이버 아이디 입력

위 코드를 ctrl+c, ctrl+v하여 비밀번호도 아이디와 똑같이 반복

# 비밀번호 입력창 찾기
pw = driver.find_element(By.CSS_SELECTOR, "#pw")
# 클릭하도록 설정
pw.click()
# 키보드 입력 설정
pw.send_keys("네이버 비밀번호") # "네이버 비밀번호"에는 본인 네이버 비밀번호 입력

로그인도 똑같이 버튼 태그 클릭하여 copy selector

# 로그인 버튼 클릭
login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login")
login_btn.click()

#log.login 이 부분이 ctrl+v를 통해 selector 붙여넣기한 부분

실행을 하면 입력을 하는데 너~~~무 빨리 입력한 나머지 네이버에서 bot으로 착각해
자동입력방지문자를 입력하라고 한다

따라서, 사람이 한 것처럼 보여주기 위해 세가지 라이브러리를 더 추가해준다

cmd 창에서

pip install pyautogui
pip install pyperclip

입력하여 필요한 것들 다운로드

import time
import pyautogui
import pyperclip

해당 라이브러리는 클립보드에 텍스트를 복사, 붙여넣기 하는 기능이다

그리고, send_keys 부분에서 빠르게 입력하여 발생하는 것이므로, 해당 부분을 바꾸어준다.

[id.send_keys("네이버 아이디")] >> 이 부분을 변경해준다 (pw도 마찬가지)

pyperclip.copy("네이버 아이디")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)

최종

추가로 저 마지막에 새로운 기기 등록도 클릭 설정하면 될 것 같다

참조: 인프런 - 이것이 진짜 크롤링이다
https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%AC%EB%A1%A4%EB%A7%81-%EA%B8%B0%EC%B4%88/dashboard

profile
주영(98)

2개의 댓글

comment-user-thumbnail
2023년 8월 8일

클립보드에 텍스트를 복사, 붙여넣기 하는 거 대신 time.sleep() 초를 조금 더 길게 주면 안되나요?

1개의 답글