Today
-
Total
-
  • [Python] 페이스북 자동 로그인 프로그램 만들기(Selenium)
    Coding/Python 2019. 10. 8. 15:35

    Selenium으로 페이스북 자동 로그인하기

    파이썬으로 페이스북 자동 로그인 프로그램을 만들어본다고 생각해봅시다.

    파이썬에서 제공하는 웹 크롤링 라이브러리인 Selenium을 이용하면, 브라우저에서의 작업을 자동화 할 수 있습니다.

    Selenium은 URL을 받아와 단순히 html 파싱을 할 수 있는 requests 라이브러리와는 달리, 직접 브라우저 창을 켜서

    작업을 할 수 있게 합니다. 무슨 소린지 한번 직접 해봅시다.

    우선 Selenium 라이브러리를 install 해주세요.

    pip install selenium

    그 다음에 Selenium에서 webdriver를 import 합니다.

    from selenium import webdriver

    저는 웹 브라우저 중 Chrome을 사용하였습니다. 이제 webdriver에서 Chrome을 사용하기 위해서는

    chromedriver가 필요합니다.

    https://chromedriver.chromium.org/downloads

    요기서 다운로드 해주세요.

    Firefox, IE, Edge 등등 다양한 웹 브라우저 모두 지원하니 원하는 브라우저의 driver를 받아,

    python 파일이 있는 곳과 같은 곳에 넣어줍시다.

    자 이제 코드에 다음과 같이 추가해 줍시다.

    from selenium import webdriver
    driver = webdriver.Chrome()

    이제 실행시켜 보면,

    이렇게 브라우저 창이 열리게 됩니다. Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있다고 나오는군요.

    이제 url을 넣어 봅시다.

    facebook의 url https://www.facebook.com/

    을 다음과 같이 코드에 넣어 줍시다

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('http://www.facebook.com")

    이제 다시 실행시켜 보면,

    요로코롬 페이스북 창이 열리는 것을 볼 수 있습니다!

    이제 자동으로 이메일/전화번호 및 비밀번호를 입력하도록 해야겠죠?

    그러기 위해서는 html 소스를 보고 이메일/비밀번호 입력란의 id를 알아내야 합니다.

    크롬에서는 Ctrl + Shift + C로 개발자 모드를 열 수 있는데요.

     

    원하는 창에 마우스를 올려서 클릭해보면 저렇게 해당 공간의 코드를 볼 수 있습니다.

    저런 단순한 입력창 뿐 아니라, form, frame 모두 알 수 있으니 정말 편한 기능입니다.

    이제 저 이메일 입력란의 name이 'email'이라는 것을 알아냈군요.

     

    이제 직접 값을 넣어보겠습니다.

     

    send_keys는 키값을 전송하여 직접 입력하게끔 할 수 있는 함수입니다.

    또 Selenium에서는 find_element_by_xx로 element를 검색할 수 있는 기능을 제공하는데요.

     

    지금 같은 경우 name을 알아냈으니 다음과 같이 코드를 추가해 줍시다.

     

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get("http://www.facebook.com")
    elem = driver.find_element_by_name("email")
    elem.send_keys('아이디')
    

     

    이러면 자동으로 'email'이란 name을 가진 element를 찾아, 그 element에 '아이디'라는 문자열 key를 전송할 것입니다.

    페이스북의 email 입력 란이 어딘지를 찾아냈으니, 거기에 '아이디'라는 값을 전송하는 것입니다.

     

    이제 같은 방법으로 비밀번호 입력란도 찾아서 넣어줍시다.

     

    # 페이스북 자동 로그인
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    driver = webdriver.Chrome()
    driver.get("http://www.facebook.com")
    elem = driver.find_element_by_name("email")
    elem.send_keys('아이디')
    elem = driver.find_element_by_name("pass")
    elem.send_keys('패스워드')
    elem.send_keys(Keys.RETURN)

     

    그리고 아이디와 비밀번호가 입력되었으니 로그인을 해야겠죠?

    페이스북에서 아이디/비밀번호 입력 후 엔터를 누르면 알아서 로그인을 해 주는걸 응용하여,

    Keys.RETURN이라는 값을 보내줍시다.

    Keys에는 사람들이 보편적으로 사용하는 Enter,Shift,F1,F2 등등의 키를 저장하고 있습니다.

    (별도의 import를 넣어 줍시다.)

    이런 코드를 활용하면 자동으로 엔터를 누르게 해줄 수 있습니다.

     

    자, 이제 실제로 돌려보면 자동으로 로그인이 되는 것을 확인할 수 있습니다.

    (움짤이 안떠지네요 ㅠㅠ)

     

     

    댓글