이 글에서는 다음을 다룹니다:
- curl이란 무엇인가
- curl 설치 방법
- 프록시 사용을 시작하기 위해 필요한 사항
- curl에서 HTTP/HTTPS 프록시 지정 방법
- curl에서 SOCKS 프록시 설정 방법
- 알아두면 좋은 팁과 요령
- curl에 가장 적합한 프록시는 무엇입니까?
cURL이란 무엇인가요?
cURL은 “Client URL”의 약자로, URL을 사용하여 인터넷을 통해 데이터를 송수신하는 도구입니다. 소프트웨어 프로젝트로서 라이브러리(libcurl)와 명령줄 도구(curl)를 모두 제공합니다. 여기서는 URL 구문을 통해 데이터를 전송하는 명령줄 도구인 curl에 초점을 맞출 것입니다.
이 프로젝트는 HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP 등 다양한 프로토콜을 지원합니다. 이로 인해 curl은 세계에서 가장 인기 있고 널리 사용되는 명령줄 HTTP 클라이언트가 되었습니다.
cURL은 매우 다재다능하며 HTTP 요청 수행, 파일 다운로드, 데이터 업로드, API 상호작용 등 다양한 작업을 수행하는 일반적인 솔루션입니다. 요청 맞춤 설정부터 프록시 지원에 이르기까지 여러 기능을 제공합니다.
cURL 설치하기
이제 여러분의 컴퓨터에 curl을 설치하는 방법을 알아보겠습니다.
macOS
macOS에서는 curl을 설치할 필요가 없습니다. 이 도구는 운영 체제에 이미 포함되어 있으며 터미널 애플리케이션에서 기본적으로 사용할 수 있습니다.
Windows
Windows 10부터 Windows에는 curl이 포함되어 있습니다. 동시에 curl 명령어는 PowerShell Invoke-WebRequest 명령어의 별칭입니다. 즉, Windows 터미널에서 curl 명령어를 실행하면 백그라운드에서 Invoke-Request가 호출됩니다. 이를 피하고 cURL의 curl을 실제로 사용하려면 “curl”을 “curl.exe”로 대체하세요. 이렇게 하면 PowerShell이 Invoke-Request가 아닌 curl을 실행합니다.
예를 들어, 터미널에서 Windows 머신에 설치된 curl의 현재 버전을 확인하려면 다음을 실행하세요:
curl.exe --version
그러면 다음과 유사한 결과가 출력됩니다:
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets
Windows 사용자라면, 본 문서의 명령어에서 모든 “curl” 인스턴스를 “curl.exe” 문자열로 대체하십시오. 그렇지 않은 경우, Windows Subsystem for Linux(WSL)를 설정하고 아래 지침을 따르십시오.
리눅스
Linux에서 curl 설치 절차는 사용 중인 배포판에 따라 다릅니다. Ubuntu, Fedora 등 인기 있는 Linux 배포판에는 기본적으로 포함되어 있으므로 터미널에서 바로 curl을 사용할 수 있습니다.
다른 배포판에서는 curl이 포함되지 않을 수 있습니다. 이 경우 배포판 패키지 관리자를 사용하여 추가할 수 있습니다. Debian 기반 OS에서는 다음 명령어로 curl을 설치할 수 있습니다:
sudo apt-get install curl
curl에서 프록시 사용 시 필요한 사항
프록시는 클라이언트와 대상 서버 사이의 중개자 역할을 합니다. 클라이언트의 요청을 가로채서 서버로 전달하고, 서버의 응답을 수신하여 클라이언트에게 다시 보냅니다. 이러한 중개자 방식은 익명성을 높이고 네트워크 제한을 우회하는 데 도움이 됩니다. 대상 서버는 요청이 선택한 프록시 서버의 IP와 위치에서 온 것으로 인식하기 때문입니다.
프록시 서비스와 함께 curl 사용을 시작하려면 먼저 프록시 접근 권한이 필요합니다. 구체적으로 프록시 URL 구문은 다음과 같습니다:
[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
이것은 다음과 같이 구성됩니다:
<PROTOCOL>: 프록시 서버에 연결할 때 사용할 프로토콜입니다. 프로토콜이 지정되지 않으면 curl은 기본적으로 http://을 사용합니다.<HOST>: 프록시 서버의 호스트 이름에 대한 필수 IP 주소 또는 URL입니다.<PORT>: 프록시 서버가 수신 대기 중인 포트 번호입니다. 포트가 지정되지 않으면 curl은 기본적으로 1080을 사용합니다.<USERNAME>: 인증이 필요할 때 지정하는 선택적 사용자 이름입니다.<PASSWORD>: 인증이 필요할 때 지정하는 선택적 비밀번호입니다.
프록시 프로토콜의 경우 가장 널리 사용되는 것은 HTTP와 HTTPS이며, 그 다음으로 SOCKS가 있습니다.
이제 유효한 HTTP 프록시를 찾아볼 시간입니다!
아래와 같이 Free Proxy List에서 무료로 얻을 수 있습니다:
IP 주소: 71.19.249.97; 포트: 8443
즉, 프록시 URL은 다음과 같습니다:
http://71.19.249.97:8443
학습 목적으로는 이러한 해결책을 선택해도 괜찮지만, 실제 상황에서는 의존해서는 안 됩니다. 무료 프록시 서비스는 신뢰할 수 없고, 오류가 발생하기 쉬우며, 속도가 느리고, 데이터를 많이 소모하며, 수명이 짧습니다. 사용하지 마세요!
해결책은? 시장 최고의 공급업체인 Bright Data의 프리미엄 프록시입니다. 구독하고 신뢰할 수 있는 프록시를 무료로 사용해 보세요.
프리미엄 솔루션은 인증으로 보호된다는 점을 명심하세요. 프로토콜이 HTTP, 호스트가 71.103.203.109, 포트가 9321이고, 인증 정보 쌍이 admin-32458과 rTuJ3tEwf라고 가정합니다. 이 경우 curl 프록시 URL은 다음과 같습니다:
http://admin-32458:@rTuJ3tEwf71.103.203.109:9321
curl에서 HTTP/HTTPS 프록시 지정 방법
시작하기 전에 터미널에서 아래 명령어를 실행하세요:
curl "https://httpbin.org/ip"
보시다시피, 기본 curl 구문은 다음과 같습니다:
curl [선택적 명령어] <URL>
curl 모범 사례에 따르면 특수 문자 관련 문제를 방지하기 위해 URL을 큰따옴표(“”)로 묶는 것이 좋습니다.
실행하면 다음과 같은 결과가 표시됩니다:
{
"origin": "194.33.243.7"
}
HTTPBin 프로젝트는 HTTP 요청에 대한 정보를 얻을 수 있게 해줍니다. 구체적으로, /ip 엔드포인트는 요청의 원본 IP(즉, 요청을 수행한 머신의 IP 주소)를 반환합니다. 다시 말해, 여러분의 IP를 반환합니다.
curl에서 프록시를 설정하면 사용자의 IP가 아닌 프록시 서버의 IP 주소가 표시됩니다.
curl에서 프록시를 설정하는 방법은 여러 가지가 있습니다. 이제 curl에서 HTTP/HTTPS 프록시를 지정하는 가장 일반적인 방법들을 살펴보겠습니다.
명령줄 인수 사용
curl은 프록시 URL을 설정하기 위한 두 가지 명령줄 인수를 제공합니다:
-x--proxy
두 옵션은 동일한 기능을 수행하므로 상호 교환하여 사용할 수 있습니다. 후자는 전자의 별칭에 불과합니다.
따라서 프록시 서비스와 함께 curl을 사용하는 구문은 다음과 같습니다:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
또는:
curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
참고: curl에서 명령줄 옵션은 대소문자를 구분합니다. 예를 들어, -x와 -X는 서로 다른 의미를 가집니다.
이제 다음을 실행하면:
curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"
또는 동등한 명령:
curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"
다음과 같은 결과를 얻을 수 있습니다:
{
"origin": "71.19.249.97"
}
원본(origin)이 프록시 서버 IP와 일치합니다. 이는 대상 사이트가 요청을 원하는 대로 프록시에서 온 것으로 인식한다는 의미입니다. 훌륭합니다!
무료 프록시는 수명이 짧다는 점을 잊지 마십시오. 따라서 이 글을 읽을 때쯤이면 위 서버가 여전히 작동 중일 가능성은 낮습니다. 오류가 발생하면 새로운 프록시로 교체하십시오.
환경 변수 사용
curl에서 프록시를 사용하는 또 다른 방법은 다음 두 환경 변수를 설정하는 것입니다:
http_proxy: HTTP 프로토콜을 사용하는 URL에 접근할 때 사용할 프록시 서버의 URL.https_proxy: HTTP 프로토콜을 사용하는 URL에 접근할 때 사용할 프록시 서버의 URL.
macOS 및 Linux에서는 아래 구문으로 두 환경 변수를 설정할 수 있습니다:
export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
따라서 두 명령어는 다음과 같이 변경됩니다:
export http_proxy="http://71.19.249.97:8443"
export https_proxy="http://71.19.249.97:8443"
Windows에서는 다음 PowerShell 구문을 사용해야 합니다:
$env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
그러면 예시에서는 다음과 같습니다:
$env:http_proxy = "http://71.19.249.97:8443"
$env:https_proxy = "http://71.19.249.97:8443"
이제부터 모든 curl 명령어는 -x 옵션을 사용하지 않아도 지정된 프록시를 통해 전송됩니다:
다시 실행하면 다음과 같은 결과가 반환됩니다:
curl https://httpbin.org/ip
{
"origin": "71.19.249.97"
}
curl 프록시를 해제하려면 환경 변수를 다음과 같이 해제하세요:
unset http_proxy
unset https_proxy
Windows에서는 다음과 같이 설정합니다:
$env:http_proxy = ""
$env:https_proxy = ""
그러면curl이 기본 동작으로 복귀하며 https://httpbin.org/ip에 접속 시 사용자의 IP가 반환됩니다.
구성 파일 사용
.curlrc 구성 파일을 생성하여 curl에 대한 프록시를 전역적으로 지정할 수 있습니다.
Linux 및 macOS에서는 터미널을 열고 홈 디렉터리로 이동하세요:
cd ~
그런 다음 nano로 .curlrc 파일을 엽니다:
nano .curlrc
파일이 이미 존재하면 열립니다. 존재하지 않으면 먼저 생성된 후 열립니다.
.curlrc 파일에 다음 줄을 추가하세요:
proxy="http://71.19.249.97:8443"
이 지시문의 구문은 다음과 같습니다:
proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
파일을 저장하고 터미널을 닫은 후 다시 실행하세요.
Windows에서는 동일한 내용으로 %APPDATA% 디렉터리 내에 _curlrc 파일을 생성해야 합니다. 파일 탐색기 주소 표시줄에 %APPDATA%를 붙여넣고 Enter 키를 눌러 해당 디렉터리에 접근하세요.

그러면 C:Users<사용자명>AppDataRoaming 디렉터리로 이동합니다.
이제 curl은 구성 파일에 지정된 프록시를 자동으로 사용합니다:
curl "http://httpbin.org/ip"
다음과 같은 결과가 표시됩니다:
{
"origin": "71.19.249.97"
}
훌륭합니다! 이제 프록시 서버와 함께 curl을 사용하는 세 가지 방법을 배웠습니다!
curl에서 SOCKS 프록시 설정 방법
SOCKS 프록시를 사용하려면 명령어 구조는 동일합니다:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
주요 차이점은 <PROTOCOL> 이 http나 https 대신 socks4, socks4a, socks5, 또는 socks5h가 된다는 점입니다.
실제 curl SOCKS 프록시 사용 예시는 다음과 같습니다:
curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"
예상대로 결과는 다음과 같습니다:
{
"origin": "94.14.109.54"
}
대안으로 –x 대신 --socks4, --socks4a, --socks5 명령줄 옵션을 사용할 수 있습니다. 이 경우 옵션 뒤에 사용자명과 비밀번호 없이 프록시 URL을 설정하고, --proxy-user 뒤에 인증 정보를 입력해야 합니다:
curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>
예시:
curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3
이 명령어는 93.16.238.41:8721 소크스4 프록시를 통해 HTTPBin에 연결하며, 인증을 위해 admin334를 사용자 이름으로, kv4NsDgc3를 비밀번호로 사용합니다.
알아두면 좋은 팁과 요령
이 섹션에서는 전문가처럼 curl 프록시를 다루기 위한 몇 가지 흥미로운 트릭과 유용한 팁을 확인할 수 있습니다.
프록시 빠르게 켜고 끄기
여기서 아이디어는 사용자 정의 명령을 통해 환경 변수를 사용하여 프로キシ를 프로그래밍 방식으로 설정하고 해제하기 위한 별칭을 정의하는 것입니다.
macOS 및 Linux에서는 .bashrc 파일을 생성하여 이를 수행할 수 있습니다. 이 파일은 사용자가 로그인할 때마다 실행되는 스크립트 파일입니다.
홈 폴더로 이동하세요:
cd ~
그런 다음 .bashrc 파일을 생성하거나 엽니다:
nano .bashrc
아래 형식으로 내용을 파일에 추가하세요:
alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'"
alias proxyoff="unset http_proxy;unset https_proxy"
따라서, 본 예시에서는 다음과 같습니다:
alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'"
alias proxyoff="unset http_proxy;unset https_proxy"
파일을 저장하고 시스템을 재시작하세요.
이제 다음 명령어로 curl 프록시를 활성화 및 비활성화할 수 있습니다:
proxyon
curl "http://httpbin.org/ip"
# 기타 HTTP 요청...
proxyoff
사용자 정의 proxyon 및 proxyoff 명령어를 참고하세요. 이 명령어들은 .bashrc 파일의 별칭에 지정된 작업을 수행합니다.
Windows에서는 PowerShell 별칭을 사용해 유사한 기능을 구현할 수 있습니다.
단일 요청에 대한 프록시 무시
특정 요청에 대해 curl이 설정된 프록시를 사용하지 않도록 하려면 아래와 같이 --noproxy "*” 인수를 사용할 수 있습니다:
curl --noproxy "*" <URL>
이는 curl이 모든 URL에 대해 프록시를 사용하지 않도록 지시합니다.
프록시를 설정하고 실행하세요:
curl --noproxy "*" "https://httpbin.org/ip"
결과적으로 원본(Origin)에는 프록시 서버의 IP가 아닌 사용자의 IP가 포함됩니다.
SSL 인증서 오류 방지
curl에서 프록시를 사용할 때 SSL 인증서 오류로 인해 요청이 실패할 수 있습니다. 이를 방지하려면 아래 구문과 같이 -k 옵션을 사용하세요:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>
-k 옵션은 SSL을 통한 비보안 서버 연결을 허용하여 인증서 오류를 방지합니다.
예를 들어, SSL 문제를 우회하여 HTTPBin에 접속하려면 다음과 같이 입력하세요:
curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"
요청에 대한 추가 정보 확인
curl에서 요청이 실패하면 원인을 파악하기 어렵습니다. 오류를 진단하고 curl이 수행한 모든 작업을 확인하려면 -v 옵션을 설정하세요:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>
이렇게 하면 도구가 사용한 연결 및 헤더에 대한 세부 정보가 출력됩니다:
$curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip"
* Trying 71.19.249.97:8443...
* 71.19.249.97 (71.19.249.97) 포트 8443 (#0)에 연결됨
* 연결 버퍼 할당
* httpbin.org:443으로 HTTP 프록시 터널 설정
> CONNECT httpbin.org:443 HTTP/1.1
> Host: httpbin.org:443
> User-Agent: curl/8.0.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 OK
<
* CONNECT 단계 완료
* CONNECT 터널 설정 완료, 응답 200
* schannel: 클라이언트 인증서 자동 사용 비활성화
* ALPN: http/1.1 제안
* ALPN: 서버가 http/1.1 수락
* HTTP/1.1 사용 중
> GET /ip HTTP/1.1
> Host: httpbin.org
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 26 Aug 2023 10:39:13 GMT
< Content-Type: application/json
< Content-Length: 31
< Connection: keep-alive
< Server: gunicorn/19.9.0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
<
{
"origin": "71.19.249.97"
}
* 호스트 71.19.249.97에 대한 연결 #0은 그대로 유지됨
curl에 가장 적합한 프록시는 무엇인가요?
이 질문에 대한 답은 사용자의 사용 사례와 수행해야 하는 curl 요청의 특성에 따라 달라집니다. 필요에 맞는 올바른 솔루션을 찾으려면 사용 가능한 다양한 유형의 프록시를 살펴보세요:
- 데이터센터 프록시: 속도는 빠르지만 식별 가능한 IP 범위로 인해 사이트에 쉽게 탐지 및 차단될 수 있습니다.
- 주거용 프록시: 특정 지역의 실제 기기에서 제공되는 IP 주소를 사용하므로 높은 수준의 익명성을 보장합니다. 주거용 프록시는 지역 제한 차단이나 봇 방지 조치를 적용하는 사이트 접근 및 curl을 통한 웹 스크래핑에 완벽합니다.
- ISP 프록시: ISP에 등록된 기기의 IP를 제공하므로 빠르고 안전하며 매우 안정적입니다. SEO 모니터링, 웹 브라우징, 시장 조사에 완벽한 솔루션입니다.
이것은 간략한 요약일 뿐이며, 프록시 IP 유형에 대한 가이드에서 더 자세한 내용을 확인할 수 있습니다.
결론
이 cURL 프록시 가이드에서는 cURL의 정의, 기능, HTTP/HTTPS/SOCKS 프록시 설정 방법을 학습했습니다. 무료 제공업체의 프록시 서비스로는 cURL을 신뢰할 수 없다는 점이 밝혀졌습니다. 따라서 핵심 기술적 결정은 어떤 프록시 제공업체를 채택할지입니다. 시간과 노력을 절약하고 시장에서 최고의 선택인 Bright Data를 선택하세요.
Bright Data는 포춘 500대 기업 및 20,000명 이상의 고객에게 서비스를 제공하는 세계 최고의 프록시 서버를 운영합니다. 전 세계 프록시 네트워크는 다음과 같습니다:
- 데이터센터 프록시 – 77만 개 이상의 데이터센터 IP.
- 주거용 프록시 – 195개국 이상에 걸쳐 7,200만 개 이상의 주거용 IP.
- ISP 프록시 – 70만 개 이상의 ISP IP 주소.
종합적으로, 이는 시장에서 가장 크고 신뢰할 수 있는 스크래핑 전용 프록시 네트워크 중 하나입니다. 최대 규모의 프록시 네트워크에 가입하고 무료 체험을 시작하세요.