Wir haben ein Tool, das prüft, ob eine gegebene URL eine Live-URL ist. Wenn eine gegebene URL live ist, kann ein anderer Teil unserer Software den Inhalt von ihr screenen.Fehler erhalten "Der Remote-Server hat einen Fehler zurückgegeben: (403) Forbidden" beim Screen Scraping mit HttpWebRequest.GetResponse()
Dies ist mein Code für die Überprüfung, ob eine URL Live ist
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;
}
Dieser Code funktioniert perfekt, aber für eine bestimmte Website auf Apache gehostet ich erhalte eine Web-Ausnahme mit der Meldung folgen. „Der Remoteserver hat einen Fehler zurückgegeben: (403) verboten“ Bei der weiteren Überprüfung fand ich die folgenden Angaben in dem WebException Objekt
Status = „Protocol“ StatusDescription = „Bad Behaviour“
Diese die Anforderung header "Benutzer-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv: 1.8.0.6) Gecko/20060728 Firefox/1.5 Host: scenicspares.de Verbindung: Keep-Alive"
Dies ist die Antwort Kopfzeile "Keep-Alive: Timeout = 4, max = 512 Verbindung: Keep-Alive Transfer-Encoding: Chunked Content-Type: text/html Datum: Do, 13. Januar 2011 10.29.36 GMT Server: Apache“
ich extrahiert diese Header eine Uhr in VS2008 verwenden. Die verwendete Rahmenarbeit ist 3,5.
Hallo @syed, ich habe das gleiche Problem, und fügen Sie bereits die .Akzept Code, aber ich habe immer noch diesen Fehler. Irgendwelche Ideen? danke – swdev
Ich habe diese drei Zeilen hinzufügen, webRequest.Method = "GET"; webRequest.UserAgent = "Foo"; webRequest.Accept = "text/html"; 'Unterschiedlicher Server erfordert möglicherweise andere Einstellungen – swdev
Danke swdev. Ihr Tipp scheint das Problem mit einigen Wikipedia-Seiten zu lösen. – newman