Yeah in the end it depends on the website: some sites check for WebRTC and some don’t, and even when they do check, sometimes they don’t care.
But when a site is checking, you’ll notice it right away.
For example, LinkedIn won’t let you create an account (or the success rate will be about 5%) if you change anything in the browser’s default settings.
You need to inspect the requests the site makes and the JavaScript files your browser executes.
For example, LinkedIn has this file:
Code:
https://static.licdn.com/sc/h/9m08psxnki0ctc2vf72rjejj3
it’s full of sophisticated detection methods they literally check everything. I think Reddit is doing the same or even more. I haven’t used Reddit in about a year.
The idea is to dig deep: every website has its own techniques.
var _0x2b18 = ["INT", "FRAGMENT", "MEDIUM", "LOW", "rangeMin", "rangeMax", "_SHADER", "precision", "precision ", "webgl ", "toLowerCase", " shader ", "UNMASKED_VENDOR_WEBGL", "innerHTML", " ", "className", "adsbox", "getElementsByClassName", "languages", "substr", "getHasLiedResolution", "getHasLiedOs", "windows phone", "win", "Windows", "android", "Android", "cros", "iphone", "ipad", "mac", "Mac", "Windows Phone", "iOS", "Other", "linux", "Linux", "pike", "ipod", "firefox", "opera", "opr", "safari", "trident", "Internet Explorer", "toSource", "WebGLRenderingContext", "Microsoft Internet Explorer", "appName", "Netscape", "swfobject", "hasFlashPlayerVersion", "9.0.0", "addFlashDivNode", "swfContainerId", "embedSWF", "swfPath", "always", "false", "experimental-webgl", "components", "webrtc", "seedKey", "appCodeNameKey", "location", "locationKey", "javascripts", "javascriptsKey", "platformKey", "product", "numOfCores", "timezoneOffset", "timezone", "pixelRatio", "screenResolution", "screenOrientation", "screenOrientationKey", "availableScreenResolution", "indexedDb", "signals", "touchSupport", "battery", "batteryKey", "automation", "automationKey", "mimetyps", "flashFontsKey", "function", "Options not provided", "excludes", "key", "alias", "getData", "shouldEnforceDataLimit", "dataLimit", "errors", "Exceeded current data limit:", " was found to be:", "data", "latency", "acq_time", "allFeaturesCollectionAt", "requestIdleCallback", "allFeatures", "querySelector", "getElementById", "firstChild", "nodeValue", "parentNode", "parse", "encode", "btoa", "fromCharCode", "apply", "atob", "str2ab", "subtle", "importKey", "SHA-256", "wrap", "importPk", "spki", "wrapKey", "crypto", "raw", "error", "string", "number", "getRandomValues", "AES-CBC", "generateKey", "encrypt", "decrypt", "resolve", "wrapErrorResult", "isNaN", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqyVTa3Pi5twlDxHc34nl3MlTHOweIenIid6hDqVlh5/wcHzIxvB9nZjObW3HWfwqejGM+n2ZGbo9x8R7ByS3/V4qRgAs1z4aB6F5+HcXsx8uVrQfwigK0+u7d3g1s7H8qUaguMPHxNnyj5EisTJBh2jf9ODp8TpWnhAQHCCSZcDM4JIoIlsVdGmv+dGlzZzmf1if26U4KJqFdrqS83r3nGWcEpXWiQB+mx/EX4brbrhOFCvfPovvsLEjMTm0UC68Bvki3UsB/vkkMPW9cxNiiJJdnDkOEEdQPuFmPug+sqhACl3IIHLVBFM7vO0ca14rcCNSbSDaaKOY6BQoW1A30wIDAQAB", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw/ArJ9dD6hi+jrX6ZpRqwk2Mm5v3EElQGhzSngYHAm7gvdcAEj6sbU4HhrXs3+TZamDV+RHwL+rDT+TtD8ZJBaVbA+wRDdIezECZT+WNZw2SMkjAsX0OynAT/wowGfE72zMhYc4byGfQmtAQrUL2iJ19KIJj0aZ4m41kvnBHMZbwO52+ceyQhqAzB7bn6U//QHJySHgjaOsgkpPnuxZUz6ly+FrKveQp+bNIfh8R5GO2ABRoeBL4c3jip/UjmmnfYE3xdzubni1a6WQ6YTTb6ZEJSgQTp/Rc+o/btcKkTIqDcXvGbO0iAxev8EXV7GtkRguqgfwaURAaps9Nes5NwIDAQAB", "encryptWithKey", "encryptWithKeyFromDifferentSources", "publicKey", "publicKeyVersion", "encryptWithKeyIds", "uuidv4", "DNA", "apfcDf", "flash/compiled/FontList.swf", "https://ponf.linkedin.com/pixel/tracking.png", "n/a", "err", "enabled", "readyState", "intializeGlobalIntegration", "load", "useRequestIdleCallBack", "initialize", "stringify", "addEventListener", "apfcDfPK", "triggerApfc", "reentry", "pageInstance", "isProd", "reqid", "https://www.linkedin.com", "https://www.linkedin-ei.com", "POST", "setRequestHeader", "application/json", "send", "reentryGlobalIntegration", "triggerDnaApfcEvent", ".linkedin.com", "pemberly", "getUrlFromNoscriptBeacon", "parseFromString", "text/html", "getAttribute", "class", "placePonfBeacon", "display:none;", "ponfUrl", "searchParams", "get", "charAt", "substring", "bc_context", ".linkedin-ei.com", "setAttribute", "img", "undefined", "x64Add", "x64Multiply", "x64Rotl", "x64LeftShift", "x64Xor", "length", "charCodeAt", "x64Fmix", "00000000", "toString", "slice", "each", "prototype", "forEach", "map", "push", "getIPs", "RTCPeerConnection", "webkitRTCPeerConnection", "mozRTCPeerConnection", "stun:stun.l.google.com:19302", "exec", "localDescription", "sdp", "split", "indexOf", "a=candidate:", "keys", "onicecandidate", "candidate", "onicegatheringstatechange", "complete", "iceGatheringState", "createOffer", "then", "setLocalDescription", "getHasLiedBrowser", "getBrowserNameAndVersion", "webdriver", "Firefox", "document", "documentElement", "_Selenium_IDE_Recorder", "__webdriver_script_fn", "Selenium", "_phantom", "PhantomJS", "NOT_AVAILABLE", "name", "message", "enumerateDevicesKey", "mediaDevices", "enumerateDevices", "gid", "kind", "label", "catch", "audioKey", "audio", "excludeIOS11", "userAgent", "match", "EXCLUDED", "OfflineAudioContext", "webkitOfflineAudioContext", "createOscillator", "type", "triangle", "frequency", "currentTime", "knee", "ratio", "reduction", "attack", "release", "setValueAtTime", "connect", "destination", "start", "audioTimeout", "oncomplete", "renderedBuffer", "reduce", "abs", "disconnect", "UserAgent", "languageKey", "language", "userLanguage", "browserLanguage", "systemLanguage", "screen", "colorDepth", "deviceMemoryKey", "deviceMemory", " GB", "pixelDepthKey", "pixelDepth", "pixelRatioKey", "devicePixelRatio", "screenResolutionKey", "getScreenResolution", "orientation", "Orientation", "mozOrientation", "height", "availableScreenResolutionKey", "getAvailableScreenResolution", "availWidth", "availHeight", "getTimezoneOffset", "Intl", "DateTimeFormat", "timeZone", "sessionStorageKey", "hasSessionStorage", "localStorageKey", "hasLocalStorage", "indexedDbKey", "hasIndexedDB", "addBehaviorKey", "body", "addBehavior", "openDatabaseKey", "openDatabase", "cpuClassKey", "getNavigatorCpuClass", "oscpuKey", "oscpu", "appNameKey", "appVersionKey", "appVersion", "appCodeName", "now", "getNavigatorPlatform", "productKey", "productSubKey", "vendorKey", "vendor", "vendorSubKey", "doNotTrackKey", "getDoNotTrack", "incognitoKey", "Chrome", "webkitRequestFileSystem", "TEMPORARY", "storage", "estimate", "quota", "Safari", "safariIncognito", "localStorage", "setItem", "test", "removeItem", "open", "onsuccess", "indexedDB", "PointerEvent", "MSPointerEvent", "IE ", "join", "replace", "OPR", "Opera", "canvasKey", "isCanvasSupported", "getCanvasFp", "webglKey", "isWebGlSupported", "getWebglFp", "scripts", "host", "hostname", "href", "origin", "pathname", "protocol", "signalsKey", "getSignals", "getAdBlock", "getHasLiedLanguages", "hasOwnProperty", "hasSwfObjectLoaded", "hasMinFlashInstalled", "loadSwfAndDetectFonts", "missing options.fonts.swfPath", "swf object not loaded", "jsFontsKey", "monospace", "sans-serif", "Andale Mono", "Arial", "Arial Black", "Arial MT", "Arial Narrow", "Arial Rounded MT Bold", "Arial Unicode MS", "Book Antiqua", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", "Geneva", "Georgia", "Impact", "Lucida Bright", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", "Microsoft Sans Serif", "MS Gothic", "MS PGothic", "MS Reference Sans Serif", "MS Serif", "MYRIAD", "Palatino", "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", "Verdana", "Wingdings", "Wingdings 3", "fonts", "concat", "extendedJsFonts", "userDefinedFonts", "getElementsByTagName", "div", "createElement", "span", "style", "position", "absolute", "left", "fontSize", "fontStyle", "normal", "fontWeight", "auto", "lineHeight", "textTransform", "none", "textAlign", "textDecoration", "textShadow", "whiteSpace", "wordBreak", "wordSpacing", "textContent", "mmmmmmmmmmlli", "offsetHeight", "appendChild", "removeChild", "fontsHash", "x64hash128", "hashOnly", "lists", "mimetypesComponent", "mimeTypes", "suffixes", "description", "pluginsComponent", "isIE", "plugins", "getIEPlugins", "getRegularPlugins", "pluginsShouldBeSorted", "sort", "getOwnPropertyDescriptor", "ActiveXObject", "AcroPDF.PDF", "Adodb.Stream", "AgControl.AgControl", "DevalVRXCtrl.DevalVRXCtrl.1", "MacromediaFlashPaper.MacromediaFlashPaper", "Msxml2.DOMDocument", "Msxml2.XMLHTTP", "PDF.PdfCtrl", "QuickTime.QuickTime", "QuickTimeCheckObject.QuickTimeCheck.1", "RealPlayer", "RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)", "RealVideo.RealVideo(tm) ActiveX Control (32-bit)", "Scripting.Dictionary", "SWCtl.SWCtl", "Shell.UIHelper", "ShockwaveFlash.ShockwaveFlash", "TDCCtl.TDCCtl", "WMPlayer.OCX", "rmocx.RealPlayer G2 Control", "rmocx.RealPlayer G2 Control.1", "ERROR", "sortPluginsFor", "getBattery", "charging", "chargingTime", "dischargingTime", "networkInfoKey", "connection", "downlink", "effectiveType", "rtt", "touchSupportKey", "getTouchSupport", "hardwareConcurrencyKey", "sessionStorage", "getHardwareConcurrency", "hardwareConcurrency", "platform", "doNotTrack", "msDoNotTrack", "maxTouchPoints", "msMaxTouchPoints", "createEvent", "TouchEvent", "ontouchstart", "canvas", "width", "display", "inline", "getContext", "rect", "canvasWinding", "isPointInPath", "evenodd", "yes", "textBaseline", "alphabetic", "fillStyle", "#f60", "fillRect", "#069", "dontUseFakeFontInCanvas", "11pt Arial", "font", "11pt no-real-font-123", "fillText", "Cwm fjordbank glyphs vext quiz, đź", "rgba(102, 204, 0, 0.2)", "globalCompositeOperation", "multiply", "rgb(255,0,255)", "beginPath", "arc", "closePath", "fill", "rgb(0,255,255)", "rgb(255,255,0)", "toDataURL", "canvasHash", "clearColor", "enable", "DEPTH_TEST", "depthFunc", "LEQUAL", "clear", "COLOR_BUFFER_BIT", "getWebglCanvas", "ARRAY_BUFFER", "STATIC_DRAW", "itemSize", "numItems", "VERTEX_SHADER", "shaderSource", "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}", "compileShader", "createShader", "FRAGMENT_SHADER", "attachShader", "linkProgram", "useProgram", "vertexPosAttrib", "attrVertex", "getUniformLocation", "uniformOffset", "uniform2f", "offsetUniform", "drawArrays", "TRIANGLE_STRIP", "webglHash", "webgl", "vendorAndRenderer", "getWebglVendorAndRenderer", "extensions", "getSupportedExtensions", "webgl aliased line width range", "getParameter", "ALIASED_LINE_WIDTH_RANGE", "webgl aliased point size range", "ALIASED_POINT_SIZE_RANGE", "ALPHA_BITS", "webgl antialiasing", "getContextAttributes", "webgl blue bits", "BLUE_BITS", "webgl depth bits", "DEPTH_BITS", "GREEN_BITS", "webgl max anisotropy", "getExtension", "EXT_texture_filter_anisotropic", "WEBKIT_EXT_texture_filter_anisotropic", "MAX_TEXTURE_MAX_ANISOTROPY_EXT", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_CUBE_MAP_TEXTURE_SIZE", "webgl max render buffer size", "MAX_RENDERBUFFER_SIZE", "webgl max texture image units", "MAX_TEXTURE_IMAGE_UNITS", "webgl max texture size", "MAX_TEXTURE_SIZE", "webgl max varying vectors", "webgl max vertex attribs", "MAX_VERTEX_ATTRIBS", "webgl max vertex texture image units", "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "webgl max vertex uniform vectors", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VIEWPORT_DIMS", "webgl red bits", "RED_BITS", "webgl renderer", "RENDERER", "webgl shading language version", "SHADING_LANGUAGE_VERSION", "webgl stencil bits", "webgl vendor", "VENDOR", "webgl version", "VERSION", "WEBGL_debug_renderer_info", "UNMASKED_RENDERER_WEBGL", "getShaderPrecisionFormat"];
lol
