목차
- HTTP와 HTTPS
- HTTP의 정의와 특징
- HTTPS의 정의와 특징
- HTTP와 HTTPS의 차이점
- 웹 크롤링 시 고려해야 할 점
1. HTTP와 HTTPS
웹 사이트를 방문하면 브라우저 주소창에 http:// 또는 https://가 포함된 URL을 볼 수 있다.
이들은 웹 페이지 데이터를 주고받는 프로토콜로, 웹 통신에서 중요한 역할.
하지만 보안성, 신뢰성 등의 차이가 있어 사용 목적과 환경에 따라 적절한 프로토콜을 선택해야 한다.
- HTTP와 HTTPS를 이해하면 웹 크롤링을 수행할 때 대상 사이트의 보안 정책, 접근 방식, 데이터 요청 처리 과정 등을 보다 정확히 파악 가능.
- 이에 따라 효율적인 크롤링 전략 또한 수립 가능.
2. HTTP의 정의와 특징
2-1 HTTP (HyperText Transfer Protocol, 하이퍼텍스트 전송 프로토콜)
HTTP는 웹에서 클라이언트와 서버 간 데이터를 주고받기 위한 프로토콜.
하이퍼텍스트(hypertext)란 웹 페이지를 서로 연결하는 링크를 의미하며, HTTP는 이러한 문서를 요청하고 전송하는 역할을 한다.
a. 프로토콜
컴퓨터 또는 전자 기기 간의 원활한 통신을 위해 지키기로 약속한 규약.
프로토콜에는 신호 처리법, 오류 처리, 암호, 인증, 주소 등을 포함.
b. 전 세계에 연결이 가능한 이유 (국제 표준 통신 규약 존재)
1. 인터넷: TCP/IP
2. 이메일: SMTP (Simple Mail Transfer Protocol)
3. 월드 와이드 웹(www): HTTP(HyperText Transfer Protocol)
2-2 HTTP의 특징
1. 텍스트 기반 통신
- HTTP는 사람이 읽을 수 있는 텍스트 기반 요청/응답 구조를 갖는다.
- 예를 들어, 브라우저가 http://example.com을 요청하면 서버는 HTML 문서를 응답으로 전송.
2. 무상태성(Stateless)
- HTTP는 이전 요청의 정보를 저장하지 않으므로, 같은 클라이언트가 연속해서 요청을 보내더라도 각각 독립적으로 처리.
- 이를 해결하기 위해 쿠키나 세션 등의 기술 추가 사용.
3. 보안 미지원
- HTTP는 데이터를 암호화하지 않고 전송하므로, 네트워크에서 데이터가 그대로 노출될 위험 존재.
- 이는 중간자 공격(Man-in-the-Middle Attack, MITM)과 같은 보안 위협에 취약.
4. 포트 번호: 80 사용
- 기본적으로 HTTP는 80번 포트를 사용하여 서버와 통신.
HTTP 요청의 예시
GET /index.html HTTP/1.1
Host: example.com
- 위 요청을 서버가 처리하면 다음과 같은 응답이 올 수 있다.
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<body>Hello, World!</body>
</html>
- 이와 같이, HTTP는 데이터를 암호화 없이 전송한다.
3. HTTPS의 정의와 특징
3.1 HTTPS의 정의
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 암호화 기술을 추가한 보안 프로토콜.
즉, 기존 HTTP의 데이터 전송 방식에 보안 계층을 더하여 데이터의 안전성을 보장.
3.2 HTTPS의 특징
1. 데이터 암호화 지원
- HTTPS는 SSL/TLS를 이용하여 데이터 암호화를 수행한다.
- 이를 통해 네트워크를 통해 전송되는 데이터가 보호되므로, 중간에서 데이터를 가로채도 내용을 알 수 없다.
2. 무결성 보장
- 데이터가 전송되는 동안 변경되거나 조작되지 않도록 보호.
- 이는 인증서를 통해 검증되며, 브라우저는 유효한 HTTPS 사이트만 신뢰할 수 있도록 설정된다.
3. 인증서 기반 신뢰성 확보
- HTTPS는 SSL/TLS 인증서를 통해 웹사이트의 신뢰성을 보장.
- 인증서는 공인된 인증기관(CA, Certificate Authority)에서 발급하며, 사용자가 접속한 사이트가 실제로 신뢰할 수 있는지 검증 가능.
4. 포트 번호: 443 사용
- HTTPS는 기본적으로 443번 포트를 사용하여 서버와 통신.
예시
HTTPS를 사용하는 웹사이트에 접속하면 브라우저 주소창에 자물쇠 아이콘이 나타난다.
이는 웹사이트가 SSL/TLS 인증서를 통해 보호되고 있다는 의미.
4. HTTP와 HTTPS의 차이점

5. 웹 크롤링 시 고려해야 할 점
1. HTTPS 사이트 접근 제한
- HTTPS는 보안이 강화된 만큼 크롤링을 차단하는 경우가 많다.
- User-Agent 설정을 변경하거나 인증을 필요로 할 수 있다.
2. 리디렉션 처리
- HTTP에서 HTTPS로 리디렉션이 발생할 수 있으므로, 크롤러가 이를 자동으로 따라가도록 설정 필요.
3.인증 및 로그인 요구
- HTTPS 사이트는 보안을 위해 로그인 인증을 요구하는 경우가 많다.
- 크롤링 시 세션 관리나 쿠키 사용이 필요할 수 있다.
4. SSL 인증서 검증
- Python의 requests 라이브러리에서 HTTPS 사이트 요청 시 SSL 인증서 오류가 발생할 수 있으며, 이를 처리하기 위해 verify=False 옵션을 사용 가능.
예시
import requests
url = "https://example.com"
response = requests.get(url, verify=False)
print(response.text)
- 하지만, 보안상 바람직하지 않으므로 가능하면 인증서를 신뢰할 수 있는 방법을 찾아야 한다.
정리
- HTTP와 HTTPS는 웹에서 데이터를 주고받는 중요한 프로토콜이며, HTTPS는 보안성이 강화된 형태.
- 크롤링을 수행할 때는 대상 사이트의 보안 설정을 파악하고, 인증 및 접근 방식에 맞게 크롤러를 설계해야 한다.
- 특히 HTTPS 사이트의 보안 정책을 준수하는 것이 중요.