Wenn ich eine URL habe (zB http://www.foo.com/alink.pl?page=2), möchte ich feststellen, ob ich auf einen anderen Link umgeleitet werde. Ich möchte auch die finale URL kennen (zB http://www.foo.com/other_link.pl). Schließlich möchte ich das in Perl und Groovy machen können.Wie kann ich feststellen, ob eine URL umgeleitet wird?
Antwort
In Perl:
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'http://google.com/');
my $response = $ua->request($request);
if ($response->is_success and $response->previous) {
print $request->url, ' redirected to ', $response->request->uri, "\n";
}
Nun, ich weiß nichts über Perl oder groovy, also gebe ich Ihnen eine andere aus einer HTTP-Sicht, und Sie müssen anpassen.
Normalerweise machen Sie eine HTTP-Anfrage, und Sie erhalten etwas HTML-Text zusammen mit einem Antwortcode zurück. Der Response-Code für Erfolg ist 200. Jeder Antwortcode in dem 300-Bereich ist eine Form einer Umleitung.
In Perl können Sie dafür LWP::Useragent verwenden. Ich denke, der einfachste Weg ist, einen response_redirect
Handler unter Verwendung add_handler
hinzuzufügen.
Mit Bezug auf James Antwort - Beispiel HTTP-Sitzung:
$ telnet www.google.com 80
HEAD/HTTP/1.1
HOST: www.google.com
HTTP/1.1 302 Found
Location: http://www.google.it/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: ##############################
Date: Thu, 30 Oct 2008 20:03:36 GMT
Server: ####
Content-Length: 218
Mit HEAD statt erhalten Sie nur den Header erhalten. "302" bedeutet eine temporäre Umleitung, "Location:" ist der Ort, an den Sie weitergeleitet werden.
Ein schnellen & schmutzig groovy Skript, um die Konzepte zu zeigen - Beachten Sie, dass dies mit java.net.HttpURLConnection
Um die Umleitung zu erkennen, müssen Sie setFollowRedirects(false)
verwenden. Andernfalls landen Sie auf der umgeleiteten Seite sowieso mit einem responseCode
von 200. Der Nachteil ist, dass Sie dann selbst die Umleitung navigieren müssen.
Ich denke, das wird für 301-Weiterleitungen funktionieren.
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => 'http://google.com/');
my $response = $ua->request($request);
if ($response->is_redirect ) {
print $request->url . " redirected to location " . $response->header('Location') . "\n";
}
- 1. Wie kann ich feststellen, ob eine URL in PHP umgeleitet wird?
- 2. Wie kann ich in einem Bash-Skript feststellen, ob die Skriptausgabe in eine Datei umgeleitet wird?
- 3. Wie kann ich feststellen, ob eine Vollbildanwendung ausgeführt wird?
- 4. Wie kann ich feststellen, ob eine Anfrage gut skaliert wird?
- 5. Wie kann ich feststellen, ob Console.Out in eine Datei umgeleitet wurde?
- 6. Wie kann ich feststellen, ob eine Rust-Bibliothek veraltet ist?
- 7. Jsoup wird umgeleitet URL
- 8. Wie kann ich feststellen, ob die Verbindung gemessen wird?
- 9. Wie kann ich feststellen, ob eine Website AJAX-Dienste anbietet?
- 10. Wie kann ich feststellen, ob MediaElement abgespielt wird?
- 11. Wie kann ich feststellen, ob glibc verwendet wird?
- 12. Wie kann ich feststellen, ob mein Prozess interaktiv ausgeführt wird?
- 13. Wie kann ich feststellen, ob eine Klasse serialisiert werden kann?
- 14. Wie kann ich feststellen, ob WebBrowser eine Fehlerseite aufruft?
- 15. Wie kann ich feststellen, ob mein TextBlock-Text abgeschnitten wird?
- 16. Wie kann ich feststellen, ob eine Datei leer ist?
- 17. Wie kann ich feststellen, ob eine Sitzung aktiv ist?
- 18. Wie kann ich feststellen, ob eine Entität gespeichert wurde?
- 19. Wie kann ich feststellen, ob eine zusammengesetzte Formatzeichenfolge ungültig ist?
- 20. Wie kann ich feststellen, ob eine jQuery-Dialogabfrage initialisiert wurde?
- 21. Wie kann ich feststellen, ob eine URL in eine neue Registerkarte gezogen wurde?
- 22. xsl: Wie kann ich feststellen, ob eine Variable deklariert wurde?
- 23. Wie kann ich feststellen, ob eine Datei umbenannt wurde?
- 24. Wie kann ich feststellen, ob eine Funktion ein Diagramm generiert
- 25. Wie kann ich feststellen, ob eine C-Ganzzahlvariable signiert ist?
- 26. Wie kann ich feststellen, ob eine .woff-Schriftart Hinweise enthält?
- 27. Wie kann ich feststellen, ob eine JavaScript-Bibliothek AMD unterstützt?
- 28. Wie kann ich feststellen, ob eine Datei gzip komprimiert ist?
- 29. Wie kann ich feststellen, ob eine Java-Ganzzahl null ist?
- 30. Wie kann ich feststellen, ob eine Java-Klasse abstrakt ist?
s/GET/HEAD /. Mit google.com scheint es nicht schneller, aber versuchen Sie es mit Microsoft.com ... –