7

Tenemos una herramienta que verifica si una URL determinada es una URL activa. Si una url determinada está activa, otra parte de nuestro software puede eliminar el contenido de la pantalla.Obteniendo el error "El servidor remoto devolvió un error: (403) Prohibido" cuando raspa la pantalla usando HttpWebRequest.GetResponse()

Este es mi código para comprobar si una URL es en vivo

public static bool IsLiveUrl(string url) 
    { 
     HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest; 
     webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5"; 
     webRequest.CookieContainer = new CookieContainer(); 
     WebResponse webResponse; 
     try 
     { 
      webResponse = webRequest.GetResponse(); 
     } 
     catch (WebException e) 
     { 
      return false; 
     } 
     catch (Exception ex) 
     { 

      return false; 
     } 
     return true; 
    } 

Este código funciona perfectamente pero para un sitio en particular alojada en Apache Me estoy haciendo una excepción de web con el siguiente mensaje. "El servidor remoto devolvió un error: (403) Prohibida" En una inspección posterior me encontré con los siguientes datos en el objeto WebException

estado = "ProtocolError" statusDescription = "mal comportamiento"

Esta es la solicitud encabezado "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-US; rv: 1.8.0.6) Gecko/20060728 Firefox/1.5 Host: scenicspares.co.uk Conexión: Keep-Alive"

Este es el encabezado de respuesta "Keep-Alive: timeout = 4, max = 512 Conexión: Keep-Alive Transfer-Encoding: fragmentada Content-Type: text/html Fecha: Jue 13 Ene 2011 10:29:36 GMT Servidor: Apache"

extraje estos encabezados utilizando un reloj en VS2008. El trabajo de marco en uso es 3.5.

Respuesta

13

Resultó que todo lo que tenía que hacer era siguiente

  webRequest.Accept = "*/*"; 
      webResponse = webRequest.GetResponse(); 

y lo arreglaron.

+0

Hola @syed, me encuentro con el mismo problema, y ​​ya agregué el código .Accept, pero sigo teniendo este error. ¿Algunas ideas? gracias – swdev

+5

Entendido, debo agregar estas tres líneas, 'webRequest.Method =" GET "; webRequest.UserAgent = "Foo"; webRequest.Accept = "text/html"; 'Servidor diferente puede requerir una configuración diferente – swdev

+1

Gracias swdev. Tu sugerencia parece resolver el problema con algunas páginas de wikipedia. – newman

Cuestiones relacionadas