返回博客
身份

BotBrowser 中的时区、区域和语言配置

了解如何使用 BotBrowser CLI 标志配置时区、区域和语言设置,实现一致的浏览器身份。

为什么地理一致性很重要

您的浏览器通过 JavaScript API 和 HTTP 头暴露时区、区域和语言信息。这三个属性构成浏览器身份的地理层,必须与您的代理位置对齐以保持一致的配置。

BotBrowser CLI 标志

BotBrowser 提供专用 CLI 标志在浏览器引擎级别配置每个属性:

标志用途示例
--bot-config-timezone设置 IANA 时区America/New_York
--bot-config-locale设置浏览器区域en-US
--bot-config-languages设置语言偏好en-US,en
--bot-config-location设置地理坐标40.7128,-74.0060

这些标志修改浏览器的内部状态,使所有 JavaScript API 返回一致的值。

Playwright 示例

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
      '--proxy-server=socks5://user:pass@us-east.proxy.example:1080',
      '--bot-config-timezone=America/New_York',
      '--bot-config-locale=en-US',
      '--bot-config-languages=en-US,en',
      '--bot-config-location=40.7128,-74.0060',
    ],
    headless: true,
  });

  const context = await browser.newContext();
  const page = await context.newPage();

  const tz = await page.evaluate(() =>
    Intl.DateTimeFormat().resolvedOptions().timeZone
  );
  const langs = await page.evaluate(() => navigator.languages);
  const locale = await page.evaluate(() =>
    Intl.NumberFormat().resolvedOptions().locale
  );

  console.log('Timezone:', tz);     // America/New_York
  console.log('Languages:', langs); // ['en-US', 'en']
  console.log('Locale:', locale);   // en-US

  await browser.close();
})();

多区域配置

管理不同区域的多个身份时,每次启动携带自己的地理配置:

const profiles = [
  {
    profile: '/profiles/de-user.enc',
    proxy: 'socks5://user:pass@de.proxy.example:1080',
    timezone: 'Europe/Berlin',
    locale: 'de-DE',
    languages: 'de-DE,de,en',
    location: '52.5200,13.4050',
  },
  {
    profile: '/profiles/jp-user.enc',
    proxy: 'socks5://user:pass@jp.proxy.example:1080',
    timezone: 'Asia/Tokyo',
    locale: 'ja-JP',
    languages: 'ja-JP,ja,en',
    location: '35.6762,139.6503',
  },
];

for (const cfg of profiles) {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      `--bot-profile=${cfg.profile}`,
      `--proxy-server=${cfg.proxy}`,
      `--bot-config-timezone=${cfg.timezone}`,
      `--bot-config-locale=${cfg.locale}`,
      `--bot-config-languages=${cfg.languages}`,
      `--bot-config-location=${cfg.location}`,
    ],
    headless: true,
  });

  // 为此身份运行任务...
  await browser.close();
}

最佳实践

  1. 使用 IANA 时区名称,而非 UTC 偏移。America/New_York 是正确的。UTC-5 不考虑夏令时。

  2. 按优先顺序设置语言。德国用户通常有 de-DE,de,en。包含英语作为次要语言是合理的。

  3. 将地理坐标匹配到代理城市,而非精确街道地址。城市级精度已足够。

  4. 保持区域和时区在同一地区ja-JP 区域配合 Europe/London 时区不会看起来一致。

  5. 测试您的配置,启动后访问指纹验证站点。确认时区、区域、语言和 IP 都指向同一地理区域。

延伸阅读

#timezone#locale#language#identity#geolocation