본문 바로가기

프로그램 개발일지

[Python] requests로 인스타 로그인 하기

 

Instagram

 

www.instagram.com

 

 

 

 

파이썬에는 requests모듈이 있다.

 

 

 

이걸 활용해서 인스타에 로그인을 해보자.

 

 

 

import requests
import datetime

session = requests.session()
def login(session, username, password):

    time = str(int(datetime.datetime.now().timestamp()))
    enc_password = f"#PWD_INSTAGRAM_BROWSER:0:{time}:{password}"

    session.cookies.set("ig_cb", "2")
    session.headers.update({'user-agent': 'Instagram 219.0.0.12.117 Android'})
    session.headers.update({'Referer': 'https://www.instagram.com'})
    res = session.get('https://www.instagram.com')

    csrftoken = None

    for key in res.cookies.keys():
        if key == 'csrftoken':
            csrftoken = session.cookies['csrftoken']

    session.headers.update({'X-CSRFToken': csrftoken})
    login_data = {'username': username, 'enc_password': enc_password}

    login = session.post('https://www.instagram.com/api/v1/web/accounts/login/ajax/', data=login_data, allow_redirects=True)
    try:
        session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
    except:
        pass
    cookies = login.cookies
    print(login.text)

    #session.close()

id = '인스타ID'
pw = '인스타비번'

login(session, id, pw)

 

인스타그램 로그인을 제작하다가 구글링을 해봤다.

 

스택오버플로우에 나와있던걸 조금 수정을 했다.

( 코드 예쁘게 잘 짜놓은거 같다 !!!!!!! 멋있군 )

 

 

 

인스타는 희안하게 user-agent를

Instagram 219.0.0.12.117 Android

 

로 해야한다.

 

 

 

 

 

 

 

아무튼 이렇게 하면 session은 인스타 로그인을 했기 때문에, 그 이후에 session을 활용해서 여러 네트워크 호출들은

로그인한 상태에서 요청한것과 동일해진다 !