身份
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();
}
最佳实践
-
使用 IANA 时区名称,而非 UTC 偏移。
America/New_York是正确的。UTC-5不考虑夏令时。 -
按优先顺序设置语言。德国用户通常有
de-DE,de,en。包含英语作为次要语言是合理的。 -
将地理坐标匹配到代理城市,而非精确街道地址。城市级精度已足够。
-
保持区域和时区在同一地区。
ja-JP区域配合Europe/London时区不会看起来一致。 -
测试您的配置,启动后访问指纹验证站点。确认时区、区域、语言和 IP 都指向同一地理区域。
延伸阅读
#timezone#locale#language#identity#geolocation