초딩도 할 수 있는 파이썬 자동화

[초딩도 할 수 있는 파이썬] 티스토리 자동 로그인하기

나도한다코딩 2022. 9. 29. 21:29

티스토리 로그인 과정 살펴보기

티스토리 로그인 과정을 한 번 살펴보자.
우선 https://www.tistory.com/auth/login 여기로가면 다음과 같은 화면을 만난다.

"카카오계정 로그인" 버튼을 누르면

이런 화면이 나오고 카카오메일 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 로그인이 된다. 간혹 2단계 인증이 뜨는 경우가 있는데, 2단계 인증은 생략가능하므로 꺼진 상태로 로그인해보자.

계정관리에서 계정보안 항목을 들어가면 2단계 인증을 해제할 수 있다.

2단계 인증을 켠 상태로 자동로그인할 수 있는 방법이 없는 것은 아니다. 그 경우는 티스토리로부터 직접 api를 발급받아 이용해야하는데 별도의 api 발급 절차를 거치고 훨씬 복잡하기 때문에 추후에 다루도록 할 예정이다.

 

selenium 모듈을 활용한 크롬 브라우저 제어환경 설정

그럼 다시 돌아가서, 우리는 selenium 이란 파이썬 모듈을 이용해 크롬 웹 브라우저를 제어하는 것을 해 볼 예정이다.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import selenium

sel_major_version = (selenium.__version__).split('.')[0]
print(sel_major_version)
if sel_major_version == '3':
    driver = webdriver.Chrome(ChromeDriverManager().install())
elif sel_major_version == '4': 
    from selenium.webdriver.chrome.service import Service as ChromeService
    driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

 

이 코드는 그냥 복붙해서 사용하자. 간단히 설명하면 selenium으로 chrome 브라우저를 제어하려면 현재 사용중인 브라우저 버전에 맞는 chrome driver를 다운로드 해야한다. 그런데 이는 selenium 버전에 따라 방식이 조금 달라서 if문을 이용해 나눈 것이다. 어쨌든 저 코드를 통과하고나면 driver라는 객체로 실제 크롬 브라우저를 제어할 수 있게 된다.

 

driver 객체를 활용한 한 크롬 브라우저 제어 명령어들

driver.get("https://www.tistory.com/auth/login")
driver.implicitly_wait(2)
driver.find_element_by_css_selector("#cMain > div > div > div > a.btn_login.link_kakao_id").click()
driver.implicitly_wait(2)
driver.find_element_by_css_selector("#id_email_2").send_keys("아이디")
driver.implicitly_wait(2)
driver.find_element_by_css_selector("#id_password_3").send_keys("비밀번호")
driver.implicitly_wait(2)
driver.find_element_by_css_selector("#login-form > fieldset > div.wrap_btn > button.btn_g.btn_confirm.submit").click()

 

크롬브라우저에서 특정 사이트에 접속하는 것은 driver.get()을 활용한다.
driver.implicitly_wait()은 페이지가 뜨기도 전에 다음 코드로 넘어가는 것을 막아준다.

find_element_by_css_selector() 메서드는 이름그대로 css selector 형식으로 입력을 받아 해당 부분을 찾아준다. 원하는 부분의 css selector 코드를 얻는 방법은 [초딩도 할 수 있는 파이썬] 네이버 금융에서 코스피 지수 가져오기에 상세히 적어두었으니 참조!

 

[초딩도 할 수 있는 파이썬] 네이버 금융에서 코스피 지수 가져오기

네이버 금융에서 코스피 지수를 가져와보자. 위에서보면 네이버 금융 페이지 주소는 https://finance.naver.com/sise/sise_index.naver?code=KOSPI 임을 알 수 있고, 화면 중간에 2290.00이라는 오늘자 코스피 지..

pythontips.tistory.com

.click()은 찾을 부분을 클릭해주는 명령어이고
.send_keys()는 찾은 부분에 원하는 텍스트를 입력해주는 명령어이다.

따라서 위 코드는

1. https://www.tistory.com/auth/login 에 접속해서 (코드 첫 줄)

2. css selector가 #cMain > div > div > div > a.btn_login.link_kakao_id 인 부분(=카카오계정 로그인 버튼)을 클릭하고 (코드 3번째 줄)

3. css selector가 #id_email_2인 부분(=카카오메일 아이디 입력창)에 아이디를 입력 (코드 5번째 줄)

4. css selector가 #id_password_3인 부분(=비밀번호 입력창)에 아이디를 입력 (코드 7번째 줄)

5. css selector가 #login-form > fieldset > div.wrap_btn > button.btn_g.btn_confirm.submit인 부분(=로그인 버튼)을 클릭 (코드 9번째 줄)

을 차례대로 실행하는 명령어이다.

selenium 모듈로 driver 객체를 설정하는 부분을 제외하곤 모두 앞에서 언급했던 내용들의 실전 응용 버전이다. 그럼 다른 사이트들에서도 비슷한 방식으로 응용을 해보자!

참고. 주요 포털 사이트들의 경우 위와같은 방식으로 로그인을 하면 "봇"으로 인식하여 추가 인증 절차를 요구하는 경우가 종종 있다. 네이버의 경우도 그러한데 사이트마다 우회하는 방법들이 조금씩 다르므로 이 부분은 추후 별도의 글에서 다루도록 하겠다.