대시보드 컨트롤에 다크 테마 적용
다크 테마에서 드롭다운, 체크박스, 스크롤바, 자동 완성 필드 및 대화상자 버튼이 밝은 테마로 표시되던 문제(흰색 상자, 불필요한 윤곽선)가 있었습니다. 이제 모든 컨트롤이 활성화된 테마를 따릅니다. 모달이 열려 있을 때 배경 페이지의 스크롤이 중지되고, 대화상자 내부의 툴팁이 최상단에 표시되며, 숫자 입력 필드의 스핀 버튼이 숨겨집니다.
FourA의 최신 업데이트 및 개선 사항
다크 테마에서 드롭다운, 체크박스, 스크롤바, 자동 완성 필드 및 대화상자 버튼이 밝은 테마로 표시되던 문제(흰색 상자, 불필요한 윤곽선)가 있었습니다. 이제 모든 컨트롤이 활성화된 테마를 따릅니다. 모달이 열려 있을 때 배경 페이지의 스크롤이 중지되고, 대화상자 내부의 툴팁이 최상단에 표시되며, 숫자 입력 필드의 스핀 버튼이 숨겨집니다.
기본 링크가 설정되지 않아 일부 결제 완료된 청구서에서 PDF 버튼이 렌더링되지 않았습니다. 이제 Invoices 탭의 모든 결제 완료된 청구서에 정상적으로 작동하는 PDF 버튼이 제공됩니다.
부정적인 validate을 /api/auto에 전달한 경우({data: {fail: ['"Due to legal reasons"']}}처럼), 실패 목록이 해당 텍스트와 일치하지 않아 Cloudflare의 'Just a moment' 삽입 페이지가 캐시된 성공으로 통과될 수 있었습니다. 이제 Auto는 validate 규칙을 적용하기 전에 챌린지 페이지를 거부하며, 점수를 매기는 대신 잘못된 exit를 교체하고 다시 해결합니다.
호스팅된 MCP 서버를 통해 foura_auto에 긴 타임아웃을 설정할 때, 호출이 완료되기 전 에지(edge)에서 request 타임아웃이 발생할 수 있던 문제가 수정되었습니다. 이제 최대 예산의 자동 호출이 180초 예산을 끝까지 정상적으로 실행합니다.
단일 대상에 많은 동시 Auto 호출을 실행할 때 429 오류가 발생했다면, 이는 웜 패스(warm path)가 점수가 가장 높은 항목을 선택하고 한 번 재생하여 해당 호출들이 단일 캐시된 exit로 집중되었기 때문입니다. 이제 Auto는 필요에 따라 추가 세션을 열고 각 호출을 부하가 가장 적은 exit로 라우팅하므로, 버스트(burst)가 하나의 proxy ID에 집중되지 않고 여러 proxy ID로 분산됩니다. 로컬 측정 결과: no-cookie 이식 가능 호스트에서 100건의 호출 버스트가 이제 수 초 내에 확장된 풀 전체로 분산됩니다.
Cloudflare는 정상적으로 통과하는 페이지에도 패시브 스크립트를 주입하며, 기존의 Auto는 이를 활성 챌린지로 간주하여 전체 브라우저 solve를 실행했습니다. 이제 실제 인터스티셜 마커('just a moment' 페이지 등)만 브라우저 경로를 트리거하며, 정상적인 200 응답은 더 저렴한 proxy 계층에서 반환됩니다. 또한 Auto는 기본적으로 최대 5개의 리디렉션을 따릅니다(followRedirects을 통해 구성 가능).
Cloudflare로 보호되는 대상이 챌린지 통과 후 실제 geo-block 페이지(451)를 제공할 때, watcher가 통과 상태를 하드코딩했기 때문에 Browser 제품은 이를 200으로 보고했습니다. 이제 watcher는 통과 후의 실제 Document를 읽으므로 200은 200으로 유지되고 451은 451로 표시되며, Auto는 잘못된 콘텐츠를 거부하고 validate 규칙과 정확히 일치하는 exit를 계속 검색합니다.
이제 키보드 레이아웃과 관계없이 Cmd+K(Ctrl+K) 단축키로 커맨드 팔레트와 검색 모달을 열 수 있습니다. 이전에는 입력된 문자(키릴 문자 레이아웃의 경우 к)를 일치시켰기 때문에 비라틴 키보드에서는 작동하지 않았습니다. 이제는 물리적 키를 기준으로 일치시킵니다. 메인 사이트, 블로그 및 문서 전체에서 수정되었습니다.
콜드 Auto solve는 몇 분이 소요될 수 있으며, 이제 request는 전체 예산 동안 유지됩니다. 모든 계층의 오류는 클라이언트가 파싱할 수 있는 JSON으로 반환됩니다.
cookie 재사용이 가능한 사이트(bet365가 기준이 됨)에서 첫 번째 해결 후 저렴한 2 크레딧 replay로 전환되는 대신 요청당 15 크레딧의 비싼 브라우저 해결 방식에 머물러 있었습니다. 두 가지 버그가 있었습니다. 일시적인 전송 오류 발생 시 래치가 실행되는 문제와, 성공적인 브라우저 replay가 세션 cookie를 갱신하지 않는 문제였습니다. 두 문제 모두 수정되었습니다. 이제 요금 정책에 명시된 대로 cookie 재사용 가능 사이트에 대한 반복 요청은 첫 번째 해결 이후 2 크레딧이 청구됩니다.
foura.ai만 credentials를 사용하여 API를 호출할 수 있도록 cross-origin 액세스를 강화했습니다. 또한 metrics endpoint의 입력 필터를 강화하고 개발 전용 fallback secret을 제거했습니다. 기존 integration은 변경되지 않습니다.
요청에 validate.status.accept를 설정한 경우, 엔진은 허용된 200 이외의 상태 코드도 정상적인 성공으로 처리합니다. 기존에는 Activity가 이를 실패로 분류하여 사용량 통계에 오류를 발생시켰습니다. 이제 결과는 사용자의 validate 판정을 따르므로, 허용된 403은 App Fail이 아닌 성공으로 표시됩니다.
Single을 통해 키릴 문자, 중국어, 일본어 또는 기타 non-UTF-8 페이지를 스크래핑할 때 body가 깨진 글자로 반환되곤 했습니다. 이전에는 사용자가 raw bytes를 확인하기 전에 모든 response를 UTF-8로 강제 디코딩했습니다. 이제는 response에서 charset을 읽어와(Content-Type, 그 다음 <meta charset>, 마지막으로 UTF-8 fallback 적용) 올바르게 디코딩합니다. 이 문제를 제보해 주신 Alexandar Kanchev (Sensika) 님께 감사드립니다.
실제 환경의 일부 proxies는 실제로 request를 전달하지 않습니다. 이들은 request를 plaintext server dump 형태로 에코하여 내부 데이터를 탈취하려고 시도합니다. 이제 response가 코드에 도달하기 전에 이 패턴을 감지하므로, Single, Browser, Proxy Finder는 가비지 데이터 대신 명확한 실패(또는 retry)를 반환합니다.
새로 발견된 proxy가 검증을 받기 전에 대기해야 했던 지연 문제를 해결했습니다. 이제 Proxy Finder가 이를 즉시 확인하므로, 더 많은 활성 상태의 작동 중인 proxy가 순환에 투입되어 pool이 더 최신 상태로 유지됩니다.