FingerPrint 관련 정리
fingerprintjs v4를 내부 사용 검토를 위해 어떤 방식으로 사용이 되고 어떤 기능들이 기본적으로 지원되는지 확인하면 정리하는 목적으로 작성한 글입니다.
Browser FingerPrinting?
Browser FingerPrinting
(간단하게 FingerPrinting 이라고 하겠습니다)은 웹사이트 방문자를 쿠키 없이 추적하는 기술로 브라우저 지문
이라고도 하는데 사용자 PC와 브라우저는 데이터를 처리 할 때의 각각의 고유값을 활용하여 개개인을 특정하게 됩니다. 단순히 방문자를 식별하고 행동 정보를 수집하는 수단으로는 쿠키보다 정확성이 떨어지지만 방문자가 쿠키 추적을 차단 하였을 경우에도
FingerPrinting
은 사용자의 활동을 추적 할 수 있다는 장점이 있습니다.유명한 라이브러리로는 FingerPrintJS 가 있으며 이 라이브러리를 활용하여 방문자의 브라우저 정보를 식별하고, 봇 감지, vpn 사용 여부 등 이벤트를 감지 할 수 있습니다.
여러 종류의 라이브러리 및 SDK를 지원하고 있어 개발 환경에 맞춰 설치하여 사용하면 됩니다.
이벤트
FingerPrint
을 통해 감지 할 수 있는 이벤트 정보는 크게 다음과 같습니다 (Pro Plus 기준):- identification: 브라우저 정보 (브라우저, ip, ip 위치, 첫 방문, 마지막 방문 시간 등등)
- botd: 봇 감지
- incognito: 프라이빗 모드 사용 여부
- ipInfo: 유저 ip 정보 (v4, v6)
- privacySettings: 요청이 개인 정보 보호 브라우저(예: Tor) 또는 지문 채취가 차단된 브라우저에서 발생한 것인지 여부
- tampering: 브라우저 변조 여부
- virtualMachine: 가상머신을 통해 접근했는지 여부
- vpn: vpn 사용 여부 확인 및 관련 정보
위의 정보들을 받아오기 위해서는
fingerprint Server API
이벤트 감지 api를 호출해야되는데 몇가지 주의 및 체크해야될 사항이 있습니다.- region에 맞는 api url 사용 (global, eu, asia)
- global:
https://api.fpjs.io
- eu:
https://eu.api.fpjs.io
- asia:
https://ap.api.fpjs.io
- endpoint에 사용하기 위한 API KEY 필요
- header에 다음과 같이 전달
Auth-API-Key: XXX
감지된 유저 정보들은 fingerPrint에서 제공하는 보드에 기록되며 상세 확인도 가능합니다.
Botd
봇을 감지하는 것 뿐만 아니라
notDetected
,good
, bad
키워드를 통해 봇 분류 및 사용 여부를 판단 합니다. incognito
브라우저 시크릿모드(incognito)로 서비스에 접근했는지
true/false
값으로 판단합니다. ipInfo
ip 주소의 물리적 위치에 대한 정보 제공하며 다음과 같은 형식으로 정보 제공
privacySettings
firefox
, brave
같은 개인정보 보호에 중점을 두고 있는 브라우저의 경우 핑거프린팅을 차단하거나 사용을 방지합니다. 해당 privacySettings는 이러한 설정이 되어 있는 브라우저에서 요청이 발생했는지 여부를 판단합니다Tampering
브라우저 변조 여부를 판단하며, visitorId를 활용
anomalyScore
(0~1 사이) 를 통해 정도를 나타냅니다.virtualMachine
가상머신을 통해 요청을 보냈는지 확인하며 다음과 같은 데이터 형식을 가집니다
vpn
vpn 사용여부 감지할 뿐만 아니라 유저의 원래 ip와 다른 타임존에 있는지 여부 역시 체크합니다.
다른 타임존에 있는 경우
timezoneMismatch
값이 true로 설정됩니다.FingerPrintJS
설치 및 설정
설치 후 사용하기 위해서는 다음과 같이
Provider
로 감싸주는 작업을 진행합니다useVisitorData
훅을 사용하여 fingerprint 정보를 요청하고 확인 할 수 있습니다비용은?
v3버전까지는 오픈 소스이며 정확성이 60%까지라고 되어 있습니다. 정확성을 높이기 싶다면 pro 플랜으로 설정이 필요합니다.
현재 최신 버전인 v4 부터는 BSL 라이센스 1.1이 취득하여, pro 플랜을 사용하지 않는 이상 상업적 목적으로는 사용할 수 없게 되어 있으며 관련하여 아래와 같이 작성이 되어 있습니다.
높은 정확성 보다는 대략적인 정보만을 파악하는것이 목적이라면 혹은 돈을 지불하는것이 싫다면 v3를 사용하면 될거 같습니다. 그게 아니라면 v4를 사용하는게 맞겠지만 한달에 최소 99$를 지불해야되기 때문에
상황에 따라 버전을 선택하여 사용하면 될거 같습니다.