AngleSharp:正确设置Accept-Lang标头

时间:2019-11-30 05:25:54

标签: .net .net-core globalization anglesharp

我正在使用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 中正确设置给定的语言环境?

对此轻描淡写,将不胜感激,而且我认为总体上理解这很重要。

1 个答案:

答案 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

希望这会有所帮助!