Any Way To generate A hidden Fingerprint Token Using Node Js
A hidden Fingerprint?? What do you mean?
in the website u can see the Fingerprint name but when u search on html u will see like that i asked someone he said kt needs python script or idk if you can help please tell me
I’ve used this before: https://ja3er.com/
its slow I need one who generate new one evry request
Do you mean JA3 Fingerprints?
you can use random numbers for those fingerprints…
But I made you a config that will generate a fingerprint, based on the UserAgent and browser you provide.
This is 100% the same fingerprint as used by IO*** and so on:
FingerprintOB2.opk (9.8 KB)
additional files: (unzip to c drive )
https://anonfiles.com/Z7X0sen0yd/for_fingerprint_zip
node needs to be installed!
thx bro i love you
any solution ?
yes, go to RL Settings and uncheck “restrict blocks from using resources…”
thx it works i will try to link it with the site i wish it works
Yo guys, had a chance for check that stuff, here Jint, I did remove some part from var values, since its too big here
At least U can find it while debugging, so it wont be so ez, but U can try a luck with, current code works, but its not all code inside line values.
var navigator = {};
var window = {};
x64Add = function(m, n) {
m = [m[0] >>> 16, m[0] & 65535, m[1] >>> 16, m[1] & 65535];
n = [n[0] >>> 16, n[0] & 65535, n[1] >>> 16, n[1] & 65535];
var o = [0, 0, 0, 0];
o[3] += m[3] + n[3];
o[2] += o[3] >>> 16;
o[3] &= 65535;
o[2] += m[2] + n[2];
o[1] += o[2] >>> 16;
o[2] &= 65535;
o[1] += m[1] + n[1];
o[0] += o[1] >>> 16;
o[1] &= 65535;
o[0] += m[0] + n[0];
o[0] &= 65535;
return [o[0] << 16 | o[1], o[2] << 16 | o[3]]
},
x64Multiply = function(m, n) {
m = [m[0] >>> 16, m[0] & 65535, m[1] >>> 16, m[1] & 65535];
n = [n[0] >>> 16, n[0] & 65535, n[1] >>> 16, n[1] & 65535];
var o = [0, 0, 0, 0];
o[3] += m[3] * n[3];
o[2] += o[3] >>> 16;
o[3] &= 65535;
o[2] += m[2] * n[3];
o[1] += o[2] >>> 16;
o[2] &= 65535;
o[2] += m[3] * n[2];
o[1] += o[2] >>> 16;
o[2] &= 65535;
o[1] += m[1] * n[3];
o[0] += o[1] >>> 16;
o[1] &= 65535;
o[1] += m[2] * n[2];
o[0] += o[1] >>> 16;
o[1] &= 65535;
o[1] += m[3] * n[1];
o[0] += o[1] >>> 16;
o[1] &= 65535;
o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0];
o[0] &= 65535;
return [o[0] << 16 | o[1], o[2] << 16 | o[3]]
},
x64Rotl = function(m, n) {
n %= 64;
if (n === 32) {
return [m[1], m[0]]
} else if (n < 32) {
return [m[0] << n | m[1] >>> 32 - n, m[1] << n | m[0] >>> 32 - n]
} else {
n -= 32;
return [m[1] << n | m[0] >>> 32 - n, m[0] << n | m[1] >>> 32 - n]
}
},
x64LeftShift = function(m, n) {
n %= 64;
if (n === 0) {
return m
} else if (n < 32) {
return [m[0] << n | m[1] >>> 32 - n, m[1] << n]
} else {
return [m[1] << n - 32, 0]
}
},
x64Xor = function(m, n) {
return [m[0] ^ n[0], m[1] ^ n[1]]
},
x64Fmix = function(h) {
h = this.x64Xor(h, [0, h[0] >>> 1]);
h = this.x64Multiply(h, [4283543511, 3981806797]);
h = this.x64Xor(h, [0, h[0] >>> 1]);
h = this.x64Multiply(h, [3301882366, 444984403]);
h = this.x64Xor(h, [0, h[0] >>> 1]);
return h
},
x64hash128 = function(key, seed) {
key = key || "";
seed = seed || 0;
var remainder = key.length % 16;
var bytes = key.length - remainder;
var h1 = [0, seed];
var h2 = [0, seed];
var k1 = [0, 0];
var k2 = [0, 0];
var c1 = [2277735313, 289559509];
var c2 = [1291169091, 658871167];
for (var i = 0; i < bytes; i = i + 16) {
k1 = [key.charCodeAt(i + 4) & 255 | (key.charCodeAt(i + 5) & 255) << 8 | (key.charCodeAt(i + 6) & 255) << 16 | (key.charCodeAt(i + 7) & 255) << 24, key.charCodeAt(i) & 255 | (key.charCodeAt(i + 1) & 255) << 8 | (key.charCodeAt(i + 2) & 255) << 16 | (key.charCodeAt(i + 3) & 255) << 24];
k2 = [key.charCodeAt(i + 12) & 255 | (key.charCodeAt(i + 13) & 255) << 8 | (key.charCodeAt(i + 14) & 255) << 16 | (key.charCodeAt(i + 15) & 255) << 24, key.charCodeAt(i + 8) & 255 | (key.charCodeAt(i + 9) & 255) << 8 | (key.charCodeAt(i + 10) & 255) << 16 | (key.charCodeAt(i + 11) & 255) << 24];
k1 = this.x64Multiply(k1, c1);
k1 = this.x64Rotl(k1, 31);
k1 = this.x64Multiply(k1, c2);
h1 = this.x64Xor(h1, k1);
h1 = this.x64Rotl(h1, 27);
h1 = this.x64Add(h1, h2);
h1 = this.x64Add(this.x64Multiply(h1, [0, 5]), [0, 1390208809]);
k2 = this.x64Multiply(k2, c2);
k2 = this.x64Rotl(k2, 33);
k2 = this.x64Multiply(k2, c1);
h2 = this.x64Xor(h2, k2);
h2 = this.x64Rotl(h2, 31);
h2 = this.x64Add(h2, h1);
h2 = this.x64Add(this.x64Multiply(h2, [0, 5]), [0, 944331445])
}
k1 = [0, 0];
k2 = [0, 0];
switch (remainder) {
case 15:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 14)], 48));
case 14:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 13)], 40));
case 13:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 12)], 32));
case 12:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 11)], 24));
case 11:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 10)], 16));
case 10:
k2 = this.x64Xor(k2, this.x64LeftShift([0, key.charCodeAt(i + 9)], 8));
case 9:
k2 = this.x64Xor(k2, [0, key.charCodeAt(i + 8)]);
k2 = this.x64Multiply(k2, c2);
k2 = this.x64Rotl(k2, 33);
k2 = this.x64Multiply(k2, c1);
h2 = this.x64Xor(h2, k2);
case 8:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 7)], 56));
case 7:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 6)], 48));
case 6:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 5)], 40));
case 5:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 4)], 32));
case 4:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 3)], 24));
case 3:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 2)], 16));
case 2:
k1 = this.x64Xor(k1, this.x64LeftShift([0, key.charCodeAt(i + 1)], 8));
case 1:
k1 = this.x64Xor(k1, [0, key.charCodeAt(i)]);
k1 = this.x64Multiply(k1, c1);
k1 = this.x64Rotl(k1, 31);
k1 = this.x64Multiply(k1, c2);
h1 = this.x64Xor(h1, k1)
}
h1 = this.x64Xor(h1, [0, key.length]);
h2 = this.x64Xor(h2, [0, key.length]);
h1 = this.x64Add(h1, h2);
h2 = this.x64Add(h2, h1);
h1 = this.x64Fmix(h1);
h2 = this.x64Fmix(h2);
h1 = this.x64Add(h1, h2);
h2 = this.x64Add(h2, h1);
return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8)
}
var values = UARAND+"~~~en-US~~~24~~~4~~~21~~~1920;1080~~~"+height+";"+width+"~~~-180~~~Europe/Unknown~~~1~~~1~~~1~~~1~~~unknown~~~Win32~~~Chromium document Renderer::::application/pdf~pdf;JavaScript document Plugin::Portable Document Format::application/x-google-chrome-pdf~pdf;~extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_disjoint_timer_query;EXT_float_blend;EXT_frag_depth;EXT_shader_texture_lod;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;WEBKIT_EXT_texture_filter_anisotropic;EXT_sRGB;KHR_parallel_shader_compile;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBKIT_WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBKIT_WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBKIT_WEBGL_lose_context;WEBGL_multi_draw~webgl aliased line width range:[1, 1]~webgl aliased point size range:[1, 1024]~webgl alpha bits:8~webgl antialiasing:yes~webgl blue bits:8~webgl depth bits:24~webgl green bits:8~webgl max anisotropy:16~webgl max combined texture image units:32~webgl max cube map texture size:16384~webgl max fragment uniform vectors:1024~webgl max render buffer size:16384~webgl max texture image units:16~webgl max texture size:16384~webgl max varying vectors:30~webgl max vertex attribs:16~webgl max vertex texture image units:16~webgl max vertex uniform vectors:4095~webgl max viewport dims:[32767, 32767]~webgl red bits:8~webgl renderer:WebKit WebGL~webgl shading language version:WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)~webgl stencil bits:0~webgl vendor:WebKit~webgl version:WebGL 1.0 (OpenGL ES 2.0 Chromium)~webgl unmasked vendor:Google Inc. (NVIDIA)~webgl unmasked renderer:ANGLE (NVIDIA, NVIDIA TITAN Xp Direct3D11 vs_5_0 ps_5_0, D3D11)~webgl vertex shader high float precision:23~webgl vertex shader high float precision rangeMin:127~webgl vertex shader high float precision rangeMax:127~webgl vertex shader medium float precision:23~webgl vertex shader medium float precision rangeMin:127~webgl vertex shader medium float precision rangeMax:127~webgl vertex shader low float precision:23~webgl vertex shader low float precision rangeMin:127~webgl vertex shader low float precision rangeMax:127~webgl fragment shader high float precision:23~webgl fragment shader high float precision rangeMin:127~webgl fragment shader high float precision rangeMax:127~webgl fragment shader medium float precision:23~webgl fragment shader medium float precision rangeMin:127~webgl fragment shader medium float precision rangeMax:127~webgl fragment shader low float precision:23~webgl fragment shader low float precision rangeMin:127~webgl fragment shader low float precision rangeMax:127~webgl vertex shader high int precision:0~webgl vertex shader high int precision rangeMin:31~webgl vertex shader high int precision rangeMax:30~webgl vertex shader medium int precision:0~webgl vertex shader medium int precision rangeMin:31~webgl vertex shader medium int precision rangeMax:30~webgl vertex shader low int precision:0~webgl vertex shader low int precision rangeMin:31~webgl vertex shader low int precision rangeMax:30~webgl fragment shader high int precision:0~webgl fragment shader high int precision rangeMin:31~webgl fragment shader high int precision rangeMax:30~webgl fragment shader medium int precision:0~webgl fragment shader medium int precision rangeMin:31~webgl fragment shader medium int precision rangeMax:30~webgl fragment shader low int precision:0~webgl fragment shader low int precision rangeMin:31~webgl fragment shader low int precision rangeMax:30~~~Google Inc. (NVIDIA)~ANGLE (NVIDIA, NVIDIA TITAN Xp Direct3D11 vs_5_0 ps_5_0, D3D11)~~~false~~~false~~~false~~~false~~~false~~~0;false;false~~~Arial;Arial Black;Arial Narrow;Book Antiqua;Bookman Old Style;Calibri;Cambria;Cambria Math;Century;Century Gothic;Comic Sans MS;Consolas;Courier;Courier New;Georgia;Helvetica;Impact;Lucida Console;Lucida Sans Unicode;Microsoft Sans Serif;Monotype Corsiva;MS Gothic;MS PGothic;MS Reference Sans Serif;MS Sans Serif;MS Serif;Palatino Linotype;Segoe Print;Segoe Script;Segoe UI;Segoe UI Light;Segoe UI Semibold;Segoe UI Symbol;Tahoma;Times;Times New Roman;Trebuchet MS;Verdana;Wingdings;Wingdings 2;Wingdings 3~~~"+somegen
var murmur = x64hash128(values, 31);
Example of collecting info
1: {key: 'language', value: 'en-US'}
2: {key: 'color_depth', value: 24}
3: {key: 'device_memory', value: 4}
4: {key: 'hardware_concurrency', value: 21}
5: {key: 'resolution', value: Array(2)}
6: {key: 'available_resolution', value: Array(2)}
7: {key: 'timezone_offset', value: -180}
8: {key: 'timezone', value: 'Europe/Unknown'}
9: {key: 'session_storage', value: 1}
10: {key: 'local_storage', value: 1}
11: {key: 'indexed_db', value: 1}
12: {key: 'open_database', value: 1}
13: {key: 'cpu_class', value: 'unknown'}
14: {key: 'navigator_platform', value: 'Win32'}
15: {key: 'regular_plugins', value: Array(4)}
16: {key: 'canvas', value: 'canvas winding:yes~canvas fp:data:image/png;base64…AAAECBAgQIECAQMsF/g8gYZtepJiizgAAAABJRU5ErkJggg=='}
17: {key: 'webgl', value: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwA…bgl fragment shader low int precision rangeMax:30'}
18: {key: 'webgl_vendor', value: 'Google Inc. (NVIDIA)~ANGLE (NVIDIA, NVIDIA XXX )'}
19: {key: 'adblock', value: false}
20: {key: 'has_lied_languages', value: false}
21: {key: 'has_lied_resolution', value: false}
22: {key: 'has_lied_os', value: false}
23: {key: 'has_lied_browser', value: false}
24: {key: 'touch_support', value: Array(3)}
25: {key: 'js_fonts', value: Array(41)}
26: {key: 'audio_fp', value: 'XXX.XXX'}
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.timezoneKey(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(keysWithFont) {
that.audioKey(keysWithFont, function(newKeys) {
that.enumerateDevicesKey(newKeys, function(keysWithDevices) {
var values = [];
that.each(keysWithDevices.data, function(pair) {
var value = pair.value;
if (value && typeof value.join === "function") {
values.push(value.join(";"))
} else {
values.push(value)
}
});
var murmur = that.x64hash128(values.join("~~~"), 31);
return done(murmur, keysWithDevices.data)
})
})
})
}
Maybe you can upload somewhere else please . Thanks
May I ask what is this for or how it functions?
@DJHooligan idk why but I’m getting a constant fingerprint no matter what i do
I used Windows servers 2016/2019/2022, tried to change the useragent value in the constant block, followed all the steps and yet the same fingerprint in the screenshot shows up instead of the correct one ( which appears when i visit FingerprintJS Open Source Demo )
So any idea what’s causing this?
Ps: in the browser location block i only have Edge not Edge Dev, even tho keeping it or changing is giving same result
i got this same error also, fingerprint in not changing on every request
IS IT POSSIBLE TO APPLY THIS FINGERPRINT DATA TO A BROWSER IN PUPPETEER ? IF POSSIBLE KINDLY SHOW HOW
I dont think u use this for puppeteer search on forum u will find
Bro fingerprint is not changing on every request, can you please help?