웹을 작동하는 데 쓰이는 기본 프로토콜은 HTTP(HyperText Transfer Protocol)입니다. 사용자가 인터넷에서 어떤 링크를 누르면 그 웹서버에 접속해서 해당하는 페이지를 띄어주기를 희망하는 요청을 보냅니다. 그 때 함께 보내는 정보를 HTTP 헤더라고 부릅니다.
이 HTTP 헤더를 분석하면 사용자에 대한 여러 정보를 알 수 있습니다. 예를 들어, 링크가 게시된 원래 페이지가 무엇인지, PC인지 모바일인지 어떤 운영체제를 쓰고 있는지 브라우저는 무엇인지, 프록시를 쓰고 있는지, 언어는 무엇인지 등 개인정보뿐만 아니라 압축을 할 것인지 말 것인지와 같이 기술적인 정보도 알 수 있습니다.
아래에 일반적인 HTTP 헤더의 목록을 열거하였습니다.
- Host: 호스트는 한 IP에서 여러 개의 도메인을 운용하고 있는 웹서버에 접속할 때 필요한 정보입니다.
- User-agent: 유저 에이전트는 운영체제, 웹브라우저에 대한 정보입니다.
- Accept: 사용자가 받아들일 수 있는 문서 형식을 열거합니다.
- Accept-Language: 사용자가 받아들일 수 있는 언어들을 우선하는 순서대로 열거합니다.
- Accept-Encoding: 문서 압축 여부를 선택합니다. gzip은 압축 프로토콜, deflate는 평문 전송입니다.
- DNT: Do Not Track의 머릿글자로서 사용자 추적을 허용할지의 여부에 관한 것입니다.
- Referer: 레퍼러는 어떤 링크를 눌렀을 때 그 링크가 있는 주소입니다. 예를 들어, 네이버 첫화면에서 네이버 뉴스를 눌렀다면 레퍼러는 네이버 첫화면이 됩니다. 검색어와 같은 개인정보가 포함됩니다.
- Cookie: 쿠키는 서버가 사용자를 구분할 수 있게 해주는 유일한 열쇠 문자열입니다. 서버와 사용자 둘만 비밀스럽게 알아야 합니다. 로그인에 쓰입니다.
- Connection: keep-alive를 설정하면 또 요청을 할 것에 대비하여 얼마간 연결을 끊지 않고 기다립니다.
- Cache-Control: 서버에 캐시 설정을 요청합니다.
- X-Forwarded-For: 프록시 서버가 추가하는 헤더로서 원래의 소스 IP주소를 뜻합니다. 만약 프록시 서버가 이 정보를 추가한다면 프록시 서버를 써서 IP주소를 숨기려는 시도는 소용이 없습니다.
- Via: 프록시 서버의 이름입니다.
My IP Address, Referer, User Agent, Proxy, Cookie, Privacy, Raw HTTP Headers