AngleSharp:正确设置 Accept-Lang header

AngleSharp: properly setting Accept-Lang header

我正在使用 AngleSharp 查询 google.com。我得到的所有结果都是针对 it-IT 语言环境生成的(因为我从 意大利 执行代码)。使用设置为 en-US 的浏览器进行的测试证明了这一点。

从项目 GitHub issues 中的讨论中,我了解到我正在以正确的方式设置 Accept-Language header .

这段代码证实了这一点:

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(或一般的 Web 服务器)如​​何以不同的方式识别客户端语言环境?以及如何在 AngleSharp?

中正确设置给定的语言环境

了解它,将不胜感激,更重要的是,我认为总体上理解它是一件重要的事情。

Google 从您的位置/地区获取语言环境,这是由 IP 地址给出的。

您可以通过 Google cookie 覆盖此设置(或通过在页面上设置它来触发 cookie)。具有 NID 值的 cookie 是值得尊重的。

Most Google users will have a preferences cookie called ‘NID’ in their browsers. A browser sends this cookie with requests to Google’s sites. The NID cookie contains a unique ID Google uses to remember your preferences and other information, such as your preferred language (e.g. English), how many search results you wish to have shown per page (e.g. 10 or 20), and whether or not you wish to have Google’s SafeSearch filter turned on.

参见https://policies.google.com/technologies/types?hl=en-US

希望对您有所帮助!