Zeno
로그인
무료 월 …회 식별 · 그 이후에는 사용량만큼 결제

기기 식별
모든 가입하기 를 위한

시크릿 모드나 쿠키를 삭제한 상태에서도 재방문한 브라우저를 식별하고, 봇과 위조된 기기를 탐지하며, 조치를 취하기 전에 모든 결과를 서버에서 확인하세요.

이 브라우저에 대해 알 수 있는 내용을 확인하세요. 데모를 실행하면 신호가 전송되고 ID가 저장됩니다.

모든 식별이 알려주는 정보

코드용 API와 케이스를 검토하는 담당자를 위한 대시보드에서.

모든 식별을 실시간으로

새 이벤트가 몇 초 안에 표시되며, 방문자, external ID, 시간을 포함합니다.

봇과 스푸핑 탐지

자동화, 헤드리스 브라우저, 소프트웨어 렌더링, 대체된 네이티브, 일치하지 않는 시간대.

공유 기기 확인

기기에서 확인된 모든 external ID를 나열하여 다중 계정을 쉽게 파악할 수 있습니다.

백엔드에서 검증

브라우저는 request ID만 받습니다. 서버가 secret key로 이벤트를 가져와 판단합니다.

한 번의 호출로 external ID 삭제

external ID를 삭제하면 해당 이벤트와 기기 연결이 모두 삭제됩니다.

사용한 만큼 결제

요금제나 약정이 없습니다. 결제 주기마다 사용한 식별 건수만큼만 지불하며, 모든 시그널, 서버 API, 대시보드가 포함됩니다.

요금제 및 모든 가격 보기 →

표시된 가격에는 해당 세금 및 수수료(예: VAT)가 포함되지 않습니다.

설치부터 검증까지 3단계

브라우저는 request ID를 받고, 서버는 전체 정보를 받습니다.

  1. 1

    에이전트 추가

    API에서 제공하는 script 태그 하나 또는 npm의 타입이 지정된 ES 모듈.

    login.html
    <script src="https://zenocdn.net/agent.js"></script>
    <script>
    	const agent = FingerprintAgent.start({ endpoint: 'https://zenocdn.net', publicKey: 'pk_...' })
    </script>
  2. 2

    브라우저에서 식별

    폼이 열릴 때 시작하고, 사용자가 로그인하면 request ID를 받으세요.

    login.js
    // After a successful login:
    const { requestId } = await agent.get({ externalId: user.id })
    
    await fetch('/api/login/verify', { method: 'POST', body: JSON.stringify({ requestId }) })
  3. 3

    서버에서 검증

    secret key로 이벤트를 조회해 판단하세요. 브라우저는 플래그를 볼 수 없습니다.

    login.server.ts
    const response = await fetch(`https://api.zeno.id/events/${requestId}`, {
    	headers: { 'Auth-API-Key': process.env.FP_SECRET_KEY },
    })
    const event = await response.json()
    
    if (event.bot === 'bad' || event.riskScore >= 15) {
    	throw new Error('Review this login')
    }
  • REST, SDK 종속 없음

    /events, /visitors, /external-ids의 GET, PATCH, DELETE를 헤더 하나로.

  • 유출되기 어려운 키

    pk_ 및 sk_ 접두사와 체크섬 사용; 시크릿 키는 해시로 저장되며 한 번만 표시됩니다.

  • 모든 이벤트 검색

    visitor, external ID, IP, flag, bot verdict, risk score, 날짜로 필터링.

  • 한 번의 호출로 external ID 삭제

    DELETE /external-ids/{id}는 해당 ID의 모든 이벤트와 기기 연결을 삭제합니다.

질문

내 프레임워크에서도 작동하나요? +

네. 에이전트는 의존성이 없는 단순한 ES 모듈이라 React, Svelte, Vue 또는 프레임워크 없이도 실행됩니다. 번들러가 없다면 /agent.js를 로드하고 전역 FingerprintAgent를 사용하세요.

공유된 visitor ID는 다중 계정의 증거인가요? +

아니요. 같은 OS를 쓰는 같은 기종의 휴대폰처럼 동일한 기기는 같은 fingerprint를 가지므로, 저장된 ID가 없는 브라우저가 다른 브라우저의 visitor ID와 일치할 수 있습니다. external ID, flag, 연결 정보와 함께 검토할 단서로 보세요.

에이전트는 무엇을 수집하나요? +

100개 이상의 기기 신호: canvas, WebGL, 오디오, 글꼴, 화면, 하드웨어, 로케일, 플러그인, 자동화 흔적. WebRTC 네트워크 주소는 절대 읽지 않습니다.

예산 또는 사용량 한도에 도달하면 어떻게 되나요? +

식별은 조용히 일시 중지됩니다. 에이전트가 request ID 대신 capped를 반환하므로 사용자는 오류를 보지 않고 로그인은 계속 작동합니다. 일, 주, 월 단위 예산과 키별 지출 한도를 설정하세요. 그 밖에는 속도 제한이 없습니다.

저에게 맞지 않다면요? +

환불해 드립니다. 첫 결제 후 3개월 이내에 만족하지 못하셨나요? 그 기간에 결제하신 금액 전액을 조건 없이 환불해 드립니다.

데이터는 어디에 저장되나요? +

EU 내 AWS eu-west-1에 저장됩니다. 이벤트는 삭제할 때까지 보관되며, 1년, 3년 또는 5년을 선택하면 해당 기간 동안 보관됩니다. API 호출 한 번으로 특정 사용자에 대해 저장된 모든 데이터를 삭제할 수 있습니다.

첫 번째 식별, 단 몇 분 만에

사용한 만큼 결제, 모든 신호 포함.