能否在C#控制台应用程序中使用HttpBrowserCapabilities?

19

我需要从控制台应用程序解析UserAgent字符串,这似乎是一种简单的方法,但很明显我没有HttpRequest对象,并且无法伪造一个带有User-Agent头的对象(我会得到平台不受支持的异常)。是否有任何方法可以做到这一点,或者我应该开始探索其他用于解析用户代理的替代方案?


你想捕获什么类型的页面请求?特别是来自控制台应用程序? - Shoaib Shaikh
我有一个用户代理列表的文本文件,我想解析出浏览器、版本、操作系统和其他一些东西——所有这些都可以通过 Request.Browser 获取,但现在我正在尝试从控制台应用程序和用户代理字符串列表中获取它们。 - Jody Powlette
1个回答

27

User-Agent头可以通过BrowserCapabilitiesFactory帮助下的HttpBrowserCapabilities类进行解析,示例如下:

var userAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) " +
                "Gecko/20100914 Firefox/3.6.10";
var browser = new HttpBrowserCapabilities {
    Capabilities = new Hashtable {{string.Empty, userAgent}}
};
var factory = new BrowserCapabilitiesFactory();
factory.ConfigureBrowserCapabilities(new NameValueCollection(), browser);

我想在 asp.net 环境之外运行它(分析日志文件)。它似乎不能很好地确定代理类型和版本。"Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/37.0.2062.120+Safari/537.36" = Chrome 37,但 "Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+SynapseWorkstation.3.2.1;+MS-RTC+LM+8;+Tablet+PC+2.0)" = Mozilla。 - Jeremy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接