2010-10-08 12 views
18

Necesito analizar cadenas de UserAgent desde una aplicación de consola y esto parece una forma sencilla de hacerlo, pero obviamente no tengo un objeto HttpRequest y no puedo parecer falso con un encabezado User-Agent (Obtengo la excepción de la plataforma no admitida). ¿Hay alguna forma de hacerlo, o debería comenzar a explorar otras alternativas al análisis del agente de usuario?¿Es posible utilizar HttpBrowserCapabilities desde una aplicación de consola C#?

+0

qué tipo de solicitud de la página que desea capturar ???? especialmente desde la aplicación de la consola? –

+0

Sin solicitud de página. Tengo una lista de agentes de usuario en un archivo de texto y quiero analizar el navegador, la versión, el sistema operativo y un par de cosas más, todo lo cual habría estado disponible a través de Request.Browser, pero ahora estoy tratando de obtenerlos de una aplicación de consola y una lista de cadenas de UserAgent. –

Respuesta

26

La cabecera User-Agent puede ser analizada por la clase HttpBrowserCapabilities con la ayuda de un BrowserCapabilitiesFactory, de la siguiente manera:

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); 
+0

Esto funciona! ¡Gracias! –

+0

¡Gracias esto también resolvió mi problema! –

+0

Quiero ejecutar esto fuera de un entorno asp.net (análisis de archivos de registro). No parece determinar muy bien el tipo de agente y la versión. "Mozilla/5.0 + (Windows + NT + 6.1) + AppleWebKit/537.36 + (KHTML, + como + Gecko) + Chrome/37.0.2062.120 + Safari/537.36" = Chrome 37, pero "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

Cuestiones relacionadas