KYC 없이 — 신분증, 셀카, 문서 없이. 암호화폐로 결제: BTC, USDT, USDC, ETH, SOL, LTC
언어: 한국어
시작하기

프록시 오류 참조 · 브라우저 및 클라이언트 오류

ProxyError: Python에서 '프록시 연결 불가' 및 Node.js

클라이언트 라이브러리 오류 (Python, Node.js): 각 도구에서 정확한 메시지, 가능한 원인들의 순서, 그리고 효과적인 해결 방법.

마지막 업데이트: · 4 분 읽기

빠른 답변

프록시에서 Cannot connect to proxy (ProxyError)는 무엇을 의미하나요?

'프록시 연결 불가'는 래퍼 오류입니다: Python의 requests와 urllib3가 실제 원인을 내부에 담고 있습니다. 가장 안쪽 원인을 확인하세요. '연결 거부됨' 또는 시간 초과는 호스트, 포트 또는 네트워크 문제를 뜻하며; '해결 실패'는 DNS 문제; '터널 연결 실패: 407'은 인증 정보 문제입니다. CrawlRelay에서는 각각을 한 줄로 해결할 수 있습니다.

Cannot connect to proxy (ProxyError) 한눈에 보기

오류Cannot connect to proxy (ProxyError)
유형클라이언트 라이브러리 오류 (Python, Node.js)
전송 주체프록시와 통신 중 또는 전 HTTP 클라이언트
정의 위치Library error; read the nested cause for the real reason
다시 시도할까요?중첩된 원인에 따라 다름
먼저 확인하세요중첩 예외를 읽으세요: 거부, 타임아웃, 이름 확인 실패 또는 상태 코드

Cannot connect to proxy (ProxyError)가 무엇을 의미하나요?

urllib3는 프록시와 관련된 실패마다 하나의 ProxyError를 발생시키며, requests가 이를 전달합니다. 유용한 정보는 중첩 예외에 있으며, traceback이 긴 줄 끝에서 출력합니다.

Node.js 클라이언트는 다르게 동작합니다: 소켓 오류(예: ECONNREFUSED 또는 ETIMEDOUT)를 직접 보고하지만, 주소가 프록시임을 명시하지 않는 경우가 많습니다.

Python, curl, Node.js, 브라우저에서 'Cannot connect to proxy'는 어떻게 나타나나요?

같은 실패가 도구마다 다르게 출력됩니다. 로그에서 검색할 메시지들:

  • 거부됨: ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))
  • DNS: NameResolutionError(... Failed to resolve ...)가 ProxyError 내에 있음
  • 인증 정보: OSError('Tunnel connection failed: 407 Proxy Authentication Required')
  • 게이트웨이 오류: OSError('Tunnel connection failed: 502 Bad Gateway')
  • Node.js: Error: connect ECONNREFUSED, ETIMEDOUT 또는 ENOTFOUND, 뒤이어 프록시 주소

'Cannot connect to proxy'의 원인은 무엇인가요?

가장 가능성 높은 첫 번째 원인:

  • 프록시 URL의 잘못된 호스트 또는 포트
  • 스킴 누락: 일부 라이브러리가 host:port에 http://가 없으면 의외의 방식으로 해석함
  • 네트워크 또는 서버의 아웃바운드 트래픽 차단
  • CONNECT 단계에서 발생하는 인증 또는 게이트웨이 오류가 동일 예외로 감싸져 발현됨
  • HTTPS_PROXY 같은 환경 변수가 이전 프록시를 가리키며 코드 설정을 덮어씀

'Cannot connect to proxy'를 단계별로 진단하는 방법은?

  1. 전체 예외를 출력하고 마지막 중첩 원인 확인
  2. requests.utils.get_environ_proxies(url) 또는 HTTP_PROXY, HTTPS_PROXY, NO_PROXY 환경 변수 출력하여 추가 설정 확인
  3. 동일 기기에서 아래 curl 테스트 실행
  4. 원인을 아래 해결법 목록과 비교
curl로 실패한 URL 테스트하기(HTTP 포트, 상세 모드)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

'Cannot connect to proxy'를 어떻게 고치나요?

  • 거부됨 또는 시간 초과: 호스트와 포트를 수정하거나 게이트웨이로의 아웃바운드 트래픽을 열기
  • 해결 실패: 기기에서 DNS 점검; nslookup로 호스트 시도
  • 407: 인증 정보를 수정하고 URL 인코딩; 407 Proxy Authentication Required 참조]
  • 502 또는 504: 새 출구 노드에서 재시도; 502], 504 참조]
  • 원치 않는 환경 프록시: requests에 session.trust_env = False 설정하거나 환경 변수 정리
Python: 인코딩된 자격 증명으로 프록시 URL 빌드하기
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)

'Cannot connect to proxy' 이후에 다시 시도해야 하나요?

변경 가능한 네트워크 레벨 원인(시간 초과, 502/504 같은 게이트웨이 오류)만 재시도하세요. 연결 거부, DNS 실패, 407은 설정 변경 전까지 반복 발생하므로 치명적 오류로 처리하세요.

Cannot connect to proxy (ProxyError)가 CrawlRelay에 어떻게 적용되나요?

CrawlRelay에서는 HTTP 및 HTTPS 대상 모두에 대해 http://USERNAME:PASSWORD@ 뒤에 아래 게이트웨이 호스트 및 HTTP 포트를 붙여 프록시 URL을 구성합니다. requests의 http와 https 키에 동일한 http:// URL을 사용하세요: 스킴은 사이트가 아닌 프록시와 통신하는 프로토콜을 지정합니다.

게이트웨이: gw.crawlrelay.com, 포트 7777 (CONNECT를 통한 HTTP, HTTPS) 및 포트 7778 (SOCKS5). 사용자 이름 형식: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. 관련: SSL: WRONG_VERSION_NUMBER · 407 · Python 가이드.

Cannot connect to proxy (ProxyError): 개발자들이 묻는 질문들

프록시에서 'Max retries exceeded with url' 메시지는 무슨 뜻인가요?

이는 urllib3가 재시도 한도 초과 후 포기했다는 의미이며, 이유는 메시지의 'Caused by' 부분에 나옵니다. 프록시가 있다면 그 부분은 보통 ProxyError이고, 중첩 원인은 연결 거부, 시간 초과, 이름 해석 실패 또는 407 같은 터널 상태입니다.

내가 설정하지 않은 프록시를 requests가 왜 사용하나요?

requests는 기본적으로 HTTP_PROXY, HTTPS_PROXY, NO_PROXY 환경 변수를 읽으며 Windows에서는 시스템 프록시 설정도 참조합니다. 남아 있는 설정값이 예상과 다르게 동작하게 합니다. session.trust_env = False를 설정하거나 요청마다 프록시를 명시적으로 지정하세요.

프록시 주소 앞에 http:// 또는 https://를 붙여야 하나요?

웹사이트가 HTTPS라도 HTTP 프록시일 경우 http://를 씁니다. 스킴은 클라이언트가 프록시와 통신하는 방식을 설명합니다. https://로 쓰면 최신 urllib3가 프록시에 TLS 시작을 시도해 HTTP 포트에 SSL 오류가 납니다.

이 참조에서 다른 프록시 오류들

HTTP 상태 코드

브라우저 및 클라이언트 오류

연결 및 TLS 오류

실패 사례를 다루는 문서가 있는 레지덴셜 프록시들

US$0.50/GB의 레지덴셜 프록시 CrawlRelay개, 트래픽이 절대 만료되지 않음.

US$0.50/GB 부터 · KYC 없이

시작하기