A picture with white and blue lettering on it

웹 스크래핑을 하거나 API를 사용할 때는 HTTP 요청을 보내고 응답을 받는 일이 핵심입니다. 요청을 더 구체적으로 지정할수록 더 정확한 데이터를 얻을 수 있습니다. 따라서 헤더가 필요합니다. 헤더는 콜론으로 구분된 키-값 쌍으로 이루어지며, 콘텐츠 유형이나 캐싱 지침처럼 추가 세부 정보를 담은 HTTP 응답의 일부입니다. 헤더를 사용하면 필요한 세부 정보를 얻거나 응답을 필터링하여 관련 없는 응답을 보지 않을 수 있습니다. 이 글에서는 cURL로 HTTP 헤더를 보내는 실용적인 기초와 이것이 작업에 어떻게 도움이 되는지 알아봅니다.

cURL을 사용하는 이유

HTTP 헤더가 무엇인지 알았으니, cURL을 간단히 살펴보겠습니다. cURL은 데이터를 대상 서버로 전송하고 다시 컴퓨터로 가져오는 사용하기 쉬운 명령줄 도구로, 헤더 전송에 적합합니다. 장점은 다음과 같습니다.

  • 가볍습니다.
  • HTTP(S), SMTP, FTP 등을 포함한 다양한 프로토콜을 지원합니다.
  • 추가 라이브러리가 필요하지 않습니다.
  • Windows, Linux, macOS처럼 널리 사용하는 운영 체제와 호환됩니다.
  • 무료로 사용할 수 있고, 미리 설치되어 있는 경우가 많습니다.
  • 상세한 문서와 방대한 사용자 커뮤니티가 있어, 어려움이 생기면 빠르게 해결책을 찾을 수 있습니다.

이 때문에 HTTP 헤더를 보낼 수 있는 수많은 다른 도구가 있어도 cURL은 매우 널리 활용됩니다.

HTTP 헤더를 보내야 하는 경우

도구들을 모두 익혔으니 HTTP 헤더 전송의 사용 사례를 살펴보겠습니다.

  • 인증 및 권한 부여

API를 호출하거나 권한 부여가 필요한 콘텐츠를 요청할 때는 데이터를 얻기 위해 토큰 등을 제공해야 할 수 있습니다. cURL로 Authorization 헤더를 보내면 서버가 접근을 허용하는 데 필요한 정보를 제공합니다. 요청에서 -H 옵션을 사용해야 합니다. 아래에서는 특수 요청 및 응답 서비스인 httpbin.org에 보내는 cURL 요청 예시를 볼 수 있습니다.

  • 콘텐츠 협상

JSON 또는 XML 같은 특정 형식의 콘텐츠를 보내고 서버가 이를 올바르게 해석해야 한다면, 요청에 Content-type HTTP 헤더를 포함해야 합니다. 대상 서버는 오류나 지연 가능성을 최소화하도록 콘텐츠를 처리하는 방법을 알게 됩니다.

  • CORS(교차 출처 리소스 공유)

애플리케이션은 접근을 시도하는 주체에 따라 서비스나 데이터에 대한 접근 권한을 부여할 수 있습니다. 요청의 출처가 중요한 이러한 상황에서는 Origin HTTP 헤더에 출처를 지정할 수 있습니다. 인증과 혼동하지 마십시오. 두 사용 사례는 비슷하고 함께 사용되는 경우가 많지만 서로 다릅니다.

  • user-agent 지정

모바일 또는 웹 앱, API 등의 클라이언트 유형도 받는 응답에 영향을 줍니다. 요청에서 클라이언트 유형을 정의하여 필요한 응답을 받을 수 있습니다.

  • 캐시 제어 설정 조정

많은 상황에서 캐시 설정 관리는 필수이며, HTTP 헤더가 이에 도움이 될 수 있습니다. 요청에 Cache-control 헤더를 포함하고 그 값을 지정하기만 하면 됩니다. 정의한 설정에 따라 응답이 캐시됩니다.

  • 사용자 지정 요청 보내기

사용하는 앱에서 요청을 처리하거나 원하는 작업을 수행하기 위해 사용자 지정 헤더를 요구하는 경우가 있습니다. 이 경우 요청에 해당 헤더를 포함해야 합니다. 때로는 취약점과 공격으로부터 보호하기 위해 이러한 헤더가 필요합니다. 어떤 사용자 지정 헤더를 사용할 수 있고 필요한지 알기 위해 앱을 사용하기 전에 문서를 읽어야 합니다.

  • 조건부 요청 보내기

특정 조건에 맞는 데이터만 필요하다면 조건부 헤더를 사용해야 합니다. 이러한 헤더는 필요한 데이터만 가져와 시간을 절약하고, 불필요한 정보를 로드하는 데 GB를 낭비하지 않아 대역폭도 절약합니다. If-Match 또는 If-Modified-Since가 이러한 헤더의 예입니다.

cURL: 기타 기능

  • 여러 헤더를 보내는 방법

하나의 요청과 관련해 여러 헤더를 보내야 할 때가 있습니다. 이 경우 같은 cURL 명령으로 모두 나열할 수 있습니다. 새 키-값 쌍을 입력할 때마다 H 옵션을 사용해야 한다는 점을 기억하십시오.

  • 응답 헤더를 확인하는 방법

대상 서버의 응답 헤더를 확인하면 문제 해결과 성능 모니터링에 유용합니다. 요청 처리에 걸린 시간이나 인증 문제가 있었는지에 관한 정보를 제공합니다. -I 또는 –head 옵션을 사용하여 확인할 수 있습니다. 두 옵션 모두 헤더만 표시합니다.

헤더와 콘텐츠를 모두 보려면 -i 또는 –include 옵션을 사용하십시오.

  • 빈 헤더를 보내는 방법

일부 API는 헤더에 값이 없어도 요청에 특정 헤더를 요구합니다. 때로 빈 헤더는 헤더가 특정 방식으로 작동하게 합니다. 개발자는 서버가 그러한 상황에 어떻게 반응하는지 확인하고 해커가 악용할 허점이 없는지도 점검하기 위해 이를 사용합니다. 이러한 헤더를 보내려면 값 없이 이름 뒤에 세미콜론을 붙이십시오.

  • 헤더를 제거하는 방법

cURL은 User-Agent 헤더처럼 일부 헤더를 기본으로 추가합니다. 필요하지 않아 제거하려면 헤더 이름 뒤에 콜론을 입력하고 값을 제공하지 마십시오.

  • 상세 출력 모드를 활성화하는 방법

이 기능은 서버가 요청을 어떻게 처리하는지 이해해야 할 때 사용합니다. 이 모드를 활성화하면 cURL은 요청 및 응답 세부 정보, HTTP 메서드, 버전, 상태 코드, 연결 과정 정보 등을 포함한 많은 세부 정보를 제공합니다. 이 모드는 통신의 각 단계에 관한 정보를 제공하므로 디버깅에 유용합니다. -v 또는 –verbose 옵션으로 활성화할 수 있습니다.

  • 헤더를 저장하는 방법

디버깅과 성능 모니터링에서는 분석과 기록 보존을 위해 헤더를 저장해야 하는 경우가 많습니다. 따라서 헤더를 파일에 저장하여 나중에 사용할 수 있습니다. 방법은 다음과 같습니다.

  1. -d 또는 –dump-header 옵션을 사용합니다.
  2. 요청의 콘텐츠도 저장해야 한다면 -o 또는 –output 옵션을 추가합니다.
  3. 명령 뒤에 컴퓨터가 헤더를 저장할 파일 이름을 지정하는 것을 잊지 마십시오.

참고: 일반적으로 HTTP 헤더는 대소문자를 구분하지 않습니다. 하지만 때로 API는 특정 헤더를 기대하며 대문자 표기를 사용해야만 작동합니다. 따라서 헤더를 보내기 전에 문서를 주의 깊게 확인해야 합니다.

cURL로 HTTP 헤더를 보내기 위한 프록시

웹 스크래핑을 하거나 수많은 요청을 보내야 하는 기타 작업을 수행할 때 요청 제한이나 지역 기반 차단 같은 문제에 직면할 수 있습니다. 이 경우 프록시는 전 세계에서 안정적인 접근을 보장하는 데 도움이 되는 조력자입니다. 예를 들어, DataImpulse는 cURL을 포함한 다른 도구와 통합하고 사용하기 쉬운 윤리적으로 확보한 프록시를 제공합니다. 이렇게 하면 제한에 부딪히지 않고 필요한 만큼 요청을 보낼 수 있습니다.

마무리

데이터를 얻기 위해 언제나 특별하거나 비싼 도구가 필요한 것은 아닙니다. cURL은 무료로 사용할 수 있으며, 불필요한 세부 정보 없이 빠르게 정보를 얻도록 요청을 지정할 수 있게 해 줍니다. 이 과정을 더욱 효과적으로 만들려면 cURL을 DataImpulse 프록시와 결합할 수 있습니다. 당사는 부담 없는 종량제 가격 모델로 응답 시간이 1초인 프록시를 제공합니다. 화면 오른쪽 상단의 “지금 사용해 보기” 버튼을 클릭하거나 [email protected]으로 문의하십시오.

Share article: