전체신규개선해결
개선

Playground 새로고침, Reset, 온디맨드 전달

Playground를 새로고침할 때 사용자의 상태가 다시 표시되기 전에 정적 상태가 깜빡이는 현상이 더 이상 발생하지 않습니다. 새로운 Reset 버튼(확인 단계 포함)은 세 개의 request 탭, cookie, 그리고 전달된 proxy를 한 번에 모두 지워줍니다. 이제 백그라운드에서 자동으로 적용되는 대신, 사용자가 요청할 때 response의 proxy ID 또는 User-Agent를 다음 request로 전달할 수 있습니다.

신규

각 request의 크레딧 비용 확인

이제 모든 API response에 해당 호출에 소모된 비용을 보여주는 x-foura-credits header가 포함됩니다. Dashboard의 새로운 Budget 뷰는 타임라인 차트와 함께 API key, domain, client IP별로 크레딧 소모량을 세분화하여 보여주며, Playground에서도 각 response마다 동일한 정보를 표시하므로 규모를 확장하기 전에 워크로드 크기를 예측할 수 있습니다.

신규

FourA 블로그, 7개 언어 지원

이제 블로그의 모든 게시물이 영어, 불가리아어, 독일어, 폴란드어, 베트남어, 중국어, 아랍어로 렌더링됩니다. 코드 블록, markdown, 링크는 그대로 유지되며, 검색 시 로컬라이징된 제목이 반환됩니다.

개선

Response에 이를 처리한 proxy 정보가 포함됩니다

각 Single response에는 이제 request를 처리한 proxy ID가 포함되며, Browser response도 동일하게 동작합니다. 동일한 proxy를 유지해야 하는 체인 호출에 유용합니다.

신규

아랍어 지원 (RTL 적용)

메인 사이트가 이제 완전한 RTL 레이아웃과 함께 아랍어로 렌더링되며, 이로써 지원 로케일 목록이 7개로 늘어났습니다. 브라우저 언어가 접속한 페이지와 일치하지 않는 경우, 얇은 배너를 통해 언어 전환을 제안합니다.

개선

정렬 가능한 컬럼과 접이식 사이드바

Dashboard에서 컬럼 헤더를 클릭하여 정렬할 수 있습니다. Activity, API Keys, sessions에 적용되며, 자동 새로고침 후에도 유지되고, Ctrl-클릭(Mac의 경우 Cmd)으로 선택이 해제됩니다. 테이블을 더 넓게 보고 싶을 때는 사이드바를 아이콘 레일 형태로 접을 수도 있습니다.

신규

Browser, 인터랙티브 Turnstile 엔드투엔드 해결

인터랙티브 챌린지 위젯(관리형 Turnstile 패턴이 대표적임)으로 request를 차단하는 사이트들이 이제 unblocker: true 옵션으로 Browser를 호출하면 렌더링된 HTML을 반환합니다. 이전에는 챌린지 페이지를 반환하던 보호된 사이트들을 대상으로 엔드투엔드 검증을 완료했습니다.

신규

6개 언어로 제공되는 사이트 및 Playground

header의 지구본에서 언어를 선택하세요. 이제 사이트와 Playground가 불가리아어, 중국어, 독일어, 폴란드어, 베트남어, 영어로 제공되며, 북마크하거나 공유할 수 있는 로캘 인식 URL이 지원됩니다.

해결

API의 cross-origin 액세스 제한

foura.ai만 credentials를 사용하여 API를 호출할 수 있도록 cross-origin 액세스를 강화했습니다. 또한 metrics endpoint의 입력 필터를 강화하고 개발 전용 fallback secret을 제거했습니다. 기존 integration은 변경되지 않습니다.

해결

사용자 지정 validate 규칙의 성공 처리

요청에 validate.status.accept를 설정한 경우, 엔진은 허용된 200 이외의 상태 코드도 정상적인 성공으로 처리합니다. 기존에는 Activity가 이를 실패로 분류하여 사용량 통계에 오류를 발생시켰습니다. 이제 결과는 사용자의 validate 판정을 따르므로, 허용된 403은 App Fail이 아닌 성공으로 표시됩니다.

개선

Activity 레이블이 Overview와 일치합니다

기존에 Activity는 Application_fail과 같은 원시 결과 문자열을 표시했던 반면, Overview는 적절한 색상과 함께 친숙한 레이블(App Fail)을 사용했습니다. 이제 Activity에서도 동일한 레이블과 색상을 사용하므로, 두 뷰를 일관되게 확인할 수 있습니다.

해결

Non-UTF-8 페이지가 이제 정상적으로 디코딩됩니다

Single을 통해 키릴 문자, 중국어, 일본어 또는 기타 non-UTF-8 페이지를 스크래핑할 때 body가 깨진 글자로 반환되곤 했습니다. 이전에는 사용자가 raw bytes를 확인하기 전에 모든 response를 UTF-8로 강제 디코딩했습니다. 이제는 response에서 charset을 읽어와(Content-Type, 그 다음 <meta charset>, 마지막으로 UTF-8 fallback 적용) 올바르게 디코딩합니다. 이 문제를 제보해 주신 Alexandar Kanchev (Sensika) 님께 감사드립니다.

해결

request를 그대로 에코하는 가짜 proxies 감지

실제 환경의 일부 proxies는 실제로 request를 전달하지 않습니다. 이들은 request를 plaintext server dump 형태로 에코하여 내부 데이터를 탈취하려고 시도합니다. 이제 response가 코드에 도달하기 전에 이 패턴을 감지하므로, Single, Browser, Proxy Finder는 가비지 데이터 대신 명확한 실패(또는 retry)를 반환합니다.

신규

Playground에서 모든 Activity 행 재실행

저장된 페이로드가 있는 모든 Activity 행을 이제 클릭할 수 있습니다. 대화 상자에는 전체 request와 response가 표시됩니다 (복사 버튼 및 body를 생성하기 전에 에러가 발생한 request에 대한 명확한 메시지와 함께 pretty-print되어 표시됨). 'Open in Playground'를 클릭하면 해당 호출을 폼에 그대로 다시 로드하고 아카이브된 response가 이미 렌더링된 상태로 표시하므로, 처음부터 다시 구성할 필요 없이 파라미터를 수정하고 재실행할 수 있습니다. 저장된 페이로드는 24시간 동안 유지되며, 키당 최근 200개까지 보관됩니다.

개선

모든 API response에 request ID가 포함됩니다

인증된 호출은 이제 X-Foura-Request-Id header와 함께 반환됩니다. 이를 자체 로그에 기록해 두면 모든 request를 Activity의 해당 행과 매칭할 수 있으며, 지원 팀에 전달하여 저희 측에서 정확히 어떤 일이 발생했는지 조회하도록 할 수도 있습니다.