在HttpRequest
上设置用户代理很容易,但通常我想使用一个单独的HttpClient
并且每次都使用相同的用户代理,而不是在每个请求上都设置它。
HttpClient _client = new HttpClient();
_client.DefaultRequestHeaders.Add("User-Agent", "C# App");
DefaultRequestHeaders.Add(...)
对我无效。
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; AcmeInc/1.0)");
在一个.NET Standard 2.0库中,以下内容对我起作用:
HttpClient client = new HttpClient();
ProductHeaderValue header = new ProductHeaderValue("MyAwesomeLibrary", Assembly.GetExecutingAssembly().GetName().Version.ToString());
ProductInfoHeaderValue userAgent = new ProductInfoHeaderValue(header);
client.DefaultRequestHeaders.UserAgent.Add(userAgent);
// User-Agent: MyAwesomeLibrary/1.0.0.0
UserAgent
类还提供了TryParse
方法,特别适用于没有版本号的情况下(出于任何原因)。RFC明确允许这种情况。 - JensGstring agent="ClientDemo/1.0.0.1 test user agent DefaultRequestHeaders";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", agent);
备注:使用此结构生成代理名称 用户代理:产品/产品版本注释
- 产品:产品标识符
- 产品版本:产品版本号。
- 注释:包含产品的一个或多个信息注释,例如。