lemonldap-ng/lemonldap-ng-portal/site/htdocs/static/bwr/fingerprintjs2/fingerprint2.min.js

20 lines
42 KiB
JavaScript
Raw Normal View History

2018-06-21 19:23:34 +02:00
/*
* Fingerprintjs2 1.8.0 - Modern & flexible browser fingerprint library v2
* https://github.com/Valve/fingerprintjs2
* Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(name,context,definition){"use strict";if(typeof window.define==="function"&&window.define.amd){window.define(definition)}else if(typeof module!=="undefined"&&module.exports){module.exports=definition()}else if(context.exports){context.exports=definition()}else{context[name]=definition()}})("Fingerprint2",this,function(){"use strict";var Fingerprint2=function(options){if(!(this instanceof Fingerprint2)){return new Fingerprint2(options)}var defaultOptions={swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:true,sortPluginsFor:[/palemoon/i],userDefinedFonts:[],excludeDoNotTrack:true,excludePixelRatio:true};this.options=this.extend(options,defaultOptions);this.nativeForEach=Array.prototype.forEach;this.nativeMap=Array.prototype.map};Fingerprint2.prototype={extend:function(source,target){if(source==null){return target}for(var k in source){if(source[k]!=null&&target[k]!==source[k]){target[k]=source[k]}}return target},get:function(done){var that=this;var keys={data:[],addPreprocessedComponent:function(pair){var componentValue=pair.value;if(typeof that.options.preprocessor==="function"){componentValue=that.options.preprocessor(pair.key,componentValue)}keys.data.push({key:pair.key,value:componentValue})}};keys=this.userAgentKey(keys);keys=this.languageKey(keys);keys=this.colorDepthKey(keys);keys=this.deviceMemoryKey(keys);keys=this.pixelRatioKey(keys);keys=this.hardwareConcurrencyKey(keys);keys=this.screenResolutionKey(keys);keys=this.availableScreenResolutionKey(keys);keys=this.timezoneOffsetKey(keys);keys=this.sessionStorageKey(keys);keys=this.localStorageKey(keys);keys=this.indexedDbKey(keys);keys=this.addBehaviorKey(keys);keys=this.openDatabaseKey(keys);keys=this.cpuClassKey(keys);keys=this.platformKey(keys);keys=this.doNotTrackKey(keys);keys=this.pluginsKey(keys);keys=this.canvasKey(keys);keys=this.webglKey(keys);keys=this.webglVendorAndRendererKey(keys);keys=this.adBlockKey(keys);keys=this.hasLiedLanguagesKey(keys);keys=this.hasLiedResolutionKey(keys);keys=this.hasLiedOsKey(keys);keys=this.hasLiedBrowserKey(keys);keys=this.touchSupportKey(keys);keys=this.customEntropyFunction(keys);this.fontsKey(keys,function(newKeys){var values=[];that.each(newKeys.data,function(pair){var value=pair.value;if(value&&typeof value.join==="function"){value=value.join(";")}values.push(value)});var murmur=that.x64hash128(values.join("~~~"),31);return done(murmur,newKeys.data)})},customEntropyFunction:function(keys){if(typeof this.options.customFunction==="function"){keys.addPreprocessedComponent({key:"custom",value:this.options.customFunction()})}return keys},userAgentKey:function(keys){if(!this.options.excludeUserAgent){keys.addPreprocessedComponent({key:"user_agent",value:this.getUserAgent()})}return keys},getUserAgent:function(){return navigator.userAgent},languageKey:function(keys){if(!this.options.excludeLanguage){keys.addPreprocessedComponent({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""})}return keys},colorDepthKey:function(keys){if(!this.options.excludeColorDepth){keys.addPreprocessedComponent({key:"color_depth",value:window.screen.colorDepth||-1})}return keys},deviceMemoryKey:function(keys){if(!this.options.excludeDeviceMemory){keys.addPreprocessedComponent({key:"device_memory",value:this.getDeviceMemory()})}return keys},getDeviceMemory:function(){return navigator.deviceMemory||-1},pixelRatioKey:function(keys){if(!this.options.excludePixelRatio){keys.addPreprocessedComponent({key:"pixel_ratio",value:this.getPixelRatio()})}return keys},getPixelRatio:function(){return window.devicePixelRatio||""},screenResolutionKey:function(keys){if(!this.options.excludeScreenResolution){return this.getScreenResolution(keys)}return keys},getScreenResolution:function(keys){var resolution;if(this.options.detectScreenOrientation){resolution=window.screen.height>window.screen.width?[window.screen.height,window.screen.width]:[window.screen.width,window.screen.height]}else{resolution=[window.screen.width,window.screen.height]}keys.a
var glContext=this.getWebglCanvas();var extensionDebugRendererInfo=glContext.getExtension("WEBGL_debug_renderer_info");return glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL)+"~"+glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)}catch(e){return null}},getAdBlock:function(){var ads=document.createElement("div");ads.innerHTML="&nbsp;";ads.className="adsbox";var result=false;try{document.body.appendChild(ads);result=document.getElementsByClassName("adsbox")[0].offsetHeight===0;document.body.removeChild(ads)}catch(e){result=false}return result},getHasLiedLanguages:function(){if(typeof navigator.languages!=="undefined"){try{var firstLanguages=navigator.languages[0].substr(0,2);if(firstLanguages!==navigator.language.substr(0,2)){return true}}catch(err){return true}}return false},getHasLiedResolution:function(){if(window.screen.width<window.screen.availWidth){return true}if(window.screen.height<window.screen.availHeight){return true}return false},getHasLiedOs:function(){var userAgent=navigator.userAgent.toLowerCase();var oscpu=navigator.oscpu;var platform=navigator.platform.toLowerCase();var os;if(userAgent.indexOf("windows phone")>=0){os="Windows Phone"}else if(userAgent.indexOf("win")>=0){os="Windows"}else if(userAgent.indexOf("android")>=0){os="Android"}else if(userAgent.indexOf("linux")>=0){os="Linux"}else if(userAgent.indexOf("iphone")>=0||userAgent.indexOf("ipad")>=0){os="iOS"}else if(userAgent.indexOf("mac")>=0){os="Mac"}else{os="Other"}var mobileDevice;if("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0){mobileDevice=true}else{mobileDevice=false}if(mobileDevice&&os!=="Windows Phone"&&os!=="Android"&&os!=="iOS"&&os!=="Other"){return true}if(typeof oscpu!=="undefined"){oscpu=oscpu.toLowerCase();if(oscpu.indexOf("win")>=0&&os!=="Windows"&&os!=="Windows Phone"){return true}else if(oscpu.indexOf("linux")>=0&&os!=="Linux"&&os!=="Android"){return true}else if(oscpu.indexOf("mac")>=0&&os!=="Mac"&&os!=="iOS"){return true}else if((oscpu.indexOf("win")===-1&&oscpu.indexOf("linux")===-1&&oscpu.indexOf("mac")===-1)!==(os==="Other")){return true}}if(platform.indexOf("win")>=0&&os!=="Windows"&&os!=="Windows Phone"){return true}else if((platform.indexOf("linux")>=0||platform.indexOf("android")>=0||platform.indexOf("pike")>=0)&&os!=="Linux"&&os!=="Android"){return true}else if((platform.indexOf("mac")>=0||platform.indexOf("ipad")>=0||platform.indexOf("ipod")>=0||platform.indexOf("iphone")>=0)&&os!=="Mac"&&os!=="iOS"){return true}else if((platform.indexOf("win")===-1&&platform.indexOf("linux")===-1&&platform.indexOf("mac")===-1)!==(os==="Other")){return true}if(typeof navigator.plugins==="undefined"&&os!=="Windows"&&os!=="Windows Phone"){return true}return false},getHasLiedBrowser:function(){var userAgent=navigator.userAgent.toLowerCase();var productSub=navigator.productSub;var browser;if(userAgent.indexOf("firefox")>=0){browser="Firefox"}else if(userAgent.indexOf("opera")>=0||userAgent.indexOf("opr")>=0){browser="Opera"}else if(userAgent.indexOf("chrome")>=0){browser="Chrome"}else if(userAgent.indexOf("safari")>=0){browser="Safari"}else if(userAgent.indexOf("trident")>=0){browser="Internet Explorer"}else{browser="Other"}if((browser==="Chrome"||browser==="Safari"||browser==="Opera")&&productSub!=="20030107"){return true}var tempRes=eval.toString().length;if(tempRes===37&&browser!=="Safari"&&browser!=="Firefox"&&browser!=="Other"){return true}else if(tempRes===39&&browser!=="Internet Explorer"&&browser!=="Other"){return true}else if(tempRes===33&&browser!=="Chrome"&&browser!=="Opera"&&browser!=="Other"){return true}var errFirefox;try{throw"a"}catch(err){try{err.toSource();errFirefox=true}catch(errOfErr){errFirefox=false}}if(errFirefox&&browser!=="Firefox"&&browser!=="Other"){return true}return false},isCanvasSupported:function(){var elem=document.createElement("canvas");return!!(elem.getContext&&elem.getContext("2d"))},isWebGlSupported:function(){if(!this.isCanvasSupported()){return false}var glContext=this.getWebglCanvas();return!!window.WebGLRenderingCont