21

我想es使用 Puppeteer 启动带有西班牙语的 Google Chrome 浏览器。

我试过puppeteer.launch(args:['--lang=es',...],...)了,但没有用。

我试过传递环境变量LANGUAGE=es mocha puppeteer-test.js,但没有用。

我尝试使用该userDataDir选项并传递带有文件 a 的文件夹,Preferences{ "intl": { "accept_languages": "es" } }浏览器设置 - 语言仍然不显示西班牙语,也window.navigator.languages没有window.navigator.language

我正在使用
Puppeteer 0.11.0
Node 8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6
MacBook Pro Retina,15 英寸,2015 年中

4

3 回答 3

57

有几种方法可以更改语言环境,您可以尝试所有方法以找到适合您的方法,

启动时使用 Args

const browser = await puppeteer.launch({
    headless: false,
    args: ['--lang=bn-BD,bn']
});

将语言作为标题发送

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,这是结果。

谷歌搜索:

es 十亿

浏览器泄漏:

在此处输入图像描述

于 2017-11-14T17:38:01.227 回答
5

Md-Abu-Taher 的回答有误。

的响应navigator.language应该返回一个字符串,而不是一个数组。在您自己的浏览器控制台中尝试。

代码片段应该是:

await page.evaluateOnNewDocument(() => {
    Object.defineProperty(navigator, "language", {
        get: function() {
            return "en-GB";
        }
    });
    Object.defineProperty(navigator, "languages", {
        get: function() {
            return ["en-GB", "en"];
        }
    });
});
于 2019-11-29T11:08:14.527 回答
0

在 Chrome Linux 上,你可以做

puppeteer.launch({ ...yourParams, env: { LANGUAGE: "fr_FR" } })

我不知道其他操作系统/浏览器...

于 2022-02-24T16:23:34.570 回答