2012-04-04 128 views
1

我试图捕获传出的HTTP请求并将其替换为另一个。比如我有一个应用程序,发起请求www.xxxxxxxxxx.com/something
我需要抓住这一请求,而不是去www.xxxxxxxxxx.com/something我必须把它重定向到www.yyyyyyyyyyyy.com/somethingElse.捕获HTTP请求

的请求是由应用程序所做的,我无法访问源代码,因此必须在应用程序之外完成。

任何人都可以给我一个提示如何做到这一点?

回答

2

您可以使用Fiddler自动回复此

显然,这,如果你有充分的访问客户机只会工作。 如果这需要从服务器完成,您可以在服务器上设置代理以将请求转发到其他网页。

检查这个博客条目的细节

本博客文章介绍如何修改请求,但你可以很轻松地将它们转发到不同的域。

也可以使用生成的证书 http://www.fiddler2.com/fiddler/help/httpsdecryption.asp

有些人似乎声称这个答案将无法正常工作使用这种技术通过HTTPS,我很欣赏他们由小提琴手的能力感到困惑的事实,但最终他们错了,做你的研究。

甚至更​​简单的解决方案可以覆盖您的本地DNS,您可以使用Windows上的HOSTS文件执行此操作,请记住,这会将原始主机标头发送到您可能不想要的其他域。

+0

它是如何可能的,如果它是https? – 2012-04-04 09:06:19

+0

@RameshPVK这是一个很好的问题,您可以使用欺骗CA根证书,随小提琴一起提供。真的很容易建立。更多信息在这里:http://www.fiddler2.com/fiddler/help/httpsdecryption.asp – 2012-04-04 09:15:53

+0

Fidler是一个测试工具,它记录请求并再次播放它们。在这样做的时候,你可以改变主机地址。这不是问题的解决方案。 – 2012-04-04 09:18:44

0

不,你不能在客户端做到这一点。

  • 相反,当任何请求到达www.xxxxxxxxxx.com/somethingon the server sideshould redirectwww.yyyyyyyyyyyy.com/somethingElse
  • 或者使用LB或代理。
+1

如果您在客户端拥有root访问权限,那么使用fiddler完全有可能。 – 2012-04-04 08:20:50

+0

如果https,你会怎么做? – 2012-04-04 09:05:56

1

使用智能proxy或重写URL server end

+0

OP想要捕获传出请求,而不是传入请求,这不是一个答案。 – 2012-04-04 09:25:58

+0

@helmus:“并将其替换为另一个” - 如果客户端应用程序无法修改,则此*是解决问题的唯一方法。 – symcbean 2012-04-04 10:29:11

+0

fiddler可以拦截来自客户端应用程序的http(s)请求并“完全替换它们”到任何你想要的位置 – 2012-04-04 10:34:10

0

这是什么类型的应用程序!通常情况下,如果你有像apache这样的web服务器,lighttpd,它前面的cherokee或应用程序部署在它上面,你可以使用URL-Rewritting。

Apache可以做到这一点,甚至到不同的服务器。 http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

1

如果请求是从客户端发起的,那么您不能拦截该请求并将用户重定向到某个其他地址。但是,您可以在HTTP管道中添加一个HTTPModule,它会在将响应发送到客户端浏览器之前将URL更改为其他地址。

+0

“如果请求是从客户端发起的,那么您将无法截获该请求并将用户重定向到某个其他地址。”如果你想从服务器端拦截它,这是真的,但你可以从客户端拦截它,这是(我相信)OP想要做的事情 – 2012-04-04 09:39:20