← 전체 글

FourA Digest: 2026년 5월 8일 ~ 5월 15일

대시보드에 API 호출을 작성할 수 있는 실제 request playground가 추가되었으며, Single 및 Proxy Finder에서 `unblocker: true`가 다시 end-to-end로 정상 작동합니다.

주요 업데이트

이제 대시보드에서 보유한 API 키로 직접 request를 작성, 전송 및 재생(replay)할 수 있습니다. 새로운 playground는 세 가지 제품을 모두 지원하며, 실행 간 cookie, 프리셋, 기록을 유지합니다. 이와 함께 두 가지 안정성 수정 사항이 적용되었습니다. 몇 주 동안 비정상 작동하던 unblocker: true 문제를 해결하여 엔드투엔드로 다시 정상 작동하며, Browser가 Cloudflare의 패시브 챌린지 cf_clearance cookie를 안정적으로 캡처합니다.

새로운 기능

대시보드 Playground

/dashboard/#playground가 본격적인 워크벤치로 개편되었습니다. 세 가지 제품 탭(Single, Proxy Finder, Browser), URL 입력창, header, body, 그리고 각 제품의 실제 스키마에 맞춰 노출된 제품별 플래그를 제공합니다. request를 전송하고 JSON, HTML, 텍스트 뷰 모드로 렌더링되는 response를 확인하세요. Ctrl/Cmd+K로 response 창 전체를 검색할 수 있습니다. 방대한 양의 HTML을 확인해야 할 때는 response 창을 전체 화면으로 확장할 수 있습니다.

개발팀이 직접 사용하고 싶은 방식으로 구축하면서 추가된 주요 기능은 다음과 같습니다.

  • 수신한 cookie는 호스트별 저장소(jar)에 저장됩니다. 동일한 호스트로 보내는 다음 request에 자동으로 첨부되며, 전송 전 언제든 cookie를 검사, 수정, 삭제할 수 있습니다.
  • 작동 중인 proxy 레일에 성공적인 Proxy Finder 실행에서 반환된 모든 proxy id가 수집되므로, 재입력할 필요 없이 "use"를 클릭하여 해당 proxy를 Single 또는 Browser request에서 재사용할 수 있습니다.
  • request를 프리셋으로 저장할 수 있습니다. 기록 대화상자에서 최근 20회의 실행 기록 중 하나를 선택해 다시 실행할 수 있습니다.
  • cURL 재현 도구는 동일한 request를 전송하기 위해 터미널에서 실행할 수 있는 정확한 명령어(x-api-key 포함)를 보여줍니다.

playground는 수명이 짧은 내부 token에 서명하므로 일반 텍스트 키가 대시보드 외부로 노출되지 않습니다. 쿼터, 메트릭 및 last_used_at는 자체 코드에서 request를 보냈을 때와 동일하게 선택한 키에 반영되어 집계됩니다.

unblocker: true 엔드투엔드 정상 작동 복구

지난 몇 주 동안 unblocker: true를 사용한 Single 및 Proxy Finder request의 성능을 저하시키던 빌드 문제를 발견했습니다. 브라우저 프로필이 실제로 연결되지 않은 상태로 빌드가 배포되어, 브라우저 서명이 포함되어야 할 request에 일반 request 서명이 적용되고 있었습니다. 이로 인해 통과되어야 할 사이트에서 차단이 발생했습니다.

수정 사항이 배포되었습니다. 이전에는 Browser가 필요했던 검사 페이지 뒤의 사이트 3곳을 포함하여 11개의 실제 대상을 대상으로 엔드투엔드 검증을 완료했습니다. 이제 Single 자체만으로 통과합니다. Proxy Finder + Browser + Single 연계 플로우(proxy 검색, Browser에서 cf_clearance cookie 획득, 해당 cookie 및 동일한 proxy를 사용하여 Single로 페이지 request 전송)는 한 번의 왕복으로 전체 HTML을 반환합니다.

이번 문제는 당사의 불찰입니다. unblocker: true는 출시 당일 정상 작동했으나 정기 재빌드 과정에서 조용히 문제가 발생했습니다. 지난 몇 주 동안 보호된 사이트를 대상으로 unblocker: true를 포함한 request를 실행했을 때 200이 아닌 403을 받았다면 이 문제 때문이었습니다. 다시 시도해 보시기 바랍니다.

Browser의 Cloudflare 패시브 JavaScript 챌린지 처리

Cloudflare에는 두 가지 챌린지 모드가 있습니다. 활성 모드(HTTP 403 및 인터스티셜)는 이미 처리되어 있었습니다. 수동 모드는 더 까다롭습니다. 페이지는 즉시 200을 반환하지만, Cloudflare가 클라이언트를 핑거프린팅하는 비동기 JavaScript 프로브를 주입한 후에만 cf_clearance 쿠키를 발급합니다. 이번 수정 전에는 프로브가 완료되기 전에 Browser가 응답을 완료 처리하여 clearance 쿠키가 저장소에 저장되지 않았습니다.

이제 Browser는 Set-Cookie 이벤트를 명시적으로 리슨하며, 본문에서 수동 챌린지 마커가 감지되면 cf_clearance 대기 상태로 전환합니다. 폴링이나 고정된 유예 시간 없이 동작하며, Cloudflare를 사용하지 않는 사이트에는 추가 대기 시간이 발생하지 않습니다. 테스트 스위트에 포함된 12개의 실제 도메인(그중 3개는 수동 경로 사용)에서 이제 clearance 쿠키가 안정적으로 반환됩니다.

API 에지에서의 SSRF 보안 허점 수정

유효한 pk_live_... API 키가 있다고 해서 내부 비공개 네트워크 접근이 허용되지는 않습니다. 이제 API는 호스트 이름 리터럴 또는 DNS 확인 결과가 RFC 5735, 6598 또는 IPv6 예약 블록에 해당하는 모든 타깃을 거부합니다. 동일한 검사가 2차 방어선으로 모든 백엔드 제품에서도 실행됩니다.

표면적으로 달라진 점은 없습니다. 내부 네트워크를 탐색하려는 시도를 TCP 핸드셰이크가 완료되기 전에 차단합니다.

블로그 고유 소셜 미리보기 추가 및 페이지네이션 수정

이제 모든 블로그 포스트는 글 제목과 발췌문이 브랜드 카드에 렌더링된 고유 Open Graph 이미지를 생성합니다. Discord, LinkedIn, Slack 또는 Twitter에 foura.ai/blog/... 링크를 붙여넣으면 일반 대체 이미지 대신 포스트 전용 미리보기가 표시됩니다.

블로그 색인의 페이지네이션 오류를 수정했습니다. 이전에는 "Older" 버튼을 클릭하면 1페이지로 돌아가는 문제가 있었습니다. 이를 경로 기반 URL(/blog/page/N/)로 재구축하고, 스마트 윈도우가 적용된 번호 네비게이션을 추가했으며, 페이지가 매겨진 시리즈를 위한 적절한 rel=prev/next 링크 태그를 적용했습니다. 이전 ?page=N URL은 새로운 형식으로 301 리디렉션되므로 기존 크롤링 데이터가 유실되지 않습니다.

내부 구현 세부사항

Model Context Protocol을 지원하는 LLM 툴링을 위해 mcp.foura.ai에 MCP 서버를 배포했습니다. 인증은 REST API에 사용하는 것과 동일한 pk_live_... Bearer 토큰을 사용합니다. 세 가지 제품(Single, Proxy Finder, Browser)을 툴로 제공하며 몇 가지 프롬프트도 함께 제공합니다. FourA를 Claude Code나 MCP를 지원하는 에이전트에 연동하는 경우 로컬 브리지를 별도로 실행할 필요가 없습니다.

이전 플레이그라운드의 미흡한 완성도로 인해 대시보드 사용을 망설이셨다면 이번 주에 확인해 보시기 바랍니다. API 타깃에 문제가 발생했을 때 당사 내부에서도 직접 사용하는 인터페이스입니다.