Managing Session and Cookies using Requests library on Python

Dahun Yoo·2020년 12월 9일
0
post-thumbnail

API로 접근할때마다 특정 API들은 인증을 요구합니다. 기본적으로는 아이디나 비밀번호, 혹은 아이디와 API Key, token등을 요구하는데요 매번 request마다 인증줘야하는 것은 번거로운 작업이 아닐 수 없습니다.
requests 라이브러리에서 세션과 쿠리 관리를 할 수 있습니다. 간단하게 사용하는 방법은 아래와 같습니다.

Session

Session
세션(Session)이란 일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 방문자의 요청에 따른 정보를 방문자 메모리에 저장하는 것이 아닌 웹 서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버에 저장하는 것이다. 서버에 저장되기 때문에 사용자 정보가 노출되지 않는다.
https://stupidsecurity.tistory.com/7

#Github getUser
print("Github getUser")
session = requests.sessions()
session.auth = ('userid', 'password')
get_github_user_url = "https://api.github.com/user"
response = session.get(get_github_user_url)
print(response.status_code)
print(response.text)

get_github_url = "https://api.github.com"
response = session.get(get_github_url+"/user/repos")
print(response.text)

처음에 객체를 생성할때 requests.sessions() 로 세션 오브젝트를 생성해줍니다.
이후 auth 값에 아이디와 비밀번호 혹은 인증 시에 필요한 값들을 넣어줍니다.
이후 실행할 HTTP request는 세션 오브젝트로 실행하면 됩니다.

Cookies

Cookies
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우,
그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가
필요시 정보를 참조하거나 재사용할 수 있다.
https://hahahoho5915.tistory.com/32

쿠키는 key:value 형태이기 때문에, Dictionary를 사용합니다.

cookie = {"visit-month" : "February"}
response = requests.get("{API_EndPoint}", cookie = cookie)

method에 cookie= 파라미터로 넘겨줍니다.

기존 값에 쿠키를 갱신해줄 수도 있습니다.

se = requests.session()
se.cookies.update(cookie)

response = se.get("{API_EndPoint}")
print(response.text)

기존 세션오브젝트에 쿠키를 설정해준다던지, 쿠키값을 갱신해주고자 할 때 사용할 수 있습니다.

profile
QA Engineer

0개의 댓글