【问题标题】:Python or C++: Hijack http request to modify destination [closed]Python 或 C++:劫持 http 请求以修改目标 [关闭]
【发布时间】:2013-11-10 01:04:24
【问题描述】:

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

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

示例

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

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

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

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

提前感谢您的帮助。

【问题讨论】:

  • 你必须做一个代理。客户端连接并依次连接到真实服务器的程序。这是唯一的方法。
  • 所以您想在客户端 PC 上运行代码并在运行时调整来自浏览器的请求?
  • @JoachimPileborg 这听起来就像我需要的一样,如果你知道的话,你能指出任何资源。我也会尝试谷歌搜索。 Mailerdaimon,我还没有任何代码。我正在寻找一个起点(一种方法,不完全是代码)。我表示有兴趣在 Python 或 C++ 中执行此操作的原因是确定它们是否足以提供所需的功能

标签: c++ python http caching


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的意见@6502。在我关闭线程之前,您是否有任何资源可以参考我?再次感谢。
  • @Sthe:添加了一些链接,见编辑
猜你喜欢
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2011-03-22
  • 2011-04-27
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多