@Moderator YEAH THAT WAS WORKING FINE BUT NOW A 2 DAYS AGO I AM GETTING AND ERROR WITH OR WITHOUT IP WHITELIST.
Canvas fingerprint new technique
-
Recently, I've come across an interesting canvas fingerprinting evasion method designed to trick browsers into generating distinct fingerprints by deliberately adding redundant or seemingly "useless" canvas drawing operations. Essentially, the method works by repeatedly resetting the canvas width and redrawing very similar content, adding subtle variations to confuse fingerprinting algorithms.
Here are two JavaScript code snippets illustrating this approach:
Snippet 1:
;(async function(){ var canvas = document.createElement("canvas"); canvas.width = 96; canvas.height = 96; var context = canvas.getContext('2d', {willReadFrequently: true}); context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π¨βπ",-1.0,96.0); canvas.width = canvas.width; canvas.width = canvas.width; context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π¨βπ",-1.0,96.0); canvas.width = canvas.width; canvas.width = canvas.width; context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π΅",-1.0,96.0); var str = context.getImageData(0,0,96,96).data; // Convert pixel data to hex fingerprint... })();Snippet 2 (variation):
;(async function(){ var canvas = document.createElement("canvas"); canvas.width = 96; canvas.height = 96; var context = canvas.getContext('2d', {willReadFrequently: true}); context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π¨βπ",-1.0,96.0); canvas.width = canvas.width; canvas.width = canvas.width; context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π¨βπ",-1.0,96.0); canvas.width = canvas.width; canvas.width = canvas.width; context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π΅",-1.0,96.0); canvas.width = canvas.width; canvas.width = canvas.width; context.font = "94px sans-serif"; context.fillStyle = "#000"; context.fillText("π΅β",-1.0,96.0); // subtle addition var str = context.getImageData(0,0,96,96).data; // Convert pixel data to hex fingerprint... })();This technique leverages small differences in the final canvas renderingβparticularly using emojis and invisible Unicode modificationsβto create distinct fingerprints, effectively confusing fingerprint trackers. By repeatedly clearing the canvas (e.g., canvas.width = canvas.width), browsers often register each redrawing as a different canvas output, thus complicating attempts at reliably fingerprinting.
So with Perfect Canvas, we only get precomputed canvas request, then how are you gonna deal with this ?
-
M Moderator moved this topic from Feedback on
-
@lowkeypal ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°?
-
https://new88bi.com/
here's an example, you'd need to do some actions like register ... to trigger more canvas requesting but same code like I said above.
I can't redo the canvas inspector flow for now, but you can check easily -
@lowkeypal said in Canvas fingerprint new technique:
So with Perfect Canvas, we only get precomputed canvas request, then how are you gonna deal with this ?
Well, we have a very different way to make it work.You could just not hide your real video card. But that's not the only option - just the easiest one, I think
-
@lowkeypal said in Canvas fingerprint new technique:
@sergerdn can you help me know more about this approach?
I clearly wrote what you need to make this work. What exactly do you need more info on? How can it be done in BAS?
-
@lowkeypal said in Canvas fingerprint new technique:
@sergerdn yes, how can it be done in BAS?
If you are a premium user, you may contact support. However, since the version 28.7.1, that feature has been removed by the developer of the BAS for some unknown reason.
https://community.bablosoft.com/topic/30888/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅-28-7-1/8?_=1748959031537
-
@lowkeypal Π― Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ» ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ°ΠΉΡΠ΅. ΠΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅, ΠΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠ°ΠΉΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ hex canvas ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅? ΠΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Canvas Inspector ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ canvas?
-
@ΠΠΈΡ Π°ΠΈΠ»96 I checked and found that it request a new canvas but with different code, so the Fingerprint Switcher (or Perfect Canvas) identified it as a different canvas request which not precomputed in the fingerprint, then it output different hex (with or without noise added I'm not sure) when It should be the same hex with previous canvas request. .
I think you understand the point here -
@lowkeypal Π― ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΠ°Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π²Ρ Π½Π°ΡΠ»ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΡΠ°ΠΉΡΠ΅ https://new88bi.com/ ΠΌΠ΅ΡΡΠΎ Π² ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ ΡΠ°ΠΉΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ°ΠΉΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Ρ ΡΡΠΌΠΎΠΌ ΠΈΠ»ΠΈ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½ BAS?