여러 요청을 「같은 컨텍스트」(같은 쿠키·인증·헤더)에서 보내려면 매번 똑같이 적기 번거롭습니다.
requests.Session 객체가 「하나의 브라우저 탭처럼」 상태를 자동으로 이어 줍니다.
기본 사용.
session = requests.Session().
session.headers.update({"User-Agent": "my-bot/1.0"}) — 모든 요청에 자동 적용될 헤더.
session.get(url) / session.post(url) — 쿠키가 자동으로 저장·전송됩니다.
로그인이 필요한 사이트 자동화에 핵심입니다.
session.post("/login", data={"id":"x","pw":"y"}) — 로그인 → 쿠키 저장.
session.get("/profile") — 로그인 상태로 접근.
매 요청마다 쿠키 직접 넘길 필요 없음.
성능 이점도 큽니다.
같은 호스트로 여러 요청 보낼 때 「TCP 연결 재사용」이 일어나, requests.get을 N번 부르는 것보다 훨씬 빠릅니다.
대량 크롤링·API 호출에서는 거의 필수입니다.
with 문으로 안전하게 쓸 수 있습니다.
with requests.Session() as s: s.get(url).
블록을 빠져나갈 때 연결이 자동 정리됩니다.
session.close()를 명시하지 않아도 됩니다.
한 줄 요약
requests.Session은 쿠키·헤더·연결을 자동으로 유지하며 재사용합니다.
로그인 자동화, 대량 요청, 동일 컨텍스트 유지에 필수입니다.
더 알아볼 것
- Connection: keep-alive 동작
- 쿠키 디버깅 — session.cookies
- Session vs requests 함수 차이