4

这可能很难解释,所以我将用一个例子来说明这一点。

我希望能够劫持 http 请求并(可能)使用 C++ 或 Python(最好是 Python,因为我更了解它)以编程方式修改它们。最终,我希望实现类似于 Web 浏览器在提供缓存对象时所做的事情。

例子

当您http://www.example.com/image.jpg(从任何网站)下载文件时,它会保存在文件系统的某个位置,以便用户计算机对该文件发出的下一个请求(无论是通过浏览器还是wget在 linux 等中)将指向文件系统上的副本.

简而言之,我希望能够检测到发出的请求http://www.example.com/image.jpg并修改为/tmp/files/image.jpg.

这将成为我们正在进行的更大研究项目的一部分。

我很难解释这一点,所以如果我需要提供更多详细信息,请告诉我。

预先感谢您的帮助。

4

1 回答 1

3

最合理的方法是实现代理。然后,您可以将浏览器配置为使用代理,并且来自 Internet 的每个资源请求都将被路由到代理。

用 Python 编写代理服务器应该不会太难,因为所有低级细节都已由标准库(例如urllib2)处理。您还可以查看像proxpy这样的项目,这似乎是一个很好的起点。

另一种更烦人但更通用的方法是在网络级别工作,将所有流量路由到您可以决定做什么的特定机器。但是请注意,有些协议的设计目的是只有预期的接收者才能理解请求,并且只有发送者才能解释结果:对于那种流量,您只能观察到纯粹的噪音来回发送,什么也做不了在不中断通讯的情况下。

于 2013-10-30T12:54:54.190 回答