# 401 Unauthorized vs 407 Proxy Authentication Required

> 401 Unauthorized는 웹사이트에서 오고 407은 프록시에서 옵니다. Python, curl, Node에서 구분하는 방법과 각각의 문제를 해결하는 방법입니다.

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

HTTP 상태 코드 (4xx, 클라이언트 오류): 각 도구에서 정확한 메시지, 가능한 원인들의 순서, 그리고 효과적인 해결 방법.

**빠른 답변 — 프록시에서 401 Unauthorized vs 407는 무엇을 의미하나요?**

**401 Unauthorized는 웹사이트에서, 407은 프록시에서 옵니다.** CrawlRelay 주거용 프록시를 통해 스크랩할 때 401이 나오면 프록시 접속은 성공했으나 웹사이트가 자체 로그인이나 API 키를 요구하는 것입니다. 이 경우 프록시 자격 증명은 도움이 되지 않습니다. 407 문제는 프록시 URL에서 수정하고, 401은 사이트의 보호된 콘텐츠 규칙에 따라 처리하세요.

## 401 Unauthorized vs 407 한눈에 보기

| 속성 | 값 |
| --- | --- |
| 오류 | 401 Unauthorized vs 407 |
| 유형 | HTTP 상태 코드 (4xx, 클라이언트 오류) |
| 전송 주체 | 대상 웹사이트이며, 프록시가 아닙니다 |
| 정의 위치 | RFC 9110, section 15.5.2 (compare 407: section 15.5.8) |
| 다시 시도할까요? | 아니요. 401은 웹사이트 자체의 인증을 요구합니다 |
| 먼저 확인하세요 | 어느 서버가 보냈는지 확인하세요: 웹사이트(401)인지 프록시(407)인지 |

## 401 Unauthorized vs 407가 무엇을 의미하나요?

RFC 9110은 이 두 코드를 짝지었습니다. 401은 `WWW-Authenticate` 헤더를 포함하며 원본 서버의 자격 증명을 요구합니다. 407은 `Proxy-Authenticate` 헤더를 포함하며 프록시 자격 증명을 요청합니다. 응답 헤더도 다릅니다: 사이트는 `Authorization`, 프록시는 `Proxy-Authorization`입니다.

두 코드 모두 '인증'을 요구하기 때문에 헷갈리기 쉽습니다. 가장 빠른 구분법은 상태 코드 자체입니다: 401은 프록시를 통과했다는 의미입니다.

## Python, curl, Node.js, 브라우저에서 a 401는 어떻게 나타나나요?

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

- **Python requests:** 웹사이트에서 오는 `status_code == 401`와 함께 `WWW-Authenticate` 헤더 / 프록시 관련 407은 `ProxyError`에서 확인
- **curl:** 성공적인 `CONNECT` 후에 `HTTP/2 401` (웹사이트) / `CONNECT tunnel failed, response 407` (프록시)
- **API:** `{"message": "Unauthorized"}` 같은 JSON 본문 또는 무효 토큰 메시지

## a 401의 원인은 무엇인가요?

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

- **페이지 또는 API가 로그인이나 키를 요구합니다.** 사이트에서 요청하는 것이지 프록시가 아닙니다.
- **프록시 자격 증명이 잘못된 위치에 있음**, 예: 사이트가 거부하는 프록시용 `Authorization` 헤더 포함
- **만료된 세션 쿠키나 토큰**이 포함된 다단계 인증 흐름
- **IP 또는 지역과 연동된 토큰**, 새로운 출구 IP로 변경되면 무효화됨

## a 401를 단계별로 진단하는 방법은?

1. 코드 확인: 401은 사이트, 407은 프록시
2. 아래 curl 테스트 실행. 401 전에 `HTTP/1.1 200 Connection established`이 보이면 프록시는 정상
3. 일반 브라우저에서 같은 URL이 로그인 요구하는지 확인
4. 다단계 인증의 경우 출구 IP 변경 시 401 발생 여부 확인

*curl로 실패한 URL 테스트하기(HTTP 포트, 상세 모드)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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
```

## a 401를 어떻게 고치나요?

- **프록시 문제(407)**의 경우, 자격 증명을 프록시 URL 또는 클라이언트의 프록시 설정에 넣으시고, 절대 `Authorization` 헤더에는 넣지 마십시오.
- **키가 필요한 공개 API의 경우**, 해당 사이트에 등록하고 문서에 따라 키를 전송하십시오.
- **IP에 연동된 세션의 경우**, 전체 과정에 대해 스티키 세션을 사용하십시오.
- **로그인 뒤의 콘텐츠는**, 자동화하기 전에 사이트 약관을 확인하십시오. 소유하지 않은 계정이나 로그인 뒤의 개인 데이터를 스크래핑하는 것은 저희의 허용 정책에 위배됩니다.

## a 401 이후에 다시 시도해야 하나요?

401 오류는 무턱대고 재시도하지 마십시오. 요청에 없는 무언가를 요구하는 것입니다. 플로우에 토큰이나 세션이 있다면 갱신 후 한 번 시도하십시오. 401이 계속된다면 콘텐츠가 공개되지 않았거나 접근 권한이 종료된 것입니다.

## 401 Unauthorized vs 407가 CrawlRelay에 어떻게 적용되나요?

HTTP 프록시는 407이나 터널 실패로 자격 증명 문제를 알리며 401로는 알리지 않습니다. CrawlRelay 게이트웨이를 사용할 때 401이 보이면 요청이 웹사이트에 도달한 것으로 문제 범위가 빨리 축소됩니다.

게이트웨이: `gw.crawlrelay.com`, 포트 7777 (CONNECT를 통한 HTTP, HTTPS) 및 포트 7778 (SOCKS5). 사용자 이름 형식: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. 관련: [407 Proxy Authentication Required](https://crawlrelay.com/ko/docs/errors/407-proxy-authentication-required/) · [403 Forbidden](https://crawlrelay.com/ko/docs/errors/403-forbidden/) · [세션 가이드](https://crawlrelay.com/ko/docs/sessions/).

## 401 Unauthorized vs 407: 개발자들이 묻는 질문들

### 프록시 비밀번호가 정확한데 401 오류가 나는 이유가 뭔가요?

401 오류는 프록시가 아닌 웹사이트 문제입니다. 프록시 로그인은 작동했고 사이트가 자체 자격 증명을 원합니다. 예를 들어 API 키, 로그인 쿠키 또는 토큰이 필요합니다. 사이트 문서를 확인하세요. 접근 권한 없는 로그인 뒤 콘텐츠는 자동화하지 마십시오.

### 스티키 세션이 401 오류를 해결할 수 있나요?

경우에 따라 가능합니다. 일부 사이트는 세션이나 토큰을 만든 IP에 연동하여 새로운 출구로 접속 시 토큰이 무효화되어 401이 발생합니다. 전체 플로우에 스티키 세션을 유지하면 이를 방지합니다. 하지만 없는 자격 증명이 필요한 콘텐츠에는 도움이 되지 않습니다.

### 프록시 자격 증명은 HTTP 요청의 어디에 넣어야 하나요?

프록시 URL의 `user:password@` 부분에서 클라이언트가 만들어 `Proxy-Authorization` 헤더에 넣습니다. 이 헤더는 프록시가 제거해 웹사이트는 보지 못합니다. 웹사이트용 자격 증명은 프록시가 그대로 전달하는 `Authorization` 헤더나 쿠키에 넣으십시오.

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

- [401 Unauthorized vs 407](https://crawlrelay.com/ko/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/ko/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/ko/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/ko/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/ko/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/ko/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/ko/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/ko/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/ko/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/ko/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/ko/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/ko/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/ko/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/ko/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/ko/docs/errors/ssl-wrong-version-number/)

**실패 사례를 다루는 문서가 있는 레지덴셜 프록시들** US$0.50/GB의 레지덴셜 프록시 CrawlRelay개, 트래픽이 절대 만료되지 않음. [가격 확인](https://crawlrelay.com/ko/pricing/) · [빠른 시작](https://crawlrelay.com/ko/docs/)

---

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