检测被Worker修改的指纹值

你好,他们可以通过 Worker 采集到所有更改过的指纹值。有人知道如何解决这个问题吗?

import puppeteer from 'rebrowser-puppeteer';

const browser = await puppeteer.launch({
  headless: "new"
});

const page = await browser.newPage();

await page.evaluateOnNewDocument(() => {
  const utils = {
    replaceProperty: (obj, propName, descriptorOverrides = {}) => {
      return Object.defineProperty(obj, propName, {
        ...(Object.getOwnPropertyDescriptor(obj, propName) || {}),
        ...descriptorOverrides
      })
    },
    replaceGetterWithProxy: (obj, propName, handler) => {
      const fn = Object.getOwnPropertyDescriptor(obj, propName).get
      const fnStr = fn.toString()
      const proxyObj = new Proxy(fn, {
        apply: function (target, ctx) {
          // Your custom logic here
          return "de"
        }
      })

      utils.replaceProperty(obj, propName, { get: proxyObj })

      // Optional: Patch toString to make it look native
      proxyObj.toString = () => fnStr

      return true
    }
  }

  // Replace navigator.languages getter
  utils.replaceGetterWithProxy(Object.getPrototypeOf(navigator), 'language', {
    apply: function (target, ctx) {
      return "de-DE"
    }
  })


});


await page.goto('https://html-starter2-six.vercel.app/');

await page.screenshot({ path: 'example.png', fullPage: true });

1 个赞

吃瓜,等一个佬

1 个赞

应该可以正常修改浏览器设置或使用特定配置目录吧。

用这种注入js的方法要注入到所有上下文中,否则很多其它办法可以检测。

禁用 Worker 应该可以,但没做兼容的网页就会报错
delete self.Worker

1 个赞

你的翻译翻错了。请翻译前的版本贴上来
Your translations are hard to understand. Mind posting original texts?