1

在测试无头镀铬时,我注意到它不会传输Accept-Language标题条目。我已经确认当有一个可见的浏览器窗口时它会被发送。

这是否有原因,chrome是否可以选择要求/强制它发送这些正常值?

要看到这一点,您可以启动 Fiddler 并在命令行中输入:

chrome --headless --incognito --window-size=1920,1080 --disable-gpu --no-sandbox http://www.daringfireball.net/

在 Fiddler 检查器(原始视图)中,您会看到:

GET https://daringfireball.net/css/ie_sucks HTTP/1.1
Host: daringfireball.net
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/65.0.3325.181 Safari/537.36
Accept: text/css,*/*;q=0.1
Referer: https://daringfireball.net/
Accept-Encoding: gzip, deflate

而运行相同的命令没有--headless给你这个:

GET https://daringfireball.net/css/ie_sucks.php HTTP/1.1
Host: daringfireball.net
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Accept: text/css,*/*;q=0.1
Referer: https://daringfireball.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
4

2 回答 2

3

运行无头模式时,将以下设置为选项:

'--lang=en-GB'
于 2019-08-22T15:02:46.153 回答
1

看起来 Accept-Language 是一个用户配置文件头,仅当浏览器有一个确认的用户指定一种语言并且因为无头没有用户它可以/不发送该头时才发送。这是在这些帖子中提出的,并且在可预见的未来看起来是一个缺乏的功能:

https://github.com/SeleniumHQ/selenium/issues/4437 https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925

于 2018-04-13T10:32:04.110 回答