Python/Python-Crawling

[N블로그] 자동으로 로그인 하기

오마로 2024. 3. 27. 09:54
반응형

안녕하세요 곰스입니다. 
N블로그 자동으로 로그인 하기를 정리하도록 하겠습니다. 
현재 일자가 2024-03-27 이라서, 이날 이후에 N블로그 측에서 소스 및 리뉴얼 하게 되면 HTML 속성값들이 변경되어서 안될 수도 있습니다. ^^

일단, 오늘 N블로그 자동으로 로그인 하기에 대해서 잘 정리하도록 하겠습니다.

1.브라우저 환경 세팅하기
 1)크롬브라우저 옵션 및 연동 세팅하기입니다. 
    user-agent 및 implicitly_wait 부분만 수정하시면 사용 가능합니다. 

#step1.selenium 패키지와 time 모듈 import
from selenium import webdriver                              #웹드라이버 함수 불러오기
from selenium.webdriver.common.keys import Keys             #키보드 입력을 위해 가져오는 함수
from selenium.webdriver.common.by import By                 #각 종 키
from selenium.webdriver.chrome.options import Options       #크롬웹 옵션
from selenium.webdriver.support.ui import WebDriverWait     #크롬웹 Wait 사용
from selenium.webdriver.support import expected_conditions as EC    #크롬웹 EC 사용
from selenium.webdriver.common.action_chains import ActionChains    #크롬웹 ActionChains 사용
from selenium.webdriver.common.alert import Alert                   #크롬웹 Alert 사용
from selenium.common.exceptions import UnexpectedAlertPresentException
 
#step2.브라우저 세팅하기
def setBrowser():
    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])       # 불필요한 에러 메시지 없애기
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument("disable-gpu")
    # options.add_argument('headless')
    chrome_options.add_argument('window-size=1920x1080')
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
    browser = webdriver.Chrome(options=chrome_options)                                  #웹드라이브 연동
    browser.implicitly_wait(3)  #암묵적으로 웹자원로드를 3초 기다린다.
    return browser

 2)사용방법

browser = setBrowser()

setBrowser function을 호출하여 browser로 사용하면 됩니다. 

2.N블로그 로그인 화면으로 이동

# step3.[블로그] 로그인
def login(browser, naverId, naverPwd):
    #크롬드라이버로 원하는 url(로그인 화면)로 접속
    browser.get(url)

browser.get(url)를 호출하여 N로그인 화면으로 이동합니다. 
blogUrl은 로그인 후 자동으로 이동한 URL입니다. 

3.N블로그 로그인 하기
  login function을 만들고, params으로 browser, naverId, naverPwd를 전달하면 됩니다. 
  naverId와 naverPwd는 실제 계정 정보를 기입하시면 됩니다. 

# [블로그] 로그인
def login(browser, naverId, naverPwd):
    #크롬드라이버로 원하는 url(로그인 화면)로 접속
    browser.get(url)
    time.sleep(random.uniform(1, 5))  # Adjust the range as needed
 
    browser.find_element(By.NAME,'id').click()
    pyperclip.copy(naverId)                                                                         #id값 복사하기
    browser.find_element(By.NAME,'id').send_keys(Keys.CONTROL,'v')  #id값 붙혀놓기
                       
    browser.find_element(By.NAME,'pw').click()
    pyperclip.copy(naverPwd)                                                                       #pw값 복사하기
    browser.find_element(By.NAME,'pw').send_keys(Keys.CONTROL,'v')  #pw값 붙혀놓기
    browser.find_element(By.XPATH,'//*[@id="log.login"]').click()                #로그인 버튼 클릭 처리
    return

1)화면으로 이동 한 후에 1~5초 사이에 랜덤하게 대기합니다. 로그인 화면이 다 렌더링 될 때까지 기다린다는 의미입니다. 
2) 로그인 ID와 PWD를 직접 넣게 되면 2단계 로그인이 발생하여, 이미지 분석까지 해야합니다. 복잡해집니다. 
    그래서, 회피하는 방법으로 ID와 PWD를 복사한 후에 붙혀놓기를 하면 해당 값이 입력되고 로그인이 정상적으로 처리됩니다.
  ㄴ pyperclip를 import 해서 사용하시면 됩니다. 
  ㄴ pyperclip를 모를 때, 해당 작업을 하는데 하루를 날렸던 아픈 기억이 있습니다. ㅠㅜ 
      이 글을 보시는 분들은 아픔을 겪지 마시고, 편안하게 작업하시기 바랍니다. 

N블로그 자동로그인 화면

N블로그 자동로그인까지 되었으면, 다음 글부터 다양한 기능을 알려드리도록 하겠습니다.
N블로그 검색어 입력 후,
블로그 리스트의 정보를 가져와서 공감하기, 댓글달기, 서로이웃추가하기 등이 가능합니다. 

많관부 > 많은 관심 부탁드립니다 ^^
감사합니다.

반응형