# HTTP 및 SOCKS5 프록시와 curl: 복사-붙여넣기 예제

> curl 프록시 예제: -x 및 -U, SOCKS5는 --socks5-hostname, 지속 세션, CONNECT 상태 및 -w 타이밍, Windows의 curl.exe.

- URL: https://crawlrelay.com/ko/docs/curl/
- 마지막 업데이트: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

curl은 스크레이퍼 작업 전에 자격 증명, 타깃팅, 타이밍을 빠르게 테스트하는 가장 빠른 방법입니다. 아래 모든 명령은 USERNAME과 PASSWORD만 바꾸면 바로 실행됩니다.

**빠른 답변 — curl에서 프록시를 어떻게 사용하나요?**

HTTP 프록시는 `curl -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://api.ipify.org`를, SOCKS5는 `--socks5-hostname gw.crawlrelay.com:7778`와 `-U USERNAME:PASSWORD`를 사용하세요. **CrawlRelay** 레지덴셜 프록시는 사용자 이름에 국가와 지속 세션이 포함되며, 예를 들어 `USERNAME-country-de-session-t1-ttl-10`같은 형태입니다. US$0.50/GB부터는 KYC 없이 암호화폐로 결제 가능합니다.

## 필요한 curl 플래그

| 속성 | 값 |
| --- | --- |
| `-x` / `--proxy` | 프록시 URL: `http://host:port`, 인증 정보는 선택 사항 |
| `-U` / `--proxy-user` | 프록시 인증 정보는 `USERNAME:PASSWORD`로 URL 밖에서 관리 |
| `--socks5-hostname` | DNS가 출구에서 해결되는 SOCKS5 프록시 |
| `-v` | CONNECT 교환과 프록시 상태 라인을 보여줌 |
| `-w` | 타이밍, 크기 및 `%{http_connect}`, 프록시의 CONNECT 상태를 출력함 |
| `--max-time`, `--connect-timeout` | 총 시간과 연결 시간 제한, 단위는 초 |

## 기본 프록시 명령어는 무엇인가요?

각 명령어는 웹사이트가 보는 출구 IP를 출력합니다.

*HTTP 프록시, 로테이션, 이후 타겟팅 및 스티키*

```bash
# Rotating exit, any country
curl -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://api.ipify.org

# Country and city (city availability varies)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-city-chicago:PASSWORD https://api.ipify.org

# Sticky: run it twice, the IP stays the same for up to 10 minutes (it can change earlier)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-de-session-t1-ttl-10:PASSWORD https://api.ipify.org

# SOCKS5, DNS resolved at the exit
curl --socks5-hostname gw.crawlrelay.com:7778 -U USERNAME-country-gb:PASSWORD https://api.ipify.org
```

## curl로 프록시 연결을 디버그하는 방법은?

`-v`으로 실행하고 `CONNECT` 근처 라인을 읽으세요. 작동하는 터널은 `HTTP/1.1 200 Connection established`를 보여주며, 그 다음에 웹사이트와 TLS 핸드셰이크가 진행됩니다. 라인의 다른 상태는 모두 프록시에서 온 것으로, 407은 인증 정보, 502 또는 504는 출구 또는 타겟 문제입니다. 아래 `-w` 형식은 동일 정보를 한 줄로 출력하여 반복문과 CI 체크에 편리합니다.

*상세 CONNECT 및 한 줄 타이밍 보고서*

```bash
# Full exchange, including the proxy's answer to CONNECT
curl -v -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://example.com/ -o /dev/null

# One line: proxy CONNECT status, HTTP status, compressed bytes and timings
curl -s --compressed -o /dev/null -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD \
  -w 'connect=%{http_connect} http=%{http_code} bytes=%{size_download} tcp=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n' \
  https://example.com/
```

## 로테이션과 세션이 제대로 작동하는지 어떻게 확인하나요?

IP를 여러 번 요청하세요. 세션 ID 없이 실행하면 매번 새로운 연결이며 일반적으로 다른 IP가 표시됩니다. 세션 ID가 있으면 TTL이 만료될 때까지 IP가 유지되지만 더 일찍 바뀔 수도 있습니다.

*셸 루프에서 로테이션 vs 스티키*

```bash
echo "rotating:"
for i in 1 2 3 4 5; do
  curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD https://api.ipify.org; echo
done

echo "sticky:"
for i in 1 2 3 4 5; do
  curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-session-loop1-ttl-5:PASSWORD https://api.ipify.org; echo
done
```

## Windows에서 curl을 프록시와 함께 사용하려면?

`curl.exe`을 호출하고 `curl`은 호출하지 마세요. Windows PowerShell 5.1에서는 `curl`가 `Invoke-WebRequest`의 별칭이며 `-x`나 `-U`를 이해하지 못합니다. Windows 10과 11에는 진짜 curl이 `curl.exe`로 포함되어 있습니다. PowerShell에서는 특수 문자가 포함된 인자를 따옴표로 감싸고, 비밀번호 안에 있는 리터럴 `$`은 단일 인용부호 안에 작성하세요.

*PowerShell*

```powershell
curl.exe -x http://gw.crawlrelay.com:7777 -U 'USERNAME-country-fr:PASSWORD' https://api.ipify.org
```

## 명령어마다 프록시를 한 번만 설정하는 방법은?

curl은 `https_proxy`과 `http_proxy` 환경변수를 읽으며, 많은 다른 도구들도 이를 읽습니다. 셸 세션 동안 설정하고, 자신의 API 같은 프록시를 통하지 말아야 할 호스트를 위해 `NO_PROXY`를 사용하세요. 공유 머신에서는 비밀번호를 모든 자식 프로세스에 내보내는 변수로 두지 마세요.

*환경변수 (bash, zsh)*

```bash
export https_proxy="http://USERNAME-country-us:PASSWORD@gw.crawlrelay.com:7777"
export http_proxy="$https_proxy"
export NO_PROXY="localhost,127.0.0.1,.internal.example"

curl https://api.ipify.org   # now uses the proxy
unset https_proxy http_proxy # back to direct
```

## curl과 프록시에 대해 자주 묻는 질문

### --socks5와 --socks5-hostname의 차이는?

`--socks5`를 사용하면 curl이 내 로컬 머신에서 호스트명을 해결하고 IP 주소를 프록시에 보냅니다. `--socks5-hostname`을 사용하면 호스트명을 그대로 보내 프록시 측에서 해결합니다. 스크래핑 시 `--socks5-hostname`를 사용하면 DNS 답변이 출구 국가와 일치해 로컬 DNS가 가져오는 도메인을 보지 못합니다.

### curl에서 'CONNECT tunnel failed, response 407'가 왜 나오나요?

프록시가 인증을 거부했거나 인증 정보를 받지 못한 경우입니다. 사용자명과 비밀번호를 확인하고, `-x` URL 내부의 특수 문자는 URL 인코딩하거나 `-U`로 전달하세요. [407 페이지](https://crawlrelay.com/ko/docs/errors/407-proxy-authentication-required/)에는 다른 원인도 나와 있습니다.

### 프록시를 통해 페이지가 몇 바이트인지 확인하려면?

`--compressed -o /dev/null -w '%{size_download}\n'`를 추가하세요. `--compressed`은 curl이 스크래퍼처럼 gzip 또는 brotli 압축을 요청하게 하고, `%{size_download}`는 압축된 바이트 수를 세어줍니다. 없으면 서버가 페이지를 압축하지 않고 보내며 크기가 훨씬 클 수 있습니다. 실제 페이지 몇 개에 실행해 1,000페이지당 트래픽을 예측하세요.

### curl이 프록시를 통해 HTTP/2 또는 HTTP/3를 사용할 수 있나요?

HTTP/2는 웹사이트가 지원하면 CONNECT 터널 내부에서 작동합니다. 터널이 종단 간 TLS를 전달하기 때문입니다. HTTP/3는 UDP를 사용하며, HTTP 프록시의 CONNECT 터널은 UDP를 통과시키지 않으므로 게이트웨이에서 HTTP/2 또는 HTTP/1.1을 사용하세요.

**명령줄에서 타겟을 테스트하세요** US$1.50 for 1 GB, 수천 건의 curl 테스트에 충분합니다. [1 GB 선택](https://crawlrelay.com/app/checkout/?plan=res-1&product=residential&lang=ko) · [오류 참조](https://crawlrelay.com/ko/docs/errors/)

---

CrawlRelay: CrawlRelay는 개발자 중심의 회전형 레지덴셜 프록시 및 4G/5G 모바일 프록시 서비스로, 스크래퍼와 AI 데이터 파이프라인을 위한 비만료 선불 과금 트래픽을 US$0.50/GB부터 암호화폐로 결제하며 신분증 업로드가 없습니다. KYC 없이 — 신분증, 셀카, 문서 없이 이용 가능. 암호화폐로 결제하세요.
