← 전체 글

FourA Digest (2026년 7월 24일 - 8월 7일)

request별로 browser profile을 지정할 수 있습니다. Single 모드는 이제 Browser 없이도 SiteGround 및 eBay의 연산 검증을 통과합니다. Dashboard의 Activity 뷰가 완전히 새로 구축되었습니다.

주요 업데이트

브라우저 프로필 선택을 이제 요청별(per-request) 옵션으로 설정할 수 있습니다. 원하는 브라우저와 OS를 지정하면 fingerprint와 header가 해당 환경에 일치하도록 구성됩니다. Single 모드에 이번 주 2가지 검증 로직(SiteGround 및 eBay의 연산 기반 검증)이 추가되어 Browser 인스턴스를 실행하지 않고도 통과할 수 있습니다. 또한 Dashboard의 Activity 뷰는 내부 파이프라인 세부 사항 대신 요청한 원본 데이터를 기록하도록 개선되었습니다.

새로운 기능

요청별 브라우저 프로필 지정

이전까지는 unblocker: true에서 기본값으로 설정된 단일 서명만 사용할 수 있었습니다. 이제 원하는 프로필을 직접 지정할 수 있습니다:

{ "url": "https://example.com", "unblocker": true, "profile": "firefox147" }

또는 브라우저 및 OS 조합을 지정할 수 있습니다.

{ "url": "https://example.com", "unblocker": true, "browser": "Chrome", "os": "Windows 10" }

API는 알 수 없는 조합을 이름 기준으로 거부하고 사용 가능한 항목을 표시하므로, 오타로 인해 의도하지 않은 서명이 조용히 전송되는 일이 없습니다.

전체 카탈로그는 GET /api/profiles에 있습니다. 이는 비밀 정보가 아닌 기능 목록이므로 공개되어 있으며(키 불필요) 누구나 접근할 수 있습니다. 작성 시점 기준으로 Windows, macOS, Android, iOS 환경의 Chrome, Firefox, Edge, Safari, Tor 전반에 걸쳐 79개의 프리셋이 제공됩니다. Playground 또한 동일한 목록을 참조하므로 드롭다운에는 항상 코드에서 요청할 수 있는 정확한 항목만 표시됩니다.

중요한 이유: 대상 사이트가 OS별로 request를 프로파일링하거나, 팀에서 특정 차단을 우회하는 스택을 A/B 테스트하는 경우, 이제 다른 모든 요소를 변경하면서 해당 변수만 고정할 수 있습니다.

Single 모드에서 SiteGround 및 eBay의 연산 검증 통과 지원

기존에는 Browser를 거쳐야 했던 두 가지 방어 체계가 이제 Single에서 바로 해결됩니다. eBay는 자체 작업 증명 챌린지(Argon2 퍼즐)를 전송하고, SiteGround는 공유 호스팅 웹의 상당 부분에 걸쳐 자체 검사를 실행합니다. 두 방식 모두 렌더링 없이 해결되므로 단일 HTTP request 형태로 response가 반환되며 과금도 이에 맞게 적용됩니다.

response 내 방어 감지 신호도 강화되었습니다. 이제 Browser response에 defenses: { present, cleared }가 포함되어, 페이지 앞에 어떤 벤더가 배치되었는지와 통과 여부를 확인할 수 있습니다. 청구도 동일한 규칙을 따릅니다. 벤더 브랜드에 관계없이 통과한 모든 벤더에 비용이 귀속됩니다. 기존에는 단 하나의 검사 서비스만 대화형 페이지로 청구되었으나, 이제 3개가 추가되었습니다.

Dashboard의 Activity 뷰 재구축

Dashboard의 Activity 목록에 있는 두 개 열에 잘못된 정보가 표시되고 있었습니다. 모든 엔드포인트가 POST 방식이어서 HTTP method 열이 모든 행에 항상 POST로만 표시되어 실질적인 정보를 제공하지 못했습니다. 또한 Playground 호출 시 client IP 열에는 Run을 클릭한 사용자가 아닌 Playground 호출 서버의 위치가 기록되었습니다.

두 문제 모두 수정되었습니다. 이제 method 열에는 request body 내부로 전송한 동사가 표시됩니다. Playground 행의 client IP에는 로그인한 사용자의 브라우저 IP가 서명된 Playground token에 담겨 기록되므로 API client가 이를 위조할 수 없습니다.

이 작업을 진행하면서 해당 뷰의 나머지 부분도 함께 재구축했습니다. 노트북 화면에서도 열이 숨겨지지 않고 테이블에 맞게 표시되며, product 열은 request 라인으로 통합되었습니다. 상세 패널에는 탭이 추가되어 request, response, 방어 요약 정보가 각각 개별 스크롤로 분리되었습니다.

Billing: 플랜 변경 시 3D Secure 지원

카드 발급사에서 최초 구독 시뿐만 아니라 플랜 변경 시에도 3DS 인증을 요구하는 경우, 해당 단계가 실행되지 않아 변경 사항이 조용히 롤백되는 현상이 있었습니다. 이제 정상적으로 실행됩니다. 지난달에 플랜 변경을 시도했으나 아무 반응이 없었던 경우, 이 문제가 원인이었습니다.

내부 개선 사항

Playground는 가져온 사이트의 데이터로 response header를 생성하지 않도록 차단합니다(초기에 발견한 header-injection 유형의 버그). Dashboard의 결제 endpoint는 응답하기 전에 호출자가 해당 리소스의 소유자인지 확인하여 IDOR 경로를 차단합니다.

6일 빌드 도중 배포 호스트의 디스크가 가득 차면서 발생한 장애 이후, 배포 파이프라인 자체에 일주일 분량의 수정 작업이 집중적으로 적용되었습니다. 이제 모든 서비스는 여유 디스크 공간이 없으면 빌드를 거부하고, 배포는 경쟁 상태 없이 순차적으로 진행되며, 백엔드가 불안정하게 깜빡여도 게이트웨이는 유지되고, 서비스는 30초 뒤 강제 종료될 때까지 대기하지 않고 SIGTERM 수신 시 즉각 종료됩니다.

오랫동안 "어떤 브라우저 서명을 사용할지"는 저희가 대신 결정해 오던 문제였습니다. 이제는 그럴 필요가 없습니다.