cURL(Client URL)은 수십 년간 대표적인 명령줄 기반 HTTP 클라이언트였습니다. API 테스트, 웹 페이지 가져오기, 파일 전송 등 웹 개발의 모든 측면에서 개발자와 관리자 모두에게 널리 사용됩니다.웹 스크래핑에서는 주로 HTTP 요청 테스트를 위해 cURL을 사용합니다.
REST(Representational State Transfer)는 API(Application Programming Interface)를 생성하는 데 사용되는 표준입니다. REST API를 사용하면 서버는GET,POST,PUT,DELETE라는 네 가지 기본 요청 유형을 처리하도록 구성됩니다. 이 메서드들은 각각 웹 서버와 상호작용하는 데 사용됩니다. 이 글에서 더 자세히 살펴보겠습니다.
시작하기
설치
현재 대부분의 주요 운영 체제에는 cURL이 사전 설치되어 있습니다. 수년간 리눅스의 필수 요소였으며, macOS와 Windows에서도 기본적으로 포함됩니다. 다음 명령어로 cURL 설치 여부를 확인할 수 있습니다.
curl --version
cURL이 제대로 설치되었다면 이와 유사한 응답을 확인할 수 있습니다. 가장 중요한 것은 --version 명령어가 버전 번호를 출력해야 한다는 점입니다. 아래 예시에서는 버전 번호가 curl 7.81.0입니다. 나머지 출력 내용은 릴리스 및 OS별 정보입니다.
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.18
Release-Date: 2022-01-05
프로토콜: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
기능: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd
어떤 이유로든 cURL이 설치되어 있지 않다면,해당 다운로드 페이지에서 운영체제에 맞는 버전을 찾을 수 있습니다.
<!–
- curl 설치 방법: 간결하게, OS별 설치 안내 링크 제공
–>
cURL 사용 방법
GET 요청 수행하기
가장 흔한 HTTP 요청은 GET 요청입니다. 정보를 가져오기 위해 GET을 사용합니다. 웹 페이지를 불러올 때 브라우저는 내부적으로 GET을 수행합니다. cURL에서는 GET 플래그를 사용해 이를 실행합니다. 아래 예시는 https://jsonplaceholder.typicode.com/posts에 GET을 전송합니다.
curl -X GET https://jsonplaceholder.typicode.com/posts
이 요청을 수행하면 응답으로 게시글 목록을 가져옵니다. 아래는 응답의 일부 예시입니다.
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipitnsuscipit recusandae consequuntur expedita et cumnreprehenderit molestiae ut ut quas totamnnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "모든 사물의 시간 속에서 삶은 아무것도 비난받지 않는 기쁨의 고통이며, 그 고통은 결코 달콤한 쾌락으로 도피하지 않으며, 오히려 아무런 괴로움도 거부할 수 없으니, 우리가 빚지지 않은 것을 열어야만 하며, 아무것도 없지 않은 한"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iurenvoluptatem occaecati omnis eligendi aut adnvoluptatem doloribus vel accusantium quis pariaturnmolestiae porro eius odio et labore et velit aut"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipiscinsit amet autem assumenda provident rerum culpanquis hic commodi nesciunt rem tenetur doloremque ipsam iurenquis sunt voluptatem rerum illo velit"
},
{
"userId": 1,
"id": 5,
"title": "nesciunt quas odio",
"body": "repudiandae veniam quaerat sunt sednalias aut fugiat sit autem sed estnvoluptatem omnis possimus esse voluptatibus quisnest aut tenetur dolor neque"
},
<!–
- GET 요청이란 무엇인가?
–>
POST 요청 수행하기
데이터베이스에 저장할 정보를 서버로 전송할 때 POST 요청을 사용합니다. 가장 흔한 예시는 소셜 미디어 게시물입니다. 아래 예시는 API를 사용하여 새 게시물을 생성하는 POST 요청을 보냅니다.
curl -X POST https://jsonplaceholder.typicode.com/posts
-H "Content-Type: application/json"
-d '{
"title": "foo",
"body": "bar",
"userId": 1
}'
요청 후, 응답으로 실제 게시물 객체를 받게 됩니다.
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}
심층적인POST요청 전송에 대해 자세히 알아보려면이 가이드를 참고하세요.
PUT 요청 수행하기
방금 배운 것처럼 POST 요청은 데이터베이스에 객체를 생성하는 데 사용됩니다. 때로는 데이터베이스에 이미 존재하는 객체를 수정하고 싶을 때가 있습니다. 기존 객체를 변경하려면 PUT 요청을 사용합니다. 아래 예시는 이전 게시글의 본문을 'bar'에서 업데이트된 'bar'로 변경합니다.
curl -X PUT https://jsonplaceholder.typicode.com/posts/1
-H "Content-Type: application/json"
-d '{
"id": 1,
"title": "foo",
"body": "updated bar",
"userId": 1
}'
이 명령을 실행하면 다음과 같은 응답을 받게 됩니다. 보시다시피 게시물의 본문이 업데이트되었습니다.
{
"id": 1,
"title": "foo",
"body": "updated bar",
"userId": 1
}
DELETE 요청 수행하기
이쯤 되면DELETE 요청은 설명이 필요 없을 정도로 명확합니다. DELETE 요청은 고유 식별자를 사용하여 데이터베이스에서 기존 객체를 제거하는 데 사용됩니다. 이 경우 식별자(id)는 1, 즉 첫 번째 게시글입니다. 아래 코드는 앞서 생성한 게시글을 제거합니다.
curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
보시다시피, 응답은 빈 JSON 객체입니다. 게시글이 삭제되었습니다.
{}
Web Unlocker와 함께 cURL 사용

Web Unlocker와 함께 cURL을 사용할 때, cURL 단독으로 사용할 때와 마찬가지로 HTTP 요청을 수행할 수 있습니다. 그러나 Web Unlocker는 프록시의 힘을 제공합니다.
Web Unlocker를 사용하면 세계 최고 수준의 프록시에서 제공하는 지오타겟팅 및 CAPTCHA 해결 기능을 이용할 수 있습니다. 무엇보다도 이러한 프록시는 자동으로 관리됩니다. 프록시를 연결하기만 하면 평소처럼 작업을 계속할 수 있습니다.
웹 언락커 설정이 완료되면 사용자 이름, 지역 이름, 비밀번호를 반드시 저장하세요. 연결 인증에 이 정보가 필요합니다. 아래 예시에서는 미국 기반 프록시를 사용하도록 연결을 설정했습니다.
curl -i --proxy brd.superproxy.io:33335 --proxy-user brd-customer-<YOUR_USERNAME>-zone-<YOUR_ZONE_NAME>-country-us:<YOUR_PASSWORD> -k "https://geo.brdtest.com/mygeo.json"
-i: 응답에 헤더를 포함하도록 cURL에 지시합니다. 디버깅에 유용합니다.--proxy brd.superproxy.io:33335 --proxy-user brd-customer-<YOUR_USERNAME>-zone-<YOUR_ZONE_NAME>-country-us:<YOUR_PASSWORD>--proxy brd.superproxy.io:33335: cURL에brd.superproxy.io:33335에위치한 프록시를 사용하도록 지시합니다.--proxy-user brd-customer-<YOUR_USERNAME>-zone-<YOUR_ZONE_NAME>-country-us:<YOUR_PASSWORD>: 이는 인증 문자열을 나타냅니다. 인증 문자열은<사용자 이름>:<비밀번호>형식으로 구성됩니다. Web Unlocker에서 전체 사용자 이름은brd-customer-<사용자 이름>-zone-<사용자 영역 이름>-country-us로구성됩니다.
k는cURL에 SSL 인증을 우회하도록 지시하는 데 사용됩니다. Web Unlocker를 장기적으로 사용하려는 경우,여기에서 당사의 SSL 인증서를 다운로드하여 설치할 수 있습니다. 이렇게 하면 사용자의 컴퓨터가 연결을 자체 인증할 수 있습니다.
아래에서 예시 응답을 확인할 수 있습니다. 보시다시피 위치가 뉴저지로 표시되고 있습니다.
{"country":"US","asn":{"asnum":20473,"org_name":"AS-VULTR"},"geo":{"city":"Piscataway","region":"NJ","region_name":"New Jersey","postal_code":"08854","latitude":40.5511,"longitude":-74.4606,"tz":"America/New_York","lum_city":"piscataway","lum_region":"nj"}}
웹 언락커에 대해 더 알고 싶다면API 플레이그라운드를 살펴보세요. 다양한 언어와 HTTP 라이브러리를 사용해 API 요청을 보내는 방법을 실험하고 배울 수 있는 훌륭한 장소입니다. 프록시와 함께 cURL을 사용하는 방법에 대한 자세한 내용은여기에서 확인할 수 있습니다.
cURL을 활용해 어디까지 갈 수 있을까요?
cURL과 HTTP에 대한 기본적인 이해를 갖추셨다면, 거의 모든 곳에서 HTTP를 활용하실 수 있습니다. 일반적인 API 테스트에는Postman이나Insomnia같은 GUI 도구를 사용하실 수 있습니다.
Python에서는Requests를사용할 수 있으며,Python 내부에서 cURL을 활용하는 방법도 있습니다. JavaScript에서는Node-Fetch나Axios를통해 HTTP 요청을 자동화할 수 있습니다.
명령줄 도구만을 고수하고 싶다면, 그에 맞는 도구들도 많이 있습니다. HTTPie와 wget을 살펴보세요. 이 두 도구 모두 훌륭한 명령줄 유틸리티이며 HTTP를 매우 잘 다룹니다.
결론
HTTP 클라이언트 분야에서 cURL은 수십 년간 명령줄 표준으로 자리잡아 왔으며, 당분간 그 지위가 흔들릴 것 같지 않습니다. 개발자든 시스템 관리자든, 이제 여러분은 기본적인 cURL 사용법과 HTTP 작동 원리에 대한 충분한 이해를 갖추게 되었습니다. cURL을 사용해파일을 다운로드하고사용자 정의 헤더를설정하는 방법도 익혔습니다. 이제 cURL과 함께 Web Unlocker를 활용하는 법을 알았으니, 어떤 작업을 하든 HTTP를 효과적으로 다룰 수 있을 것입니다. 개발자를 꿈꾸는 분이라면, 선호하는 프로그래밍 언어로 HTTP를 활용하는 방법을 배워보세요.