Skip to content

Instantly share code, notes, and snippets.

@BitesizedLion
Created February 12, 2022 01:35
Show Gist options
  • Save BitesizedLion/905a26493fd5d35a98f60c244762bae9 to your computer and use it in GitHub Desktop.
Save BitesizedLion/905a26493fd5d35a98f60c244762bae9 to your computer and use it in GitHub Desktop.
This snippet should be pasted into your browser at: https://fpjs-3-cdn.stackblitz.io/
var fingerprints = [];
// print choices
var deviceMemories = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512]
var languages = ["af","af-ZA","ar","ar-AE","ar-BH","ar-DZ","ar-EG","ar-IQ","ar-JO","ar-KW","ar-LB","ar-LY","ar-MA","ar-OM","ar-QA","ar-SA","ar-SY","ar-TN","ar-YE","az","az-AZ","az-Cyrl-AZ","be","be-BY","bg","bg-BG","bs-BA","ca","ca-ES","cs","cs-CZ","cy","cy-GB","da","da-DK","de","de-AT","de-CH","de-DE","de-LI","de-LU","dv","dv-MV","el","el-GR","en","en-AU","en-BZ","en-CA","en-CB","en-GB","en-IE","en-JM","en-NZ","en-PH","en-TT","en-US","en-ZA","en-ZW","eo","es","es-AR","es-BO","es-CL","es-CO","es-CR","es-DO","es-EC","es-ES","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PR","es-PY","es-SV","es-UY","es-VE","et","et-EE","eu","eu-ES","fa","fa-IR","fi","fi-FI","fo","fo-FO","fr","fr-BE","fr-CA","fr-CH","fr-FR","fr-LU","fr-MC","gl","gl-ES","gu","gu-IN","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hu","hu-HU","hy","hy-AM","id","id-ID","is","is-IS","it","it-CH","it-IT","ja","ja-JP","ka","ka-GE","kk","kk-KZ","kn","kn-IN","ko","ko-KR","kok","kok-IN","ky","ky-KG","lt","lt-LT","lv","lv-LV","mi","mi-NZ","mk","mk-MK","mn","mn-MN","mr","mr-IN","ms","ms-BN","ms-MY","mt","mt-MT","nb","nb-NO","nl","nl-BE","nl-NL","nn-NO","ns","ns-ZA","pa","pa-IN","pl","pl-PL","ps","ps-AR","pt","pt-BR","pt-PT","qu","qu-BO","qu-EC","qu-PE","ro","ro-RO","ru","ru-RU","sa","sa-IN","se","se-FI","se-NO","se-SE","sk","sk-SK","sl","sl-SI","sq","sq-AL","sr-BA","sr-Cyrl-BA","sr-SP","sr-Cyrl-SP","sv","sv-FI","sv-SE","sw","sw-KE","syr","syr-SY","ta","ta-IN","te","te-IN","th","th-TH","tl","tl-PH","tn","tn-ZA","tr","tr-TR","tt","tt-RU","ts","uk","uk-UA","ur","ur-PK","uz","uz-UZ","uz-Cyrl-UZ","vi","vi-VN","xh","xh-ZA","zh","zh-CN","zh-HK","zh-MO","zh-SG","zh-TW","zu","zu-ZA"]
var takenCombos = [];
var ongoing = false;
(async function () {
setInterval(manglePrint, 50);
})();
async function manglePrint() {
if(ongoing) return console.log("[*] Fingerprinting in progress, waiting for completion");
console.log("[*] Starting mangling...");
let mem = deviceMemories[Math.floor(Math.random() * deviceMemories.length)];
let lang = languages[Math.floor(Math.random() * languages.length)];
if(takenCombos.includes(`${mem}-${lang}`)) {
return;
}
console.time(`${mem}-${lang}`);
ongoing = true;
Object.defineProperty(navigator, "deviceMemory", {
get: function () {
return mem;
},
set: function (a) {},
configurable: true
});
Object.defineProperty(navigator, "language", {
get: function () {
return lang;
},
set: function (a) {},
configurable: true
});
console.log("[*] Mangling finished: " + mem + "-" + lang);
genFingerprint(mem, lang);
console.timeEnd(`${mem}-${lang}`);
}
async function genFingerprint(memo, langu) {
takenCombos.push(`${memo}-${langu}`);
console.log("[*] Fingerprinting with: " + memo + "-" + langu);
let visitorId = (await (await (await (await import("https://openfpcdn.io/fingerprintjs/v3")).load())).get()).visitorId;
fingerprints.push(visitorId);
ongoing = false;
console.log("[*] Fingerprinted: " + visitorId);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment