[파이썬] requests 쿠키를 활용한 세션 관리

requests_logo

세션(session)은 웹 애플리케이션에서 사용자의 상태를 유지하기 위한 메커니즘을 의미합니다. 세션은 일반적으로 쿠키(cookie)를 통해 구현됩니다. 파이썬의 requests 라이브러리를 사용하면 HTTP 요청에서 심플하게 세션 관리를 할 수 있습니다.

이 블로그 포스트에서는 requests 라이브러리를 사용하여 세션을 만드는 방법과 쿠키를 활용한 세션 관리를 살펴보겠습니다.

세션 생성하기

HTTP 요청을 보낼 때마다 새로운 세션을 만들어 사용하려면 requests.Session()을 사용합니다. 이를 통해 세션 객체를 생성하고, 이 객체의 .get() 또는 .post() 메서드를 사용하여 요청을 보낼 수 있습니다.

다음은 세션 객체를 생성하고 세션으로 HTTP GET 요청을 보내는 예제 코드입니다.

import requests

# 세션 생성
session = requests.Session()

# 세션을 통한 GET 요청
response = session.get("https://api.example.com")

# HTTP 응답 출력
print(response.text)

위 예제에서 세션 객체인 session을 생성하고 .get() 메서드를 사용하여 HTTP GET 요청을 보냈습니다. 이후에는 동일한 세션 객체를 사용하여 다른 요청을 보낼 수 있습니다.

쿠키 활용하기

세션을 유지하기 위한 주요 메커니즘 중 하나는 쿠키입니다. requests 라이브러리를 사용하면 쿠키를 간편하게 활용할 수 있습니다.

다음은 로그인 후 쿠키를 받아와 이를 세션에 저장하는 예제 코드입니다.

import requests

# 로그인 요청을 전송하고 쿠키 받기
login_data = {"username": "username", "password": "password"}
response = requests.post("https://api.example.com/login", data=login_data)

# 응답에서 쿠키 추출
cookies = response.cookies

# 세션 생성
session = requests.Session()

# 세션에 쿠키 설정
session.cookies = cookies

# 세션을 통한 추가 요청
response = session.get("https://api.example.com/profile")

# HTTP 응답 출력
print(response.text)

위 예제에서는 로그인 요청을 requests.post() 메서드로 보내고, 응답에서 받은 쿠키를 세션 객체의 cookies 속성에 설정합니다. 이후 세션을 통해 추가 요청을 보낼 때마다 해당 쿠키를 함께 전송하기 때문에 세션 유지가 가능해집니다.

세션 유지 확인하기

쿠키를 활용한 세션 관리를 제대로 구현했다면, 세션 유지를 확인할 수 있는 방법이 필요합니다. requests 라이브러리는 세션의 현재 상태에 접근할 수 있는 다양한 속성을 제공합니다.

다음은 세션에 저장된 쿠키들을 확인하는 예제 코드입니다.

import requests

# 세션 생성
session = requests.Session()

# 세션에 쿠키 설정
session.cookies.set("key", "value")

# 세션의 현재 쿠키 확인
print(session.cookies)

위 예제에서 requests.Session().cookies 속성을 통해 현재 세션에 저장된 쿠키 정보를 확인할 수 있습니다.

마무리

requests 라이브러리를 사용하여 세션 관리를 간편하게 할 수 있습니다. 이를 통해 쿠키를 활용하여 세션을 생성하고 유지할 수 있으며, 세션의 상태도 손쉽게 확인할 수 있습니다. 이를 통해 웹 애플리케이션 개발을 보다 효율적으로 진행할 수 있습니다.

더 자세한 내용은 requests 라이브러리의 공식 문서를 참고하세요.