전체 글

FourA Digest (2026년 6월 26일 ~ 7월 3일)

Auto가 프로덕션에 배포되었습니다. Single, Proxy Finder, Browser 중 하나를 선택하고 Cloudflare 챌린지를 처리하는 단일 endpoint를 제공합니다. 또한 웹사이트에 6개의 새로운 언어가 추가되었습니다.

하이라이트

이번 주에 Auto가 프로덕션에 배포되었습니다. 임의의 URL을 지정하면 비용을 고려한 단계(probe, find an exit, browser solve, cheap replay)를 거쳐 콘텐츠와 이를 획득한 session을 함께 반환합니다. minfin.bg에서 처음으로 Cloudflare Turnstile을 해결하는 데 Auto를 통하면 약 5초가 소요되며, 다음 호출은 2 크레딧으로 Single을 통해 replay됩니다. 또한 블로그, docs, 업데이트 포털에 6개 언어를 추가하여 지원 언어가 7개에서 13개로 늘어났습니다.

새로운 기능

Auto: 비용을 고려한 하나의 endpoint, 4개의 제품

POST /api/auto가 활성화되었습니다. URL을 전달하면 적절한 제품(Single, Proxy Finder, Browser 중 하나)을 선택하고, Cloudflare 챌린지가 나타나면 이를 처리한 뒤, response와 함께 작동에 성공한 proxy ID, cookies, user agent가 포함된 session 객체를 반환합니다. 다음 호출에서 반환된 session을 재사용하면, Auto는 새로 해결 과정을 거치는 대신 2 크레딧으로 Single을 통해 replay합니다.

이제 모든 response에 meta 추적이 포함되어 어떤 단계가 성공했는지, 방어 수단이 해결되었는지, 하위 호출이 몇 번 발생했는지, 총 소모된 크레딧은 얼마인지 확인할 수 있습니다. 자체 validate 규칙을 적용하면 Auto가 마지막 단계뿐만 아니라 모든 단계에서 이를 강제하므로, transport 200과 함께 반환된 geo-block 페이지가 이전처럼 성공으로 간주되지 않습니다.

Dashboard 플레이그라운드에 timeout_ms, ignoreProxies, returnSession, forceProxy가 연결된 Auto 탭이 추가되어, 코드로 작성하기 전에 폼에서 직접 Auto를 실행해 볼 수 있습니다.

6개의 새로운 언어

스페인어, 프랑스어, 일본어, 한국어, 브라질 포르투갈어, 러시아어가 블로그, docs, 업데이트 포털에 추가되어 공개 사이트 전체에서 지원하는 언어가 7개에서 13개로 늘어났습니다. 콘텐츠는 역할(role)을 인식하는 파이프라인을 통해 번역됩니다. nav 레이블은 사이드바의 간결함을 유지하기 위해 직역보다 축약을 우선하는 프롬프트를 적용받고, 게시물 본문은 코드 블록과 헤더가 그대로 유지되도록 마크다운 보존 프롬프트를 적용받습니다.

언어 선택기도 새로 개편되었습니다. 국기 아이콘은 삭제되었습니다(스페인 국기는 다른 20여 개 스페인어 사용 국가를 소외시키며, 포르투갈어, 아랍어, 영어에도 동일한 논리가 적용됩니다). 이제 원어 이름이 정보를 전달하며, 각 옵션은 현재 활성화된 UI 언어로도 이름을 표시하므로 불가리아어 브라우저에서 "Deutsch"를 "немски"로 찾을 수 있습니다. 상단의 검색창에 입력하여 13개 locale 중 원하는 언어로 필터링하고, 방향키로 이동한 뒤 엔터를 눌러 전환할 수 있습니다. 각 옵션은 hreflanglang 속성을 가진 실제 <a href> 태그이므로 검색 엔진과 AI 크롤러가 모든 언어 버전을 추적할 수 있습니다.

Cloudflare 처리: 실제로 수정된 사항

Auto는 이제 잘못된 response를 유출하던 네 가지 Cloudflare 상황을 처리합니다:

  • transport 200과 함께 제공되는 "Just a moment" 대기 페이지가 더 이상 성공으로 간주되지 않습니다. Auto는 챌린지 페이지를 그대로 전달하는 대신 해결 단계로 에스컬레이션합니다.
  • 비대화형 챌린지(marathonbet의 "Checking your browser" 자동 통과 등)는 통과 후 클라이언트 측에서 렌더링됩니다. Browser는 빈 최상위 response에서 타임아웃이 발생하는 대신, 실제 DOM을 폴링하여 cf_clearance가 적용되는 순간 완료 처리합니다.
  • 통과 후의 실제 상태가 존중됩니다. 챌린지 통과 후 Cloudflare가 제공하는 geo-block은 의심스러운 본문이 포함된 200이 아닌 451을 반환합니다.
  • 대화형 Turnstile(minfin.bg)이 종단 간(end-to-end) 해결됩니다. Auto는 먼저 direct-egress browser 해결을 시도하고(신뢰할 수 있는 egress endpoint는 무료 데이터센터 exit가 챌린지를 에스컬레이션받는 상황에서도 Turnstile을 통과합니다), 실패할 경우 proxy 반복 시도로 전환합니다.

MCP: foura_auto 및 공개 검색(discovery)

MCP 서버에 /api/auto를 미러링하는 foura_auto 도구가 추가되었습니다. URL을 전달하면 콘텐츠와 session을 반환받습니다. 검색(discovery)(도구, 프롬프트, 기능)은 이제 인증 없이 제공되므로 에이전트가 인증 전에 탐색할 수 있으며, /llms.txt 맵은 루트에서 proxy됩니다. 랜딩 페이지는 링크 자산(link equity)을 위해 foura.ai/mcp로 이동했으며, 하위 도메인은 브라우저를 해당 위치로 301 리다이렉트합니다.

내부 동작 원리

fetcher 주변의 SSRF 경계를 강화했습니다. 커널 수준의 egress 방화벽이 두 개의 request 발행 서비스가 사설, CGNAT, link-local 및 클라우드 메타데이터 대역으로 연결을 여는 것을 차단합니다. 앱 수준의 검사에서 이미 URL을 처리하고 있었지만, 이제 하위 수준의 경로에서도 우회할 수 없습니다. request의 proxy 필드도 동일하게 처리됩니다. 사설 주소로 해석되는 클라이언트 제공 proxy 호스트는 request가 전송되기 전에 거부됩니다.

클라이언트가 전송한 경우에도 Activity 로그에 원시 proxy URL을 더 이상 저장하지 않습니다. 표시되는 response에는 항상 불투명한 base36 proxy ID가 포함되며, 저장된 페이로드도 이에 일치합니다. 또한 모든 API response에서 x-powered-by header를 제거했습니다.

수치로 보는 성과

  • minfin.bg에서의 대화형 Turnstile 해결: 약 5초 만에 부처 콘텐츠와 함께 200 반환, 이후 캐싱된 session을 통한 replay당 2 크레딧 소모.
  • 동시 부하가 발생하는 rate-limit 대상에서, Auto는 이제 모든 request를 하나의 exit에 집중시키는 대신 여러 exit로 분산시킵니다(고정 exit 호스트에서 4개의 고유 exit 사용, 24번의 replay 중 21번이 2 크레딧으로 처리됨).
  • 블로그, docs, 업데이트에 걸쳐 13개 언어 적용 완료.

Auto는 우리가 이번 분기 내내 목표로 삼고 구축해 온 API의 형태입니다. URL을 지정하고, response를 받고, session을 유지하십시오. 이제 흥미로운 작업은 에지 영역에 있습니다. 비용을 고려한 단계별 접근 방식이 실제 트래픽에서 얼마나 잘 분할 상환(amortize)되는지 측정하고, 아무도 생각하지 못한 거짓 양성(false-positive) 성공 사례를 잡아내는 validate 패턴을 찾는 것입니다.