주요 변경 사항
지금까지 FourA의 통로는 하나였습니다. 사용자가 URL을 보내면 페이지를 반환하는 방식이었습니다. 이번 주에 두 번째 통로를 열었습니다. 대시보드에서 생성한 자격 증명으로 모든 HTTP 클라이언트에 붙여넣을 수 있는 일반적인 proxy endpoint입니다. Proxy Finder는 다른 모든 요청을 거부하는 타깃에 대해 유료 출구를 활용하는 기능을 추가했으며, Auto는 작동하는 출구를 기억하는 성능을 개선했습니다.
새로운 기능
모든 HTTP 클라이언트에서 직접 연결
대시보드에 새 섹션인 ACCESS, Proxy가 추가되었습니다. 프록시 사용자를 생성하면 페이지에서 cURL, Python, Node 예제와 함께 정확한 연결 문자열을 제공합니다. 출구 유형, 국가, 일련의 요청 전반에서 동일한 출구를 유지할지 여부를 선택하면 선택에 따라 문자열이 실시간으로 업데이트됩니다.
API가 이미 작동하는데 이 기능을 구축한 이유는 무엇일까요? 일부 작업은 단순한 요청 및 응답 방식에 맞지 않습니다. 터널은 바이트가 도착하는 즉시 복사합니다. JSON 래핑이나 버퍼링이 없습니다. 이는 대용량 파일이나 비디오 스트림에 필요한 방식이며, 기존 API로는 처리할 수 없던 영역입니다.
유료 출구에서는 타깃팅을 더 세부적으로 설정할 수 있습니다. 지역, 도시, ISP 이름별 네트워크, 출구 유지 기간을 지정할 수 있습니다. FourA 자체 풀은 의도적으로 국가 단위만 지원합니다. 커버리지가 낮은 국가의 도시는 IP 주소가 몇 개에 불과하며, 대부분 실패하는 필터는 필터가 없는 것보다 나쁩니다.
명확한 트레이드오프가 존재합니다. 일반 터널을 사용하면 FourA가 아닌 클라이언트가 사이트에 직접 연결하므로, FourA API가 대신 수행하던 작업(unblocker 플래그, 브라우저 기반 해결, validate 규칙, 세션 재생)이 해당 경로에 포함되지 않습니다. 터널은 FourA의 출구와 대역폭을 제공합니다. API는 그 위에 구축된 기능을 제공합니다. 회사 단위가 아니라 작업 단위로 적합한 방식을 선택하세요.
프리미엄 출구 및 제공 출구 확인 응답
/api/proxy는 이제 exitClass(standard 또는 premium)을 지원합니다. 프리미엄은 자체 풀에서 차단되는 타깃을 위해 유료 출구로 트래픽을 라우팅합니다.
값을 전달하지 않으면 자동 모드로 동작합니다. 공유 풀을 먼저 사용하고, 해당 검색이 실패할 때만 유료 출구를 추가로 투입합니다. 클래스를 직접 지정하면 해당 설정이 그대로 적용됩니다. standard는 자체적으로 단계를 상향 조정하지 않으며, 이것이 클래스를 명시적으로 지정하는 핵심 이유입니다.
응답에 exitClass가 포함되므로 어떤 출구가 요청을 처리했는지 항상 확인할 수 있습니다. 프리미엄 요청을 자체 풀이 먼저 처리한 경우 standard로 반환되며, 이는 다운그레이드가 아닌 성공입니다. 요금제에 프리미엄이 포함되어 있지 않으면 다른 곳에서 임의로 처리되지 않고 요청이 즉시 거부됩니다.
프리미엄은 별도의 총량이 아니라 전체 대역폭의 일부로 표시됩니다. Quota의 행, Metrics의 열, 해당 방식으로 처리된 Activity 행의 표시, Overview 카드의 타일에 반영됩니다. Playground에도 해당 컨트롤이 추가되었으며, 빈 옵션은 중요한 의미를 가집니다. 이를 설정하지 않은 채로 두면 필드가 전혀 전송되지 않습니다. "요청하지 않음"과 "상향 조정을 하지 않도록 요청함"은 서로 다른 요청이기 때문입니다.
Auto의 성공 출구 기억 기능
Auto의 래더는 어떤 exit가 실패했는지 항상 기록해 왔습니다. 이제는 브라우저 단계뿐만 아니라 모든 단계에서 성공한 exit를 기록하며, 이는 해당 페이지를 사용자에게 반환할지 결정하는 검증을 콘텐츠가 통과한 후에만 이루어집니다. 사용자에게 반환하지 않을 페이지에 대해서는 exit가 정상으로 표시될 수 없습니다.
차단(Ban) 역시 독립된 주기에 따라 만료됩니다. 이전에는 새로운 차단이 추가될 때마다 호스트의 제외 목록 수명이 갱신되었으나, 이제는 각 차단이 지정된 일정에 맞춰 개별적으로 만료됩니다.
또한 실행 중 플랜의 브라우저 한도에 도달하더라도 래더가 더 이상 중단되지 않습니다. 대신 proxy 단계를 실행하고, 성공한 exit를 캐시하여 이후 호출 시 Single에서 저렴하게 재사용할 수 있도록 합니다.
Auto는 여전히 프로덕션 라우트가 아닌 경로 탐색기 역할을 합니다. Auto가 어떤 단계에서 성공했는지 확인하고 세션을 반환받은 다음, 해당 세션을 사용하여 트래픽을 /api/single 또는 /api/browser으로 직접 라우팅하십시오. 이는 Auto 출시 당시의 핵심 논리였으며, 이번 변경 사항에서도 그대로 유지됩니다.
요청한 페이지와 다른 페이지가 반환되는 경우
일부 exit는 필터링이 적용된 사내 네트워크 내에 위치하여 실제 사이트 대신 게이트웨이가 응답하기도 합니다. 이 경우 응답은 200 코드와 body를 포함하여 반환되며, 기존의 모든 검증을 통과했습니다. 이제는 달라졌습니다. 이러한 페이지는 사이트가 정상 응답했다는 증거가 아니라 해당 exit를 사용할 수 없다는 증거로 간주됩니다. 따라서 request는 다른 경로로 넘어가고 해당 exit는 선호 대상에서 제외됩니다.
패턴을 매칭하는 모든 페이지 형태에는 크기 제한(size bound)이 적용되어 있으므로, 해당 단어를 우연히 인용한 정상 문서가 오탐으로 제외되지 않습니다. 크기는 안전장치일 뿐 탐지 신호가 아닙니다. 2주 전에 작성한 차단이 정상 데이터처럼 보일 때에서 이와 관련된 더 광범위한 내용을 다루었습니다.
내부 동작 원리
이제 rate limit는 공유 용량에 반영되기 전에 개별 계정의 한도를 기준으로 먼저 확인됩니다. 특정 계정 내의 버스트는 자체 한도에 따라 즉시 거부되므로, 다른 사용자가 대기 중인 슬롯을 소모하지 않습니다.
대시보드의 in-flight 수치는 값이 계속 증가한 채 내려오지 않을 수 있는 단순 카운터가 아니라, 각 인스턴스가 매초 다시 발행하는 실시간 게이지를 기반으로 합니다. 이제 화면과 limiter가 동일한 수치를 참조합니다.
수치 데이터
자체 테스트 결과, 이미 exit를 찾은 호스트로 터널을 여는 데 걸린 시간은 10여 회의 샘플 기준 63~672ms였으며, 대부분 260ms 미만이었습니다. 이전에 처리한 적 없는 호스트와의 첫 연결은 더 느립니다. 해당 대상을 지원하는 exit를 풀에서 검색하는 동안 수 초에서 수십 초가 소요될 수 있습니다. 이는 request 단위가 아니라 호스트당 한 번만 발생합니다. 적은 샘플 수 기반의 자체 측정 수치입니다.
접근 방식이 두 가지라는 것은 지난주에는 없었던 선택지가 생겼음을 의미합니다. 이 작업이 단순 바이트 전송인지, 아니면 접근 우회 자체가 목적인지에 대한 판단입니다. 대용량 파일을 전송할 때는 터널이 가장 경제적인 수단입니다. 그보다 복잡한 작업에는 여전히 API를 사용하는 것이 적합합니다.