[파이썬] requests 사용자 지정 세션 활용

Requests는 많은 파이썬 개발자들이 웹 요청을 보내기 위해 사용하는 인기 있는 HTTP 라이브러리입니다.

Requests를 사용하면 간편하게 HTTP 요청을 보내고 응답을 처리할 수 있습니다. 그러나 때로는 한 세션 내에서 여러 개의 요청을 보내야하는 상황이 발생할 수 있습니다. 이때 세션(Session)을 사용하여 여러 요청 간에 연결을 유지하고 세션 상태를 유지할 수 있습니다.

Requests에서 제공하는 세션 객체(Session object)를 사용하면 세션을 사용자 정의하고 관리할 수 있습니다. 이 세션 객체를 사용하면 쿠키, 헤더 및 인증 정보와 같은 요청 간에 공유되어야 하는 데이터를 쉽게 관리할 수 있습니다. 이를 통해 더 효율적이고 편리한 웹 스크래핑 및 웹 애플리케이션 개발이 가능합니다.

세션 생성하기

먼저, requests 모듈을 import하고 세션 객체를 생성하는 방법을 알아보겠습니다.

import requests

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

위의 코드에서 requests.Session()을 호출하여 세션 객체를 생성했습니다.

세션 상태 유지하기

세션을 사용하면 한 요청에서 다른 요청으로 이동할 때 세션 상태를 유지할 수 있습니다. 예를 들어, 로그인한 후에 웹 사이트의 다른 페이지를 방문하거나 여러 번의 요청을 보내야하는 경우 세션을 사용하여 로그인 상태를 유지할 수 있습니다.

세션 객체는 모든 요청에 대해 쿠키를 유지하고 관리합니다.

import requests

session = requests.Session()

# 로그인 요청
login_data = {'username': 'myusername', 'password': 'mypassword'}
session.post('http://example.com/login', data=login_data)

# 세션을 사용하여 다른 페이지에 대한 요청
response = session.get('http://example.com/profile')

위의 예제에서, 세션을 사용하여 로그인 요청을 보낸 후에 다른 페이지에 대한 요청을 보냈습니다. 세션 객체는 로그인에 필요한 쿠키를 유지하고 다른 요청에서 이를 사용하여 로그인 상태를 유지했습니다.

세션 헤더 설정하기

세션 객체를 사용하면 모든 요청에 대해 공통된 헤더를 설정할 수 있습니다. 이를 통해 중복된 헤더를 여러 번 설정할 필요가 없어집니다.

import requests

session = requests.Session()

# 공통 헤더 설정
session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'})

# 세션을 사용하여 요청
response = session.get('http://example.com')

위의 예제에서, 세션 객체를 생성하고 headers 속성을 사용하여 User-Agent 헤더를 설정했습니다. 이제 세션을 사용하여 요청을 보낼 때마다 User-Agent 헤더가 자동으로 추가됩니다.

기타 세션 기능

Requests 세션 객체는 많은 다른 기능들을 제공합니다. 몇 가지 예시를 살펴보겠습니다.

세션 프록시 설정하기

import requests

session = requests.Session()

# 프록시 설정
session.proxies = {'http': 'http://user:password@proxy.example.com'}

# 세션을 사용하여 요청
response = session.get('http://example.com')

세션 타임 아웃 설정하기

import requests

session = requests.Session()

# 타임 아웃 설정
session.timeout = 5  # 5초

# 세션을 사용하여 요청
response = session.get('http://example.com')

기본 요청 설정하기

import requests

session = requests.Session()

# 기본 요청 설정
session.config['verify'] = False  # SSL 인증서 무시

# 세션을 사용하여 요청
response = session.get('http://example.com')

세션 객체의 다양한 기능을 사용하여 웹 스크래핑이나 웹 애플리케이션 개발 과정에서 편리하게 HTTP 요청을 관리할 수 있습니다. 세션을 사용하면 요청 간에 데이터를 유지하고 공유할 수 있으며, 공통된 헤더를 설정하여 중복을 줄일 수 있습니다. 또한 세션 프록시, 타임 아웃 및 기본 요청 설정과 같은 다양한 기능을 활용할 수 있습니다.