주요 내용
이제 request마다 브라우저 프로필을 선택할 수 있습니다. 원하는 브라우저와 OS를 지정하면 fingerprint와 header가 동일하게 적용됩니다. 이번 주 Single은 브라우저를 실행하지 않고도 두 가지 방어 시스템(SiteGround의 SG-Captcha 및 eBay의 Argon2 챌린지)을 추가로 해결할 수 있게 되었습니다. 그리고 Dashboard의 Activity 뷰는 이제 내부적으로 실행된 구조가 아니라 요청한 내용을 기록합니다.
새로운 기능
request별 브라우저 프로필 선택
지금까지 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별로 요청을 프로파일링하거나 특정 방화벽을 통과하는 스택을 A/B 테스트하는 경우, 다른 모든 변수를 변경하는 동안 이 변수를 일정하게 유지할 수 있습니다.
Single로 SG-Captcha 및 eBay 작업 증명(proof-of-work) 해결
이전에는 Browser를 거쳐야만 우회할 수 있었던 두 가지 방어 시스템이 이제 Single에서 해결됩니다. eBay는 자체 작업 증명 챌린지(Argon2 퍼즐)를 제공하며, SiteGround는 SG-Captcha로 공유 호스팅 웹의 상당 부분을 보호합니다. 둘 다 렌더링 없이 해결되므로, 응답이 단일 HTTP 요청 형태로 반환되고 그에 따라 요금이 청구됩니다.
응답의 방어 신호도 향상되었습니다. 이제 Browser 응답에 defenses: { present, cleared }가 포함되어 페이지 앞단에 어떤 벤더가 있는지, 통과했는지 여부를 확인할 수 있습니다. 청구에도 동일한 규칙이 적용됩니다. 통과한 벤더는 브랜드에 관계없이 표시됩니다. 이 기간 전에는 Cloudflare만 유료 해결 기능이었습니다. 이제 Akamai Bot Manager, SG-Captcha, eBay 챌린지가 그 옆에 추가되었습니다.
대시보드의 Activity 뷰 개편
대시보드 Activity 목록의 두 열이 잘못된 정보를 표시하고 있었습니다. HTTP 메서드는 모든 행에서 항상 POST으로 표시되었습니다(모든 엔드포인트가 POST이므로, 이 열은 아무 정보도 주지 않는 상수였습니다). 또한 Playground 호출의 클라이언트 IP는 실행을 클릭한 사람이 아니라 Playground가 호출된 위치를 기록했습니다.
두 문제 모두 수정되었습니다. 이제 메서드 열은 요청 본문 내에 전송한 동사를 표시합니다. Playground 행의 클라이언트 IP는 API 클라이언트가 위조할 수 없도록 서명된 Playground token 내에 포함된 로그인된 사용자의 브라우저 IP를 표시합니다.
수정하는 김에 나머지 뷰도 개편했습니다. 열이 숨겨지지 않고 노트북 화면에 맞게 테이블이 조정되며, 제품 열이 요청 줄에 합쳐집니다. 세부 정보 패널에 탭이 추가되어 요청, 응답, 방어 요약 정보를 각각 스크롤하여 볼 수 있습니다.
결제: 플랜 변경 시 3D Secure 적용
카드 발급사에서 플랜 변경 시(최초 구독 시뿐만 아니라) 3DS 확인을 요구하는 경우, 해당 단계가 실행되지 않고 변경 사항이 조용히 롤백되었습니다. 이제 해당 단계가 실행됩니다. 지난 달에 플랜을 변경하려다 아무 변화가 없었던 것처럼 보였다면 이 때문입니다.
내부 개선 사항
Playground는 가져온 사이트의 데이터로 응답 헤더를 구성하는 것을 거부합니다(헤더 삽입 관련 버그를 조기에 발견했습니다). 대시보드의 결제 엔드포인트는 응답하기 전에 호출자가 리소스를 소유하고 있는지 확인하여 IDOR 경로를 차단합니다.
6일 발생한 장애로 빌드 도중 배포 호스트의 디스크가 가득 차는 문제가 발생한 후, 배포 파이프라인 자체에 대해 약 일주일에 걸쳐 여러 수정 작업을 진행했습니다. 이제 모든 서비스는 디스크 여유 공간이 없으면 빌드를 거부하고, 배포는 경쟁 상태 대신 직렬화되며, 백엔드가 불안정할 때도 게이트웨이는 유지됩니다. 또한 서비스는 30초 후 강제 종료될 때까지 멈춰 있는 대신 SIGTERM 신호에 맞춰 정상적으로 종료됩니다.
오랫동안 "어떤 브라우저 서명"을 사용할지는 사용자를 대신해 저희가 결정해 왔습니다. 하지만 더 이상 그럴 필요가 없습니다.