我正在使用AngleSharp查询 google.com 。我得到的所有结果都是针对 it-IT 语言环境而产生的(因为我执行了 Italy 中的代码)。使用设置为 zh-CN 的浏览器进行的测试证明了这一点。
在项目的 GitHub问题中的讨论中,我了解到我正在以正确的方式设置Accept-Language
头。
此代码对其进行确认:
var formatter = new PrettyMarkupFormatter();
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.812");
var requester = new HttpClientRequester(client);
var config = Configuration.Default.WithRequester(requester).WithDefaultLoader();
var context = BrowsingContext.New(config);
var document = await context.OpenAsync("http://www.reliply.org/tools/requestheaders.php");
var table = document.QuerySelector("table.standard");
Console.WriteLine(table.ToHtml(formatter));
google.com (或一般的网络服务器)如何以不同的方式识别客户端语言环境?以及如何在 AngleSharp 中正确设置给定的语言环境?
对此轻描淡写,将不胜感激,而且我认为总体上理解这很重要。
答案 0 :(得分:1)
Google从您的位置/区域(由IP地址指定)获得区域设置。
您可以通过Google cookie(或通过在页面上进行设置,将触发cookie)覆盖此设置。具有NID值的cookie是值得关注的cookie。
大多数Google用户的浏览器中都会有一个名为“ NID”的首选项cookie。浏览器将此Cookie和请求发送到Google的网站。 NID cookie包含Google用来记住您的偏好和其他信息的唯一ID,例如您的首选语言(例如英语),每页希望显示多少搜索结果(例如10或20)以及是否希望启用Google的安全搜索过滤器。
请参见https://policies.google.com/technologies/types?hl=en-US。
希望这会有所帮助!