首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在http头中设置user-agent

如何在http头中设置user-agent
EN

Stack Overflow用户
提问于 2017-05-12 05:20:02
回答 3查看 16.1K关注 0票数 7

我正在尝试在C#的覆盖函数GetWebRequest中设置http头中的用户代理

代码语言:javascript
复制
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
    System.Net.HttpWebRequest request = base.GetWebRequest(uri) as System.Net.HttpWebRequest;                
    request.Headers.Add("User-Agent", (someone@yahoo.com"));
    request.ProtocolVersion = System.Net.HttpVersion.Version10;
    request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
    request.KeepAlive = false;
    return request;
} 

我的请求返回了一个错误,并且我被告知他们没有看到用户代理。我已经尝试了其他方法来设置头文件user-agent,但到目前为止都不起作用。我尝试过的其他一些方法是

代码语言:javascript
复制
request.Headers["User-Agent"] = "someone@yahoo.com");
request.UserAgent = "someone@yahoo.com";
request.Headers.Set("User-Agent", "someone@yahoo.com");

我试图发送我的请求的站点告诉我,它需要一种方法来识别我们,以防出现问题,并且“请确保您的请求包括"user-agent”http头。“他们给我发了一个例子,但它使用的是CURL

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_USERAGENT,'jeremy.fields@gmail.com)
EN

回答 3

Stack Overflow用户

发布于 2017-05-12 05:47:19

用户代理代表您的浏览器,如Firefox或Chrome

通过将HttpWebRequest转换为HttpWebRequest来使用它的UserAgent属性

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "my user agent";

代码语言:javascript
复制
request = new HttpClient();
request.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0");
票数 4
EN

Stack Overflow用户

发布于 2019-10-23 20:14:12

如果您编写自己的应用程序请求http内容,则最佳实践是在用户代理中设置任何形式的标识。它可以是电子邮件、网站或产品名称,如果这是广为人知的。

根据HTTP specification的说法,用户代理中的产品令牌:

(...)应该简短并切中要害。它们不得用于广告或其他不必要的信息。尽管任何标记字符都可能出现在product-version中,但该标记只能用于版本标识符(即,相同产品的后续版本应该仅在产品值的product-version部分不同)。

在最简单的形式中,它可以是以下中的一种:

代码语言:javascript
复制
request.UserAgent = "MyAppName/1.0.0";
request.UserAgent = "MyAppName/1.0.0 (someone@example.com)";
request.UserAgent = "MyAppName/1.0.0 (+http://www.example.com)";

注释中的URL必须以+为前缀(由Brendonthis answer中记录)。还值得注意的是,任何邮件地址都应该发送给负责产品的公司或开发人员,而不是使用它的用户。

如果您需要与现代浏览器兼容(如果您希望结果是HTML,而不是包含xml/json/等的API ),您还可以将“默认”Mozilla版本与您的操作系统信息一起添加:

代码语言:javascript
复制
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) MyAppName/1.0.0 (someone@example.com)"

最好是发送正确的系统信息,而不是只复制找到的带有不正确操作系统信息的用户代理字符串。

票数 1
EN

Stack Overflow用户

发布于 2017-05-12 05:40:28

我认为您错误地使用了User-Agent头。来自MSDN

当您访问网页时,您的浏览器会将用户代理字符串发送到您访问的站点所在的服务器。此字符串指示您正在使用的浏览器、其版本号以及有关系统的详细信息,例如操作系统和版本。web服务器可以使用此信息提供为您的特定浏览器量身定做的内容。

该页面中的一个示例:

User-Agent: Mozilla/5.0 (Windows NT6.3;Trident/7.0;rv:11.0),如Gecko

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43925733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档