웹사이트를 로그인 하는 데 있어 쿠키와 세션을 빼먹고 얘기하는 것은 불가능하다.
이번 포스팅에서는 requests 모듈을 이용해 로그인이 필요한 웹사이트를 크롤링하는 예제를 다룰 것이다.
쿠키(Cookie)? 세션(Session)?
웹은 대다수가 HTTP 기반으로 동작한다. 하지만 HTTP가 구현된 방식에서 웹 서버와 클라이언트는 지속적으로 연결을 유지한 상태가 아니라 요청(request)-응답(response)의 반복일 뿐이기 때문에, 이전 요청과 새로운 요청이 같은 사용자(같은 브라우저)에서 이루어 졌는지를 확인하는 방법이 필요하다. 이때 등장하는 것이 ‘쿠키’와 ‘세션’이다.
쿠키는 유저가 웹 사이트를 방문할 때 사용자의 브라우저에 심겨지는 작은 파일인데, Key-Value 형식으로 로컬 브라우저에 저장된다. 서버는 이 쿠키의 정보를 읽어 HTTP 요청에 대해 브라우저를 식별한다.
그러나 쿠키는 로컬에 저장된다는 근원적인 문제로 인해 악의적 사용자가 쿠키를 변조하거나 탈취해 정상적이지 않은 쿠키로 서버에 요청을 보낼 수 있다. 만약 로컬 쿠키만을 신뢰해 로그인을 했다고 서버가 인식한다면 쿠키 변조를 통해 마치 관리자나 다른 유저처럼 행동할 수도 있다.
이로 인해 서버측에서는 클라이언트를 식별하는 ‘세션’을 주로 이용한다.
세션은 브라우저가 웹 서버에 요청을 한 경우 서버 내에서 해당 세션 정보를 파일이나 DB에 저장하고 클라이언트의