canvas指纹随机

 

 

 

 

const g = Math.random() * .05
  , M = {
    r: Math.floor(Math.random() * 10),
    g: Math.floor(Math.random() * 10),
    b: Math.floor(Math.random() * 10)
};

_toDataURL = HTMLCanvasElement.prototype.toDataURL;

HTMLCanvasElement.prototype.toDataURL = function(t) {
    let e = this;

    let i = e.width
      , f = e.height
      , d = e.getContext("2d", {
        willReadFrequently: !0
    });

    if (d !== null) {
        const c = d.getImageData(0, 0, i, f)
          , u = Math.max(1, Math.floor(f / 7))
          , w = Math.max(1, Math.floor(i / 7));
        for (let v = 0; v < f; v += u)
            for (let b = 0; b < i; b += w) {
                const p = (v + Math.floor(Math.random() * u)) * (i * 4) + (b + Math.floor(Math.random() * w)) * 4;
                p < c.data.length && (c.data[p + 0] = c.data[p + 0] + M.r,
                c.data[p + 1] = c.data[p + 1] + M.g,
                c.data[p + 2] = c.data[p + 2] + M.b)
            }
        d.putImageData(c, 0, 0)
    }

    let rrr = _toDataURL.call(e, t);

    // console.log(rrr);
    return rrr;

}
;
;;
let canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d");
let o = 'BrowserLeaks,com <canvas> 1.0';
// 设置画布属性和绘制内容
canvas.setAttribute("width", 220);
canvas.setAttribute("height", 30);
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText(o, 2, 15);
ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
ctx.fillText(o, 4, 17);

let a = canvas.toDataURL("image/png");

console.log(a);

copy(a);

 

posted @ 2025-08-14 14:59  AngDH  阅读(14)  评论(0)    收藏  举报