拦截 HTTP 请求

3
我有一个可疑的应用程序,它向网站发出HTTP请求,我想拦截该请求并向服务器发送其他数据。在C#、Java或C ++中是否可能实现?
编辑:该应用程序不是我的,我只知道它发送http请求的终点。

这里的“intersect”实际上是什么意思? - Aliostad
你可以编写一个代理服务器并在你的系统上运行它。在你的应用程序中配置代理服务器(或者在Internet Explorer中配置,如果应用程序知道这些设置)。 - Uwe Keim
Uwe Keim但是我该如何“停止”原始请求的发送? - DVD
如果您不需要在代码中完成它,可以使用像WireShark这样的程序。而且,您也可以在自己的程序中使用WireShark使用的WinPCap驱动程序。 - CodesInChaos
我想知道这个程序是否会尊重你的hosts文件。 - Brian
你想要拦截和更改哪个程序中的数据?了解这一点可能会帮助我们提供更好的答案。 - Mike Chess
4个回答

5

Fiddler 可能提供您所需的功能。至少它可以让您看到发送到网站的内容。


我认为Fiddler只允许你进行内省,但不能进行修改。 - Nim
Nop这个工具只让我看到请求。 - DVD
2
@DVD - 相反!Fiddler为您提供了完整的Jscript.NET功能,以便您对请求和响应进行任意调整!以下是一些示例:http://www.fiddler2.com/fiddler/Dev/ScriptSamples.asp - Vilx-
但我想以编程的方式或使用某种API xDD来完成这个程序。 - DVD

1

Java中,您可以拦截来自过滤器的请求。


0

0
首先,您是否知道它是如何连接到互联网的?例如,它是否使用Internet Explorer的设置,还是建立直接连接?如果是后者,这可能会很棘手,在Linux中没有直接的端口转发,因此您需要一些第三方工具将流量重定向到服务器(您可以使用Java、C++或C#编写服务器,如果您熟悉C#,我建议使用它以获得纯开发速度)。在该服务器上,您可以拦截请求,然后创建自己的请求实际发送到真正的目标。
听起来有点笨拙,但由于缺乏直接的端口转发,我认为您只能采用这种方法。您将不得不配置所使用的第三方工具将某些其他众所周知的端口转发到80,并且您的服务器应该写入此端口。

问题在于这个程序不是我的,所以我只知道它发送数据的位置...我想做的就是拦截它并按照我的意愿处理 xDD。 - DVD
如果你使用@DVD的方法,那么你就会被卡住。在Java中有一些可嵌入的HTTP服务器,它们是操作系统级别的。然后使用第三方工具(例如http://www.boutell.com/rinetd/ - 这已经过时了,谷歌搜索应该会返回一些更新的工具!)将HTTP请求重定向到你的服务器,然后服务器应该将请求发送到真正的目标地址(注意,你需要将一些本地地址重定向到真正的目标地址,然后你的服务器应该连接到那个地址!)。 - Nim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接