웹크롤링 - 쿠키(Cookie)와 세션(Session)

6. 쿠키(Cookie)와 세션(Session)

  • HTTP Request 를 전송하면, 서버는 HTML 파일을 전달하고, 해당 요청은 완료된다.
  • HTTP 프로토콜은 연결을 유지하기 어려운 구조로 되어 있음
    . 요청-응답 후 연결이 끊기는 구조(사용자 입력 정보등 상태 정보 활용이 어려운 구조임)
  • 상태 관리 정보를 저장하는 방식으로 쿠키(cookie)와 세션(session) 기법이 나옴

6.1. 쿠키(cookie): 상태 정보를 클라이언트에 저장하는 방식

  1. HTML 페이지를 웹 서버에 요청
  2. 웹 서버에서 쿠키(cookie) 생성
  3. 웹 서버 응답(HTML 페이지를 돌려줄 때) HTTP 헤더에 쿠키를 포함해서 전송
    Set−Cookie: id=korea123
  4. 전달받은 쿠키는 웹브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 함께 전송
    Cookie: id=korea123
  5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인
  6. 필요시 서버가 쿠키 정보를 변경해서 응답시 변경된 쿠키와 함께 응답

6.2. 세션(session): 상태 정보를 웹 서버에 저장하는 방식

  1. 웹브라우저가 웹 서버에 요청하게 되면, 웹 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(세션 ID)를 부여함
  2. 해당 세션 ID는 응답(HTML 페이지를 돌려줄 때) HTTP 헤더에 넣어져 전달된다.
    Set−Cookie: PHPSESSID=pi0fo9v2kdi5nuha3bcgiu8fq2
  3. 웹브라우저는 이후 웹브라우저를 닫기 까지 해당 웹 서버 요청할 때 부여된 세션 ID를 HTTP 헤더에 넣어서 전달한다.
    Cookie: PHPSESSID=pi0fo9v2kdi5nuha3bcgiu8fq2
  4. 웹 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후, HTML 페이지를 돌려준다.

**실습 (세션에 대한 기본 이해)**
1. [한빛미디어 회원가입](http://www.hanbit.co.kr/member/member_agree.html)
2. 크롬(Chrome) 브라우저로 www.hanbit.co.kr 페이지 오픈 후
- alt + command + i (맥북), F12 (윈도우) 누르고 Application -> Cookies -> http://www.hanbit.co.kr 이동
- PHPSESSID 확인
3. 한빛미디어 로그인 후
- PHPSESSID 값을 임의 값으로 수정
4. 마이한빛 메뉴 클릭

X PHPSESSID 값을 임의 값으로 수정했기 때문에, 로그인 정보가 필요한 마이한빛 페이지 오픈시, 서버측에서 해당 로그인 정보가 없으므로
로그인을 하라는 페이지로 이동함