Hallo an alle,
habe folgendes Problem:
ich möchte einen LinkChecker schreiben, der auch selbsterstellte 404-Seiten erkennt.
Beispiel:
Ich besuche die Webseite
die es nicht gibt. Der Server gibt mir erst eine 303 für die Weiterleitung nach "https://www.bs-card-service.com/de/error/" und dann eine 200 für eigentliche Error-Seite.
Nun ist die Error-Seite aber eine selbsterstellte 404-Seite. Gibt es eine Möglichkeit die Seite "https://www.bs-card-service.com/de/error/" als 404-Seite zu identifizieren?
Aktuell nutze ich "htmlunit" um mir die Statuscodes zu holen:
Wenn die Seitenweiterleitung aktiv (true) ist, bekomme ich, wie oben geschrieben, den Code "200" zurück und wenn diese inaktiv (false) ist, bekomme ich den Code "303" zurück
Über
kann ich mir noch die Status-Message ausgeben lassen. Bringt mir allerdings nicht viel, da diese nur "OK" oder "See other" heißt. Also eine Übersetztung der Codes
Also ich bin jetzt nich zwingend auf htmlunit angewiesen. Nutzte diese Bibliothek nur, weil sie auf anderen Gebieten (z.B. das Holen aller Links von Webseiten) gute Dienste tut.
Andere Techniken, mit denen ich allerdings nicht die besten Erfahrungen gemacht (weil ggf. nicht richtig angewandt!?) habe wäre "httpunit" und über das Java-eigene "URLConnection"-Objekt.
Ein Lösungsansatz, der mir allerdings etwas kompliziert und nicht sehr sicher erscheint wäre:
Ich hole mir die Base-URL, provoziere dann mit der Endung "0123456789.html" eine 404-Seite, speichere das Page-Objekt ab und vergleiche das dann mit der eigentlich zuprüfenden Seite.
Problem: Bei Seiten mit Länderumschalter z.b. "http://www.xyz.com/de" bzw "http://www.xyz.com/en" habe ich die 404-Seite in einer eigenen Sprache, da würde das provozieren eine 404-Seite und dem anschließenden Abgleich schon nicht mehr funktionieren
Ich hoffe, dass mir jemand helfen kann.
Beste Grüße
Thomas
habe folgendes Problem:
ich möchte einen LinkChecker schreiben, der auch selbsterstellte 404-Seiten erkennt.
Beispiel:
Ich besuche die Webseite
HTML:
https://www.bs-card-service.com/de/home/adsfasdf
Nun ist die Error-Seite aber eine selbsterstellte 404-Seite. Gibt es eine Möglichkeit die Seite "https://www.bs-card-service.com/de/error/" als 404-Seite zu identifizieren?
Aktuell nutze ich "htmlunit" um mir die Statuscodes zu holen:
Code:
WebClient webClient = new WebClient();
// Nicht sicheren SSL-Verbindungen trauen?
webClient.setUseInsecureSSL(true);
// Seitenweiterleitung folgen?
webClient.setRedirectEnabled(true);
// Fehler werfen, wenn ein "unschöner" StatusCode zurückkommt?
webClient.setThrowExceptionOnFailingStatusCode(false);
// Webseite holen
HtmlPage page = webClient.getPage("https://www.bs-card-service.com/de/home/adsfasdf");
// StatusCode der Webseite holen:
System.out.println(page.getWebResponse().getStatusCode());
Wenn die Seitenweiterleitung aktiv (true) ist, bekomme ich, wie oben geschrieben, den Code "200" zurück und wenn diese inaktiv (false) ist, bekomme ich den Code "303" zurück
Über
Code:
System.out.println(page.getWebResponse().getStatusMessage());
Also ich bin jetzt nich zwingend auf htmlunit angewiesen. Nutzte diese Bibliothek nur, weil sie auf anderen Gebieten (z.B. das Holen aller Links von Webseiten) gute Dienste tut.
Andere Techniken, mit denen ich allerdings nicht die besten Erfahrungen gemacht (weil ggf. nicht richtig angewandt!?) habe wäre "httpunit" und über das Java-eigene "URLConnection"-Objekt.
Ein Lösungsansatz, der mir allerdings etwas kompliziert und nicht sehr sicher erscheint wäre:
Ich hole mir die Base-URL, provoziere dann mit der Endung "0123456789.html" eine 404-Seite, speichere das Page-Objekt ab und vergleiche das dann mit der eigentlich zuprüfenden Seite.
Problem: Bei Seiten mit Länderumschalter z.b. "http://www.xyz.com/de" bzw "http://www.xyz.com/en" habe ich die 404-Seite in einer eigenen Sprache, da würde das provozieren eine 404-Seite und dem anschließenden Abgleich schon nicht mehr funktionieren
Ich hoffe, dass mir jemand helfen kann.
Beste Grüße
Thomas