Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)에서 쿠키를 검색하는 방법

파이썬(Python)에서 쿠키 검색하기

설정된 모든 쿠키를 가져오는 작업은 매우 간단합니다. CGI 프로그램에서 쿠키는 환경 변수 HTTP_COOKIE에 저장되며, 여러 개의 쿠키는 세미콜론(;)으로 구분되어 다음과 같은 형식으로 전달됩니다.

key1=value1;key2=value2;key3=value3...

예제: 쿠키 값 읽어오기

다음은 HTTP_COOKIE 환경 변수에서 쿠키를 파싱하여 원하는 값을 추출하는 예제 코드입니다.

#!/usr/bin/python3
from os import environ

if 'HTTP_COOKIE' in environ:
    # 세미콜론(;)으로 쿠키를 분리한 뒤 각 항목을 처리
    for cookie in environ['HTTP_COOKIE'].split(';'):
        key, value = cookie.strip().split('=', 1)
        if key == "UserID":
            user_id = value
        if key == "Password":
            password = value

print("User ID = %s" % user_id)
print("Password = %s" % password)

위 코드의 동작 순서는 다음과 같습니다.
1. 쿠키 문자열을 세미콜론(;) 기준으로 분리합니다.
2. 각 항목을 등호(=)로 나누어 키(key)와 값(value)을 얻습니다.
3. 키 이름이 UserID 또는 Password인 경우 해당 값을 변수에 저장합니다.

참고로 과거 파이썬 2 기반 자료에서는 environ.has_key('HTTP_COOKIE')와 같은 문법이 사용되었지만, 이 방식은 파이썬 3에서 제거되었습니다. 따라서 위 예제처럼 in 연산자로 환경 변수의 존재 여부를 확인하는 것이 좋습니다.

실행 결과

앞서 설정한 쿠키(UserID=XYZ, Password=XYZ123)가 있는 상태에서 위 스크립트를 실행하면 다음과 같은 결과가 출력됩니다.

User ID = XYZ
Password = XYZ123

더 나은 방법: http.cookies 모듈 활용

파이썬 표준 라이브러리의 http.cookies 모듈을 사용하면 쿠키를 더 안전하고 편리하게 처리할 수 있습니다.

from http.cookies import SimpleCookie
from os import environ

cookie = SimpleCookie()
cookie.load(environ.get('HTTP_COOKIE', ''))

user_id = cookie['UserID'].value
password = cookie['Password'].value

print("User ID =", user_id)
print("Password =", password)

SimpleCookie는 쿠키 문자열의 인코딩과 특수문자 처리를 자동으로 관리해 주므로, 실무에서는 문자열을 직접 분리하는 방식보다 이 모듈을 사용하는 것이 권장됩니다.