如何在 Puppeteer 中指定浏览器语言
How to specify browser language in Puppeteer
我想使用 Puppeteer 启动 Google Chrome 西班牙语 es
浏览器。
我试过 puppeteer.launch(args:['--lang=es',...],...)
但没用。
我试过传递环境变量 LANGUAGE=es mocha puppeteer-test.js
但它没有用。
我已经尝试使用 userDataDir
选项并将带有 Preferences
文件的文件夹传递给 { "intl": { "accept_languages": "es" } }
但是浏览器设置 - 语言仍然不显示西班牙语,也没有window.navigator.languages
都不是 window.navigator.language
我正在使用
人偶师 0.11.0
节点 8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6
MacBook Pro Retina,15 英寸,2015 年中
有多种更改区域设置的方法,您可以尝试所有方法以找到适合您的方法,
启动时使用参数
const browser = await puppeteer.launch({
headless: false,
args: ['--lang=bn-BD,bn']
});
发送语言为Header
await page.setExtraHTTPHeaders({
'Accept-Language': 'bn'
});
强制设置语言
// Set the language forcefully on javascript
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, "language", {
get: function() {
return "bn-BD";
}
});
Object.defineProperty(navigator, "languages", {
get: function() {
return ["bn-BD", "bn"];
}
});
});
为了测试,我会用多种语言进行测试,包括es
,这是结果。
Google 搜索:
浏览器泄露:
Md-Abu-Taher 的回答有误。
对 navigator.language
的响应应该 return 一个字符串,而不是一个数组。在您自己的浏览器控制台中尝试。
代码段应该是:
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, "language", {
get: function() {
return "en-GB";
}
});
Object.defineProperty(navigator, "languages", {
get: function() {
return ["en-GB", "en"];
}
});
});
在ChromeLinux,你可以
puppeteer.launch({ ...yourParams, env: { LANGUAGE: "fr_FR" } })
我不知道其他人 OS/browsers ...
我想使用 Puppeteer 启动 Google Chrome 西班牙语 es
浏览器。
我试过 puppeteer.launch(args:['--lang=es',...],...)
但没用。
我试过传递环境变量 LANGUAGE=es mocha puppeteer-test.js
但它没有用。
我已经尝试使用 userDataDir
选项并将带有 Preferences
文件的文件夹传递给 { "intl": { "accept_languages": "es" } }
但是浏览器设置 - 语言仍然不显示西班牙语,也没有window.navigator.languages
都不是 window.navigator.language
我正在使用
人偶师 0.11.0
节点 8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6
MacBook Pro Retina,15 英寸,2015 年中
有多种更改区域设置的方法,您可以尝试所有方法以找到适合您的方法,
启动时使用参数
const browser = await puppeteer.launch({
headless: false,
args: ['--lang=bn-BD,bn']
});
发送语言为Header
await page.setExtraHTTPHeaders({
'Accept-Language': 'bn'
});
强制设置语言
// Set the language forcefully on javascript
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, "language", {
get: function() {
return "bn-BD";
}
});
Object.defineProperty(navigator, "languages", {
get: function() {
return ["bn-BD", "bn"];
}
});
});
为了测试,我会用多种语言进行测试,包括es
,这是结果。
Google 搜索:
浏览器泄露:
Md-Abu-Taher 的回答有误。
对 navigator.language
的响应应该 return 一个字符串,而不是一个数组。在您自己的浏览器控制台中尝试。
代码段应该是:
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, "language", {
get: function() {
return "en-GB";
}
});
Object.defineProperty(navigator, "languages", {
get: function() {
return ["en-GB", "en"];
}
});
});
在ChromeLinux,你可以
puppeteer.launch({ ...yourParams, env: { LANGUAGE: "fr_FR" } })
我不知道其他人 OS/browsers ...