Proxy 포트
브라우저, 다운로드 도구, 기존 스크레이퍼 등 proxy URL을 지원하는 모든 클라이언트에서 FourA의 출구 노드를 통해 트래픽을 전송할 수 있습니다. proxy 포트는 지정한 대상과 터널을 열고 양방향으로 바이트를 복사하므로 스트림, 대용량 다운로드, 전체 브라우저 세션 등 JSON API가 지원하지 않는 데이터도 전송합니다.
연결
| 설정 | 값 |
|---|---|
| Host | proxy.foura.ai |
| Port | 34004 |
| Protocol | Basic 인증 기반 HTTP CONNECT |
| 대상 포트 | 443 및 80 |
자격 증명은 대시보드에서 제공됩니다. 사이드바의 Proxy에서 proxy 사용자를 생성하면 생성된 사용자 이름과 비밀번호가 발급됩니다. 이는 API 키와 의도적으로 분리되어 있습니다. proxy 핸드셰이크는 모든 연결에서 평문으로 전송되며, API 연동에 영향을 주지 않고 proxy 사용자를 교체할 수 있기 때문입니다. Proxy Users를 참고하십시오.
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 https://example.com
import requests
proxy = "http://USERNAME:PASSWORD@proxy.foura.ai:34004"
r = requests.get("https://example.com", proxies={"https": proxy, "http": proxy})
print(r.status_code)
해당 포트는 CONNECT 전용입니다. https:// 대상은 모든 클라이언트에서 터널링됩니다. 일반 http:// 대상도 클라이언트가 이를 터널링하는 경우 정상 작동합니다(curl: --proxytunnel). 일반 request를 프록시로 전달하는 클라이언트는 대신 405 Method Not Allowed를 수신합니다.
Username 내 옵션 전달
자격 증명 뒤에 오는 모든 값은 순서에 관계없이 -key-value 쌍의 목록입니다.
USERNAME-network-premium-country-de-session-a1
값은 소문자 단어입니다. 값 내부의 대시는 새 옵션을 시작하므로 -city-new-york는 두 개의 옵션으로 해석되어 거부됩니다. 알 수 없는 키 역시 무시되지 않고 거부됩니다. 잘못 입력된 -contry-de는 잘못된 국가에서 처리되는 대신 지원되는 키를 명시하는 400 에러를 반환합니다.
| 옵션 | 값 | 기능 |
|---|---|---|
network |
shared(기본값, 별칭 pool), premium(별칭 residential) |
주소가 제공되는 네트워크입니다. Shared는 플랜에 포함된 FourA 자체 출구입니다. Premium은 플랜에 포함된 프리미엄 트래픽과 추가 구매한 트래픽에서 가져오는 가정용 주소입니다. |
fallback |
premium(별칭 residential), off |
공유 네트워크 전용입니다. 공유 네트워크가 요청을 처리할 수 없을 때 프리미엄 출구를 사용합니다. 요청하지 않으면 비활성화되며, 플랜에 프리미엄 트래픽이 포함되어 있고 잔여량이 있을 때만 동작합니다. |
country |
ISO 3166-1 alpha-2, 반복 가능 | 타겟에 표시되는 출구 국가입니다. 여러 국가 범위를 지정하려면 반복하십시오: -country-de-country-fr. |
session |
1-32자의 문자, 숫자 또는 밑줄 | 같은 이름을 공유하는 연결은 주소를 공유합니다(sticky). 연결마다 새 주소를 사용하려면 생략하십시오(rotating). |
state |
단어 | 지역. 프리미엄 전용. |
city |
단어 | 도시. 프리미엄 전용. |
asn |
숫자 | AS 번호 기준 네트워크. 프리미엄 전용. |
os |
windows, android, ios, mac |
주소가 속한 기기 유형입니다. 프리미엄 전용. |
lifetime |
3 ~ 1440 |
고정 프리미엄 주소가 유지되는 시간(분)입니다. 프리미엄 전용. |
network, fallback, session를 제외한 모든 옵션은 any를 지원하며, 이는 이번 연결에 대해 프록시 사용자에 저장된 값을 지웁니다.
다음 세 가지 조합은 일부만 적용되지 않고 400 에러로 거부됩니다.
- 공유 네트워크에서의
state,city,asn,os또는lifetime. 공유 네트워크는 국가 단위로만 선택할 수 있습니다. 도시를 타겟팅하려면-network-premium를 추가하십시오. -fallback-premium와-network-premium를 함께 사용하는 경우. 대체 대상 네트워크 자체에서는 대체(fallback)가 동작할 수 없습니다.- fallback이 설정된 상태에서의 세부 타겟팅. fallback은 항상 실행된다는 보장이 없으므로, 때때로만 적용 가능한 도시는 거부됩니다.
세션
공유 네트워크에서 이름을 지정한 세션은 10분의 슬라이딩 윈도우 동안 계속 사용하는 한 동일한 출구를 유지합니다. 해당 출구가 작동을 멈추면 오류를 반환하는 대신 다른 출구로 세션을 이동합니다. 포트를 통해 실행되는 브라우저는 항상 세션 이름을 포함해야 합니다. 페이지를 로드할 때 수십 개의 연결이 열리며, 세션이 없으면 각 연결이 서로 다른 주소에서 나가게 됩니다.
프리미엄 네트워크에서 이름을 지정한 세션은 lifetime분 동안 또는 직접 설정하지 않은 경우 네트워크 기본값 동안 주소를 유지합니다.
저장된 기본값
대시보드의 proxy 사용자에 저장된 타겟팅은 해당 사용자로 생성되는 모든 연결에 적용되므로 username을 짧게 유지할 수 있습니다. username에 지정한 모든 값은 해당 단일 연결에 우선 적용되며, any을 사용하면 저장된 기본값으로 되돌립니다. 저장된 프리미엄 기본값은 요금제에서 허용하는 경우에만 비용이 청구됩니다. 그렇지 않으면 연결이 공유 네트워크에서 제공되며 터널은 정상적으로 열립니다.
CONNECT 헤더
CONNECT request에 헤더를 추가할 수 있는 클라이언트는 동일한 옵션을 헤더로 전송할 수 있습니다. 헤더는 username의 동일한 옵션보다 우선합니다.
| Header | Same as |
|---|---|
X-Foura-Network |
-network- |
X-Foura-Fallback |
-fallback- (premium 또는 off) |
X-Foura-Country |
-country-, 여러 개인 경우 쉼표로 구분 |
X-Foura-Session |
-session- |
X-Foura-State |
-state- |
X-Foura-City |
-city- |
X-Foura-Asn |
-asn- |
X-Foura-Lifetime |
-lifetime- |
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 \
--proxy-header "X-Foura-Country: de" \
https://example.com
응답
터널이 정상적으로 열리면 200 Connection established 코드로 응답합니다. 자격 증명 확인 후 발생하는 모든 연결 거부에는 한 줄로 된 이유가 담긴 X-Foura-Error 헤더가 포함되므로, 다른 어떤 작업보다 이 헤더를 먼저 확인하십시오.
| 상태 | 조건 |
|---|---|
| 400 Bad Request | 요청 형식이 잘못되었거나 FourA에서 지원할 수 없는 옵션이 지정된 경우입니다. X-Foura-Error 헤더에 해당 옵션과 지원되는 값이 명시됩니다. |
| 403 Forbidden | 대상 포트가 지원되지 않거나, 대상이 공용 인터넷 호스트가 아니거나, 포트가 요금제에 포함되지 않은 경우입니다. 또는 -network-premium 옵션을 지정했으나 요금제에 남은 프리미엄 트래픽이 없거나 프리미엄 네트워크가 포함되지 않은 경우에도 발생합니다. |
| 405 Method Not Allowed | CONNECT 대신 일반 요청이 전송된 경우입니다. |
| 407 Proxy Authentication Required | 자격 증명이 누락되었거나 잘못되었습니다. 응답에는 아이디와 비밀번호 중 어느 쪽이 잘못되었는지 명시되지 않습니다. |
| 408 Request Timeout | 클라이언트가 연결한 후 15초 동안 아무것도 전송하지 않은 경우입니다. |
| 431 Request Header Fields Too Large | CONNECT 요청의 헤더 크기가 16KB를 초과한 경우입니다. |
| 429 Too Many Requests | 동시 열림 터널 수, 분당 터널 생성 수, 이번 청구 기간의 표준 트래픽 등 요금제 한도 중 하나를 초과한 경우입니다. 또한 포트 자체의 용량이나 연결 생성 속도가 한도에 도달했을 때도 발생합니다. 원인은 X-Foura-Error 헤더에 표시됩니다. |
| 502 Bad Gateway | 선택 예산 내에서 해당 대상에 유효한 출구 노드를 찾지 못했거나, FourA 자체 리졸버가 호스트를 조회할 수 없는 경우입니다. 두 경우는 X-Foura-Error 헤더에 서로 다른 메시지로 표시됩니다. |
| 503 Service Unavailable | 프록시 포트가 비활성화된 경우입니다. |
제한 사항
- 동시 열림 터널 수 및 분당 터널 생성 수는 요금제에 따라 결정되며, 프록시 사용자가 아닌 계정 단위로 집계됩니다. 두 번째 자격 증명을 발급받더라도 추가 허용량이 제공되지 않습니다. 현재 수치는 Usage & Limits에서 확인할 수 있습니다.
- 출구 노드 탐색에는 최대 45초가 소요되며, 이후 포트가 502 오류와 함께 시도를 중단합니다. 이미 출구 노드가 할당된 세션은 대개 1초 이내에 빠르게 연결됩니다.
- 양방향 모두 데이터 전송이 없는 터널은 2분간의 유휴 상태 후 닫힙니다.
- 포트가 업데이트될 때 이미 열려 있는 터널은 3분 미만의 완료 시간이 주어진 후 닫히며, 신규 연결은 계속 열립니다. 대용량 다운로드나 스트리밍 작업은 터널이 닫힐 때 다시 연결해야 합니다.
- 대시보드에서 비활성화하거나 삭제한 프록시 사용자는 1분 이내에 인증이 중단됩니다.
측정
포트를 통과하는 바이트는 Usage & Limits 페이지의 대역폭으로 집계되며, 프리미엄 출구 노드를 통과하는 바이트는 프리미엄 트래픽으로도 함께 집계됩니다. 즉 동일한 바이트가 두 번 보고되지만 합산되지는 않습니다. 터널이 열릴 때 포트가 시도했으나 사용하지 않은 프리미엄 출구 노드의 트래픽도 프리미엄 트래픽으로 계산됩니다. 사용되지 않은 공유 네트워크 시도는 집계되지 않으며, 터널이 열리지 않으면 아무것도 집계되지 않습니다.
포트가 사용할 수 있는 기본 트래픽은 플랜에 따릅니다. 크레딧 기반 플랜에서는 포트에 별도의 기본 기가바이트가 포함되며 청구(Billing) 페이지에서 추가 구매할 수 있습니다. 트래픽 기반 플랜에서는 API와 동일한 풀을 사용합니다. 해당 트래픽이 모두 소진되면 기간이 리셋되거나 추가하기 전까지 새 연결이 거부되며, 사용량 알림 메일에 시점이 안내됩니다.
프리미엄 허용량이 소진되면 해당 네트워크로 접근하는 세 가지 방식이 의도적으로 다르게 처리됩니다. -network-premium을(를) 지정한 연결은 사용 비용 지불을 요청했으나 다른 곳에서 조용히 처리되는 경우 호출자가 계속 요청하여 표시되지도 않는 프리미엄 내역을 대조하게 되므로, 이를 설명하는 403 오류와 함께 거부됩니다. 대체(fallback)는 적용되지 않으며, 프록시 사용자에 저장된 프리미엄 기본 설정은 공유 네트워크로 다운그레이드되어 터널이 계속 열립니다. 두 경우 모두 이번 연결에서 비용 지출을 선택하지 않았기 때문입니다.
관련 항목
- 프록시 사용자: 대시보드에서 프록시 사용자를 생성하고 연결 문자열 빌드
- 프록시 요청: 재시도 및 검증 기능이 내장된 JSON API 대안
- 요청 간 프록시 재사용: JSON API에서 단일 출구 유지
- 사용량 및 제한: 플랜 대비 대역폭 및 프리미엄 트래픽