簡體   English   中英

如何在 Puppeteer 中指定瀏覽器語言

[英]How to specify browser language in Puppeteer

我想使用 Puppeteer 啟動帶有西班牙語es語言的 Google Chrome 瀏覽器。

我已經嘗試過puppeteer.launch(args:['--lang=es',...],...)但它沒有用。

我試過傳遞環境變量LANGUAGE=es mocha puppeteer-test.js但它沒有用。

我嘗試使用userDataDir選項並傳遞帶有Preferences文件的文件夾{ "intl": { "accept_languages": "es" } }但瀏覽器設置 - 語言仍然不顯示西班牙語, window.navigator.languages也沒有window.navigator.languages都不是window.navigator.language

我正在使用
木偶師 0.11.0
節點 8.4.0
NPM 5.2.0
macOS 埃爾卡皮坦 10.11.6
MacBook Pro Retina,15 英寸,2015 年中

有幾種方法可以更改語言環境,您可以嘗試所有這些方法以找到適合您的方法,

啟動時使用 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 十億

瀏覽器泄漏:

在此處輸入圖片說明

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"];
        }
    });
});

在 Chrome Linux 上,你可以這樣做

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

我不知道其他操作系統/瀏覽器......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM