Moai+Easter 上級マニュアル
ご案内 Moaiエンジン CustomBoyエンジン HowToコンパイル Moai CGI Developers
Overview and Tutorial Cookie Hints PostVars Hints Fingerprint Hints Snippet Hints Futaba Note
はじめに
ここではFingerprint algorithmが取り扱う値について項目毎に解説する.
目次
- Fgp_userAgent
- Fgp_language
- Fgp_colorDepth
- Fgp_ScreenResolution
- Fgp_TimezoneOffset
- Fgp_SessionStorage
- Fgp_LocalStorage
- Fgp_IndexedDB
- Fgp_BodyAddBehavior
- Fgp_OpenDatabase
- Fgp_CpuClass
- Fgp_Platform
- Fgp_doNotTrack
- Fgp_PluginsString
- Fgp_Canvas
Fgp_userAgent (Category: fingerprint)
navigator.userAgentより取得されるいわゆるUser-Agent文字列である.目次に戻る
Fgp_language (Category: fingerprint)
navigator.languageより取得されるいわゆるBrouserの言語情報を示す文字列である.日本語環境のBrowserの場合、ja、ja-JP、ja-jp、ja-JP-macなどの値を取るが、実際どのような値になるかはBrowserやその設定、システムのlocale設定などによっても様々となる.
勿論例外もあるがおおよそ以下が目安である.
- Android: ja-JP
- iPhone: ja-jp
- Mac Firefox: ja-JP-mac
- Mac safari: ja-jp
- その他: ja
目次に戻る
Fgp_colorDepth (Category: fingerprint)
screen.colorDepthより取得されるBrowserの色深度bit数を示す文字列である.32、24、16などの値を取るが、実際どのような値になるかはBrowserやその設定などによっても様々となる.
目次に戻る
Fgp_ScreenResolution (Category: fingerprint)
screen.width, screen.heightより取得されるモニタの解像度を示す二つの数字を文字xで連結した文字列である.順番はこれとは逆順になることもある.
目次に戻る
Fgp_TimezoneOffset (Category: fingerprint)
new Date().getTimezoneOffset() により取得されるタイムゾーンを意味する(世界標準時からの)オフセット値を示す文字列である.日本ではこの値は必ず -540 になると考えてよい.
目次に戻る
Fgp_SessionStorage (Category: fingerprint)
!!window.sessionStorage というコードSnippetを実行した結果を示し、trueまたはfalseという文字列となる.そのBrowserにsessionStorage機構が存在するか否かを示す.
Browserの対応状況は以下が目安である(MDNによる).
- Chrome: 5以上
- Firefox(Gecko): 2以上
- IE: 8以上
- Opera: 10.50以上
- Safari(Webkit): 4以上
- Android: 2.1以上
- Opera Mobile: 11以上
- Safari Mobile: iOS 3.2以上
目次に戻る
Fgp_LocalStorage (Category: fingerprint)
!!window.localStorage というコードSnippetを実行した結果を示し、trueまたはfalseという文字列となる.そのBrowserにlocalStorage機構が存在するか否かを示す.
Browserの対応状況は以下が目安である(MDNによる).
- Chrome: 4以上
- Firefox(Gecko): 3.5以上
- IE: 8以上
- Opera: 10.50以上
- Safari(Webkit): 4以上
- Android: 2.1以上
- Opera Mobile: 11以上
- Safari Mobile: iOS 3.2以上
目次に戻る
Fgp_IndexedDB (Category: fingerprint)
!!window.indexedDB というコードSnippetを実行した結果を示し、trueまたはfalseという文字列となる.そのBrowserにindexedDB機構が存在するか否かを示す.
Browserの対応状況は以下が目安である(MDNによる).
- Chrome: 23以上
- Firefox(Gecko): 10以上
- IE: 10以上
- Opera: 15以上
- Safari(Webkit): 7.1以上
- Edge: OK
- Android: 4.4以上
- Firefox Mobile: 22以上
- Firefox OS: 1.0.1以上
- Opera Mobile: 22以上
- Safari Mobile: 8以上
目次に戻る
Fgp_BodyAddBehavior (Category: fingerprint)
typeof(document.body.addBehavior) というコードSnippetを実行した結果を示し、functionまたはobjectまたはundefinedという文字列となる.そのBrowserにdocument.body.addBehavior メソッドが存在するか否かを示す.
これはおそらくIE10以上にしか存在しない.
- IE10以上: functionを返す.
- IE9以下: objectを返す.
- その他: undefinedを返す.
目次に戻る
Fgp_OpenDatabase (Category: fingerprint)
typeof(window.openDatabase) というコードSnippetを実行した結果を示し、functionまたはundefinedという文字列となる.そのBrowserにHTML5 WebSQL Databaseがサポートされているか否かを示す.
- Chrome: 8以上か?
- Firefox(Gecko): 未サポート(undefinedを返す)
- IE: 未サポート(undefinedを返す)
- Opera: 10.6以上か?
- Safari: 3.1以上
- Android: 2.1以上
目次に戻る
Fgp_CpuClass (Category: fingerprint)
navigator.cpuClass より取得されるこのBrowserの動作しているMachineのCPU情報を示す文字列である.x86、PPC などを返すと言われているが、実際のところほとんどのケースで空値となっている.
目次に戻る
Fgp_Platform (Category: fingerprint)
navigator.platform より取得されるこのBrowserの動作しているOS環境を示す文字列である.おおよそ以下が目安である.
- Windows32/WOW : Win32
- Windows64 : Win64
- Linux32 : Linux i686
- Linux64 : Linux x86_64
- android : Linux armv7l
- iPhone : iPhone
- Mac : MacIntel
目次に戻る
Fgp_doNotTrack (Category: fingerprint)
navigator.doNotTrack より取得されるこのBrowserがTrackingを拒否しているか否か(DNT機能がOnか否か)を示す文字列である.Firefox9以降より導入された.
Firefox9以降の場合、プライバシーの設定画面において「トラッキングの拒否をサイトに通知する」にチェックを入れるとこれが有効になり、この値は 1 となる.
チェックがOFFの場合 unspecified という値となる。
それ以外の環境では空値を返すとみなしてよい.
目次に戻る
Fgp_PluginsString (Category: fingerprint)
navigator.plugins の値を元に取得されるこのBrowserにインストールされているPlugin群を示す文字列である.環境によって様々なPluginやそのVersionがインストールされており、従ってほぼ自由文字列と考えてよく、リアルに偽装したところであまり意味がないと思われる.
ただしIEの場合はこれは空値である.
目次に戻る
Fgp_Canvas (Category: fingerprint)
いわゆるCanvas Fingerprintと呼ばれる値である.この値は fp.js における getCanvasFingerprint関数によって取得される文字列である.
getCanvasFingerprintでは HTML5のCanvas APIを使い図形や文字などを描き、次にその結果をPNG画像とし、最後にそのPNG画像全体のFile ImageをBASE64 Encodingした結果がその値となる.
この画像の出力結果は使用するRendering EngineやシステムにインストールされているGraphics system(GDI,X11 etc)、Graphics cardなどのハードウェアにも依存することが考えられる.
それを考慮すると全体としてそこそこ自由度の高い文字列とみなすこともできる.
よって、実のところ単純にデタラメな値を設定しても偽装か否かを見破るのはそこそこ困難であると考えられるが、このあたりをどう評価するかは人によって判断が分れるところであろう.
目次に戻る
This article was written by:

K.Yakisoba.H
@znk project