Python或C ++:劫持http请求以修改目标

时间:2013-10-30 12:41:53

标签: c++ python http caching

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

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

示例

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

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

这将成为我们正在开展的更大型研究项目的一部分。

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

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

另一种更烦人但更通用的方法是在网络级别上工作,通过特定的机器路由所有流量,您可以决定做什么。请注意,然而,某些协议的设计使得只有预期的接收器才能理解请求,并且只有发送者能够解释结果:对于那种流量,您只能观察到发送和返回的纯噪声,并且无法完成任何操作没有打破沟通。