Javascript 如何使用木偶师设置、更改或阻止时区(systemtime)? 操作系统:基于Windows 10 Pro x64的PC 节点-v:v8.12.0 npm木偶演员名单:`--puppeteer@1.9.0

Javascript 如何使用木偶师设置、更改或阻止时区(systemtime)? 操作系统:基于Windows 10 Pro x64的PC 节点-v:v8.12.0 npm木偶演员名单:`--puppeteer@1.9.0,javascript,node.js,google-chrome,google-chrome-devtools,puppeteer,Javascript,Node.js,Google Chrome,Google Chrome Devtools,Puppeteer,我试过这个: puppeteer.launch({ env: { TZ: 'Australia/Melbourne', ...process.env } }); 不要为我工作。任何人都可以看到我的实际系统时间 编辑:关于 此代码在Linux上运行良好,但在Windows上不起作用: 在Windows上,我可以从操作系统中看到时区 若要隐藏所有网站的信息,必须使用不同设置的组合。这不仅限于, 代理 位置 时区 WebRTC泄漏 因为每个网站都有自己的发现方法。仅仅改变

我试过这个:

puppeteer.launch({
  env: {
    TZ: 'Australia/Melbourne',
    ...process.env
  }
});
不要为我工作。任何人都可以看到我的实际系统时间

编辑:关于

此代码在Linux上运行良好,但在Windows上不起作用:

在Windows上,我可以从操作系统中看到时区


若要隐藏所有网站的信息,必须使用不同设置的组合。这不仅限于,

  • 代理
  • 位置
  • 时区
  • WebRTC泄漏
因为每个网站都有自己的发现方法。仅仅改变时区并不意味着网站会认为你来自其他地方

然而,下面的代码对我来说非常有效

const puppeteer = require('puppeteer');

async function timeZoneChecker({ timeZone }) {
  // all kind of config to pass to browser
  const launchConfig = {};

  if (timeZone) {
    launchConfig.env = {
      TZ: timeZone,
      ...process.env,
    };
  }
  const browser = await puppeteer.launch(launchConfig);
  const page = await browser.newPage();

  await page.goto('https://whoer.net/');
  const detectedTimezone = await page.$eval('.ico-timesystem', e => e.parentNode.innerText);
  await page.screenshot({ path: `screenshots/timeZone_${timeZone.replace('/', '-')}.png`, fullPage: true });

  await browser.close();

  return { timeZone, detectedTimezone };
}

Promise.all([
  timeZoneChecker({ timeZone: 'Australia/Melbourne' }),
  timeZoneChecker({ timeZone: 'Asia/Singapore' }),
]).then(console.log);
结果:

➜  change-timezone node app/timezone.js
[ { timeZone: 'Australia/Melbourne',
    detectedTimezone: 'Sun Oct 28 2018 22:44:35 GMT+1100 (Australian Eastern Daylight Time)' },
  { timeZone: 'Asia/Singapore',
    detectedTimezone: 'Sun Oct 28 2018 19:44:36 GMT+0800 (Singapore Standard Time)' } ]
根据,您可以使用:

page.emulateTimezone()
timezoneId
更改页面的时区。有关支持的时区ID的列表,请参阅。传递
null
将禁用时区模拟

返回:

例如:

await page.emulateTimezone('America/Chicago');

你住在哪里?当然它不接近澳大利亚/墨尔本?否=),这段代码我来自莫吉列夫/白俄罗斯。不幸的是,我没有解决方案,我认为这是一个操作系统错误。几乎所有的解决方案都提到它会直接在windows上更改操作系统时区。没关系,我标记了你的解决方案,谢谢你的帮助。我将尝试一些扩展,如.Thx!但它不起作用。也许是因为我的操作系统赢了10?我找到了一些关于这个问题的信息,但它仍然是开放的=(对不起,我在问题中没有给出足够的细节。
await page.emulateTimezone('America/Chicago');