전체신규개선해결
해결

API의 cross-origin 액세스 제한

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

해결

커스텀 validate 규칙이 성공으로 집계됩니다

requestvalidate.status.accept를 설정한 경우, 엔진은 허용된 non-200 응답을 정상적인 성공으로 처리합니다. 하지만 Activity에서는 여전히 이를 실패로 분류하여 사용량 통계에 혼선이 있었습니다. 이제 처리 결과가 사용자의 validate 판정을 따르므로, 허용된 403App 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의 해당 행과 매칭할 수 있으며, 지원 팀에 전달하여 저희 측에서 정확히 어떤 일이 발생했는지 조회하도록 할 수도 있습니다.

개선

진행 중인 playground request 취소

playground request가 로딩되는 동안 새로운 Cancel 버튼을 누르면 요청을 깔끔하게 중단합니다. 불안해 보이는 네트워크 에러 대신 'Request canceled' 메시지가 표시되며 패널이 idle 상태로 즉시 전환됩니다.

신규

생성 후 API 키 확인

오늘부터 생성하는 키는 API Keys 페이지와 플레이그라운드의 curl 재현 도구 내에서 언제든지 확인할 수 있습니다. 눈 아이콘을 클릭하고 확인하면 전체 키가 15초 동안 표시된 후 자동으로 사라집니다 (모든 확인 내역은 감사 로그에 기록됩니다). 이전에 생성된 키는 일회성 보기 상태로 유지되므로, 확인 가능한 상태로 만들려면 기존 키를 재발급하십시오.

개선

Proxy Finder의 풀 재검사 속도 향상

이제 재검사 대기열이 몇 주가 아닌 며칠 만에 처리됩니다. 테스트할 각 proxy를 선택하는 시간을 약 2초에서 약 10ms로 단축하여, 부하가 발생해도 풀이 더 최신 상태로 유지됩니다. 로테이션 내 dead IP가 줄어들었으며, 모든 Single 및 Proxy Finder 호출이 더 정상적인 세트를 대상으로 작동합니다.

개선

Proxy pool 갱신 속도 향상

어제 실행당 제한을 해제한 후, 하나의 큰 proxy 블록이 queue를 점유할 때마다 refresh가 계속 지연되었습니다. 이제 모든 배치를 서로 다른 subnet에 분산하여, 각 실행이 전체 concurrency budget을 완전히 활용하도록 했습니다. 그 결과 Proxy Finder pool의 회전 속도가 5~10배 빨라졌으며, stale entry는 몇 시간 내에 정리됩니다.

해결

새로 발견된 proxy가 pool에 더 빠르게 진입합니다

새로 발견된 proxy가 검증을 받기 전에 대기해야 했던 지연 문제를 해결했습니다. 이제 Proxy Finder가 이를 즉시 확인하므로, 더 많은 활성 상태의 작동 중인 proxy가 순환에 투입되어 pool이 더 최신 상태로 유지됩니다.

개선

이제 모바일에서도 Playground가 작동합니다

768px 미만에서는 URL 행이 두 줄로 재배치되고, response 탭은 가로로 스크롤되며, cookie 테이블은 카드 그리드로 전환됩니다. 힌트 툴팁은 호버 대신 탭할 때 열리며, iPhone SE(374px 미만)에는 추가 축소가 적용됩니다. Send 버튼이 올바르게 중앙 정렬되며, 긴 URL이 더 이상 페이지를 가로 스크롤로 밀어내지 않습니다.

개선

Playground expand가 이제 실제 전체 화면 오버레이로 작동합니다

기존의 expand 기능은 page flow 내에서 response 카드를 늘리는 방식이어서, 세로로 긴 패널이 생기면 body 스크롤이 추가되고 레이아웃이 틀어졌습니다. 이제는 사이드바와 viewport 가장자리 사이의 고정 오버레이로 작동하며, 패널이 viewport를 채우도록 확장됩니다. Escape 키로 닫을 수 있으며, 하나의 헬퍼가 클릭 및 키 경로를 처리합니다.

해결

Playground 쿠키, RFC 6265 host-only 규칙 준수

Host-only 쿠키가 서브도메인으로 유출되고 있었습니다. 이제 Domain 속성을 올바르게 추적하며, (흔치 않은) host-only 케이스를 위해 Parsed 뷰에 HO 배지를 추가했습니다. Raw 뷰는 업스트림이 전송한 내용과 일치합니다: 도메인 쿠키의 경우 Domain=.example.com, host-only의 경우 Domain= 라인이 없습니다.