빠른 답변
curl에서 프록시를 어떻게 사용하나요?
HTTP 프록시는 curl -x http://USERNAME:[email protected]: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를 출력합니다.
# 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.orgcurl로 프록시 연결을 디버그하는 방법은?
-v으로 실행하고 CONNECT 근처 라인을 읽으세요. 작동하는 터널은 HTTP/1.1 200 Connection established를 보여주며, 그 다음에 웹사이트와 TLS 핸드셰이크가 진행됩니다. 라인의 다른 상태는 모두 프록시에서 온 것으로, 407은 인증 정보, 502 또는 504는 출구 또는 타겟 문제입니다. 아래 -w 형식은 동일 정보를 한 줄로 출력하여 반복문과 CI 체크에 편리합니다.
# 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가 유지되지만 더 일찍 바뀔 수도 있습니다.
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
doneWindows에서 curl을 프록시와 함께 사용하려면?
curl.exe을 호출하고 curl은 호출하지 마세요. Windows PowerShell 5.1에서는 curl가 Invoke-WebRequest의 별칭이며 -x나 -U를 이해하지 못합니다. Windows 10과 11에는 진짜 curl이 curl.exe로 포함되어 있습니다. 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를 사용하세요. 공유 머신에서는 비밀번호를 모든 자식 프로세스에 내보내는 변수로 두지 마세요.
export https_proxy="http://USERNAME-country-us:[email protected]: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 directcurl과 프록시에 대해 자주 묻는 질문
--socks5와 --socks5-hostname의 차이는?
--socks5를 사용하면 curl이 내 로컬 머신에서 호스트명을 해결하고 IP 주소를 프록시에 보냅니다. --socks5-hostname을 사용하면 호스트명을 그대로 보내 프록시 측에서 해결합니다. 스크래핑 시 --socks5-hostname를 사용하면 DNS 답변이 출구 국가와 일치해 로컬 DNS가 가져오는 도메인을 보지 못합니다.
curl에서 'CONNECT tunnel failed, response 407'가 왜 나오나요?
프록시가 인증을 거부했거나 인증 정보를 받지 못한 경우입니다. 사용자명과 비밀번호를 확인하고, -x URL 내부의 특수 문자는 URL 인코딩하거나 -U로 전달하세요. 407 페이지에는 다른 원인도 나와 있습니다.
프록시를 통해 페이지가 몇 바이트인지 확인하려면?
--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 테스트에 충분합니다.