[파이썬] requests 쿠키 처리하기

웹 스크래핑이나 API 요청을 할 때, 쿠키는 인증을 유지하고 세션 정보를 추적하는 데 사용됩니다. Python의 requests 라이브러리는 HTTP 요청을 만들고 응답을 받는 데 사용되는 강력하고 직관적인 도구입니다. requests 라이브러리를 사용하여 웹 페이지에서 받은 쿠키를 처리하는 방법을 살펴보겠습니다.

쿠키 가져오기

쿠키를 가져오기 위해서는 서버로부터 받은 응답에 있는 쿠키를 분석해야 합니다. Response 객체의 cookies 속성을 사용하여 쿠키를 가져올 수 있습니다. 다음은 예시입니다.

import requests

# GET 요청을 보내고 응답을 받습니다.
response = requests.get('https://www.example.com')

# 응답에서 쿠키를 가져옵니다.
cookies = response.cookies

# 쿠키 정보를 출력합니다.
for cookie in cookies:
    print(cookie.name, cookie.value)

위의 예시에서 response.cookiesRequestsCookieJar 객체를 반환합니다. RequestsCookieJar 객체는 모든 쿠키를 저장하고 있는 컨테이너입니다. 각각의 쿠키는 Cookie 객체로 표현됩니다. Cookie 객체에서 name 속성은 쿠키의 이름, value 속성은 쿠키의 값입니다.

쿠키 전송하기

다음으로는 requests를 사용하여 서버에 쿠키를 전송하는 방법을 알아보겠습니다. 이를 위해서는 cookies 매개변수를 사용하여 쿠키를 전달할 수 있습니다. 다음은 예시입니다.

import requests

# 쿠키 정보를 저장할 변수를 선언합니다.
cookies = {'name': 'value'}

# GET 요청을 보내고 쿠키를 전송합니다.
response = requests.get('https://www.example.com', cookies=cookies)

위의 예시에서 cookies 변수에 쿠키 정보를 딕셔너리 형태로 저장합니다. 그리고 requests.get() 함수의 cookies 매개변수에 해당 변수를 전달하여 쿠키를 서버로 전송합니다.

세션 유지하기

인증 정보가 필요한 경우, requests를 사용하여 세션을 유지하고 쿠키를 저장하는 것이 편리합니다. 이를 위해 Session 객체를 사용할 수 있습니다. 다음은 예시입니다.

import requests

# 세션 객체를 생성합니다.
session = requests.Session()

# 로그인 요청을 보냅니다.
response = session.post('https://www.example.com/login', data={'username': 'user', 'password': 'pass'})

# 다른 요청을 보낼 때 세션 정보를 유지하여 쿠키를 전송합니다.
response = session.get('https://www.example.com/profile')

위의 예시에서 requests.Session()을 호출하여 Session 객체를 생성합니다. 그리고 로그인 요청을 보낼 때 session.post() 함수를 사용하여 세션 객체를 사용합니다. 이후 다른 요청을 보낼 때는 세션 정보가 유지되므로 session.get() 함수를 사용하여 쿠키가 자동으로 전송됩니다.

결론

requests 라이브러리를 사용하면 쉽게 HTTP 요청을 만들고 응답을 받을 수 있습니다. 쿠키를 처리하는 response.cookies 속성과 cookies 매개변수를 활용하여 서버로부터 쿠키를 가져오고 전송할 수 있습니다. 세션을 유지하여 쿠키 정보를 저장하면 인증 정보를 효율적으로 관리할 수 있습니다. 이를 통해 웹 스크래핑이나 API 요청에서 쿠키를 손쉽게 다룰 수 있습니다.