2012-04-04 3 views
1

Ich versuche ausgehende HTTP-Anfrage zu fangen und durch eine andere zu ersetzen. Zum Beispiel habe ich eine Anwendung, die Anforderung zu initiieren www.xxxxxxxxxx.com/something
Ich brauche diese Anforderung zu fangen und statt www.xxxxxxxxxx.com/something ich es www.yyyyyyyyyyyy.com/somethingElse.Abfangen von HTTP-Anfrage

Der Antrag Antrag gestellt wird umgeleitet, die ich haben keinen Zugriff auf den Quellcode, so dass es außerhalb der Anwendung erfolgen muss.

mir jemand kann einen Hinweis darauf geben, wie dies getan werden kann?

Antwort

2

können Sie Fiddler Auto-Responder für dieses

Offensichtlich würde dies nur funktionieren, wenn Sie vollen Zugriff auf den Client-Rechner haben. Wenn dies vom Server aus erfolgen muss, können Sie einen Proxy auf dem Server einrichten, um die Anfrage an eine andere Webseite weiterzuleiten.

Überprüfung dieser Blog-Eintrag für die Details

Dieser Blog-Eintrag beschreibt, wie Anfragen ändern, aber Sie können genauso einfach, sie zu einer anderen Domäne weiterleiten.

Es ist auch möglich, diese Technik über die Verwendung von HTTPS mit generierte Zertifikate http://www.fiddler2.com/fiddler/help/httpsdecryption.asp

Einige Leute scheinen zu behaupten, dass diese Antwort nicht funktionieren wird, schätze ich die Tatsache, dass sie durch die Fähigkeiten von Fiedler verwirrt sind, aber am Ende sind sie falsch, tu deine Forschung.

Eine noch einfachere Lösung könnte sein, Ihre lokalen DNS zu überschreiben, können Sie dies mit der HOSTS-Datei unter Windows tun, beachten Sie, dass dies die ursprünglichen Host-Header an die andere Domäne senden wird, die Sie nicht wollen.

+0

Wie ist es möglich, wenn es https ist? –

+0

@RameshPVK Das ist eine ausgezeichnete Frage, Sie können ein gefälschtes CA-Root-Zertifikat verwenden, kommt mit Fiddler. Es ist ziemlich einfach, sich wirklich einzurichten. Weitere Informationen finden Sie hier: http://www.fiddler2.com/fiddler/help/httpsdecryption.asp –

+0

Fidler ist ein Test-Tool, das die Anfrage aufzeichnet und sie erneut abspielt. Währenddessen können Sie die Host-Adresse ändern. Das ist nicht die Lösung für die Frage. –

0

Nein, können Sie das tun, nicht auf Client-Seite.

  • Stattdessen Sie should redirect-www.yyyyyyyyyyyy.com/somethingElse, wenn eine Anfrage kommt zu www.xxxxxxxxxx.com/somethingon the server side.
  • Oder verwenden Sie LB oder einen Proxy.
+1

Wenn Sie root-Zugriff auf der Client-Seite haben, ist dies mit Fiddler perfekt möglich. –

+0

Wie werden Sie es tun, wenn es https? –

1

Verwenden Sie eine intelligente proxy oder schreiben Sie die URL um die server end.

+0

Das OP möchte ausgehende Anfragen erfassen, keine eingehenden Anfragen, dies ist keine Antwort. –

+0

@helmus: "und ersetzen Sie es durch ein anderes" - dies * ist * die einzige Möglichkeit, das Problem zu lösen, wenn die Client-Anwendung nicht geändert werden kann. – symcbean

+0

Fiddler kann die http (s) Anfragen von der Client-Anwendung abfangen und "ersetzen Sie sie durch eine andere" vollständig, was immer Sie wollen –

0

Welche Art von Anwendung ist das! Normalerweise, wenn Sie einen Webserver wie Apache, Lighttpd, Cherokee davor haben oder die Anwendung darauf implementiert ist, können Sie URL-Rewritting verwenden.

Apache kann es tun, auch auf einen anderen Server. http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

1

Wenn die Anforderung von der Client-Seite ausgelöst wird, dann können Sie nicht diese Anforderung abfangen und Benutzer an eine andere Adresse umleiten. Sie können jedoch ein HTTP-Modul in der HTTP-Pipeline hinzufügen, das die URL zu einer anderen Adresse ändert, bevor eine Antwort an den Clientbrowser gesendet wird.

+0

"Wenn die Anfrage von der Clientseite initiiert wird, können Sie diese Anfrage nicht abfangen und den Benutzer an eine andere Adresse umleiten." Das ist richtig, wenn Sie es von der Serverseite abfangen wollen, können Sie es jedoch von der Klientenseite abfangen, die (was ich glaube) das OP tun soll –