HTML

HTTP 프로토콜

forSilver 2025. 11. 27. 04:43
반응형

HTTP 프로토콜은 웹의 근간을 이루는 통신 규약으로, 우리가 인터넷에서 웹사이트를 열고, 이미지와 영상을 보고, 파일을 다운로드하고, API를 호출하는 모든 과정의 중심에 자리하고 있습니다. 웹 스크래핑을 포함한 모든 웹 기반 프로그래밍을 배우기 위해서는 HTTP의 구조를 정확히 이해하는 것이 중요합니다.
아래 내용은 HTTP 프로토콜을 핵심 개념부터 세부 구조, 동작 원리, 실무 활용까지 체계적으로 정리한 글입니다.


1. HTTP란 무엇인가

HTTP(HyperText Transfer Protocol)는 클라이언트와 서버가 데이터를 주고받기 위한 표준 통신 규약입니다.
우리가 웹 브라우저에서 주소창에 URL을 입력하면, 브라우저는 서버에 요청(Request)을 보내고, 서버는 그에 대한 응답(Response)을 되돌려 줍니다.
웹페이지가 화면에 보이는 과정은 바로 이 요청과 응답이 반복되는 구조 위에서 이루어집니다.

HTTP의 가장 큰 특징은 다음과 같습니다.

  • 텍스트 기반의 규약이므로 사람이 읽어도 구조를 이해할 수 있다.
  • 요청과 응답의 쌍으로 통신이 이루어진다.
  • 상태를 유지하지 않는 프로토콜(Stateless)이다.
  • 확장성과 유연성이 좋아 API, 웹 서비스에 폭넓게 쓰인다.

HTTP는 보기에는 단순하지만 웹 전체 생태계가 의존할 만큼 강력한 구조적 기반을 갖추고 있습니다.


2. HTTP 통신의 기본 흐름

HTTP 통신은 다음 네 단계로 진행됩니다.

  1. 클라이언트가 서버에 연결을 시도
  2. 클라이언트가 요청 데이터를 보냄 (Request)
  3. 서버가 요청을 처리하고 응답을 생성 (Response)
  4. 클라이언트가 응답을 수신하고 화면 또는 결과를 표시

이때 브라우저가 클라이언트가 될 수도 있고, 파이썬 requests 라이브러리 같은 프로그램이 클라이언트가 될 수도 있습니다.
스크래핑에서는 브라우저 없이 파이썬 코드가 스스로 서버에 요청을 보내고 데이터를 받는 클라이언트 역할을 하게 됩니다.


3. URL의 구조와 HTTP 관계

HTTP 요청을 보내는 출발점은 URL입니다.
URL은 단순한 주소가 아니라 요청 대상과 방식을 표현하는 전체 경로입니다.

예시:

https://news.example.com/society?date=20251120&page=2

구조를 나누면 다음과 같습니다.

구성 요소 의미
https:// 사용 프로토콜 (HTTP 또는 HTTPS)
news.example.com 서버 도메인
/society 특정 페이지 또는 경로
?date=20251120&page=2 서버에 전달하는 파라미터

웹 스크래핑에서는 이 URL 구성 요소를 분석해야 원하는 데이터로 접근할 수 있습니다.
API 호출도 같은 방식으로 구성됩니다.


4. HTTP Request의 구조

클라이언트가 서버에 보내는 요청은 다음 요소로 이루어져 있습니다.

GET /society?page=2 HTTP/1.1
Host: news.example.com
User-Agent: Mozilla/5.0
Accept: text/html

핵심 구성 요소:

요소 설명
Request Line 요청 방식(GET, POST 등) + 경로 + 프로토콜 버전
Headers 부가 정보(브라우저 정보, 인증 정보 등)
Body 전송 데이터 (POST와 PUT에서 주로 사용)

요청 메서드의 종류

메서드 역할
GET 서버에서 정보를 읽어오기
POST 데이터를 서버에 제출
PUT 데이터를 새로 생성 또는 덮어쓰기
DELETE 저장된 데이터를 삭제
HEAD 응답 본문 없이 헤더만 요청

일반 웹페이지 접근은 대부분 GET이고, 로그인·검색·업로드 같은 경우는 POST가 많이 쓰입니다.


5. HTTP Response의 구조

서버는 요청을 처리한 뒤 다음과 같은 형식으로 응답을 보냅니다.

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 28639
...
<body> ... HTML 내용 ... </body>

구성 요소:

요소 설명
Status Line 응답 코드 (성공/오류/권한 문제 등)
Headers 데이터 형식, 길이, 쿠키 등
Body HTML, JSON, 파일 등의 실제 데이터

주요 HTTP 상태코드

코드 의미
200 요청 성공
301 / 302 페이지 이동 (리다이렉트)
401 인증 필요
403 접근 금지
404 페이지 없음
429 요청 과다 (스크래핑 시 자주 발생)
500 서버 내부 오류

스크래핑에서 403, 429가 특히 자주 등장하며, 이는 사이트가 스크래핑을 차단하려 할 때 나타나는 코드입니다.


6. HTTP는 Stateless 구조

HTTP는 Stateless, 즉 상태를 기억하지 않는 구조입니다.
요청 A가 끝난 뒤 요청 B가 오면 서버는 그 두 요청이 같은 사용자에게서 온 것인지 판단하지 못합니다.

이 문제를 해결하기 위해 다음 기술이 함께 사용됩니다.

  • 쿠키(Cookie)
  • 세션(Session)
  • 토큰(Token) / JWT 인증
  • OAuth 로그인

로그인 기반 콘텐츠를 스크래핑하려면 이러한 인증 구조를 이해해야 합니다.
특히 POST 로그인 후 Cookie를 유지하며 GET 요청을 이어가는 방식은 실전 스크래핑에서 많이 사용됩니다.


7. HTTP와 HTTPS의 차이

HTTP는 평문 전송 방식이라 중간에서 데이터가 탈취될 위험이 있습니다.
이를 보완하기 위해 SSL/TLS 암호화 기능을 추가한 것이 HTTPS입니다.

항목  HTTP HTTPS
보안 취약 암호화
속도 약간 빠름 약간 느림
인증서 없음 SSL 인증서 필요
사용환경 제한적 대부분의 웹 기본 표준

오늘날 웹의 대부분은 HTTPS가 표준입니다.
스크래핑에서도 HTTPS 요청은 HTTP와 거의 동일하게 다뤄지며, 파이썬 requests는 자동으로 HTTPS를 처리합니다.


8. HTTP가 웹 스크래핑에서 중요한 이유

웹 스크래핑은 결국 HTTP 요청을 어떻게 보내고 응답을 어떻게 해석하느냐의 문제입니다.

HTTP를 이해하면 다음이 쉬워집니다.

  • 요청 파라미터를 분석하여 데이터 페이지 이동 처리
  • 로그인, 세션 유지, 헤더 조작
  • JSON API 호출로 빠른 수집
  • 403·429 차단 회피
  • 무한 스크롤 / AJAX 통신 추적

결국 HTTP는 웹의 문법이고, 스크래핑은 그 문법을 사용하는 과정입니다.


9. HTTP를 바탕으로 한 API 호출

최근에는 HTML 파싱 대신 API 요청을 이용한 데이터 수집이 크게 확대되었습니다.

HTML 스크래핑 → UI 기반 데이터 수집
API 스크래핑 → 서버 데이터 직접 요청

API가 존재한다면 HTML보다 빠르고 정확하며 차단 위험이 적은 장점이 있습니다.
API 분석 역시 HTTP 요청 구조를 바탕으로 이루어집니다.


맺음말

HTTP는 단순한 통신 규약이 아니라, 웹 세상에서 정보를 교환하는 보편 언어입니다.
웹 브라우저, 스마트폰 앱, 서버 간 통신, 웹 스크래핑, 인공지능 API 호출까지 모두 HTTP 위에서 이루어지고 있습니다.

HTTP의 구조와 동작 원리를 이해하면,
웹페이지가 어떻게 구성되고,
데이터가 어디서 어떻게 전송되며,
어떻게 요청해야 원하는 결과를 얻을 수 있는지
직관적으로 파악할 수 있습니다.

웹 스크래핑을 본격적으로 배우기 전에 HTTP를 선명하게 이해해 두면 학습 속도가 훨씬 빨라지고, 문제 해결 능력도 자연스럽게 향상됩니다.

 

HTTP는 웹을 다루는 모든 사람에게 가장 기본이자 가장 강력한 도구입니다.