我正在尝试在C#的覆盖函数GetWebRequest中设置http头中的用户代理
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,但到目前为止都不起作用。我尝试过的其他一些方法是
request.Headers["User-Agent"] = "someone@yahoo.com");
request.UserAgent = "someone@yahoo.com";
request.Headers.Set("User-Agent", "someone@yahoo.com");我试图发送我的请求的站点告诉我,它需要一种方法来识别我们,以防出现问题,并且“请确保您的请求包括"user-agent”http头。“他们给我发了一个例子,但它使用的是CURL
curl_setopt($ch, CURLOPT_USERAGENT,'jeremy.fields@gmail.com)发布于 2017-05-12 05:47:19
用户代理代表您的浏览器,如Firefox或Chrome
通过将HttpWebRequest转换为HttpWebRequest来使用它的UserAgent属性
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "my user agent";或
request = new HttpClient();
request.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0");发布于 2019-10-23 20:14:12
如果您编写自己的应用程序请求http内容,则最佳实践是在用户代理中设置任何形式的标识。它可以是电子邮件、网站或产品名称,如果这是广为人知的。
根据HTTP specification的说法,用户代理中的产品令牌:
(...)应该简短并切中要害。它们不得用于广告或其他不必要的信息。尽管任何标记字符都可能出现在product-version中,但该标记只能用于版本标识符(即,相同产品的后续版本应该仅在产品值的product-version部分不同)。
在最简单的形式中,它可以是以下中的一种:
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必须以+为前缀(由Brendon在this answer中记录)。还值得注意的是,任何邮件地址都应该发送给负责产品的公司或开发人员,而不是使用它的用户。
如果您需要与现代浏览器兼容(如果您希望结果是HTML,而不是包含xml/json/等的API ),您还可以将“默认”Mozilla版本与您的操作系统信息一起添加:
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) MyAppName/1.0.0 (someone@example.com)"最好是发送正确的系统信息,而不是只复制找到的带有不正确操作系统信息的用户代理字符串。
发布于 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
https://stackoverflow.com/questions/43925733
复制相似问题