如何在Perl中编写缓存HTTP代理?

时间:2009-04-03 22:00:16

标签: perl http caching proxy

我打算使用HTTP::Proxy模块在​​Perl中编写一个简单的HTTP代理。 我很清楚如何创建代理和基本过滤器和东西的基本任务。但我无法理解的是如何通过缓存手动强制提供文件。

基本上,这种情况是我在计算机A中运行此代理。计算机B访问Web的用户使用此代理。现在,这个代理只是作为所有B请求的传递,直到他请求一个特定的URL(一个文件,比如http://abc.com/file.zip)。我需要拦截这个请求,而不是让他下载实际的file.zip,给他一个已经下载的文件,我手动保存在计算机A上。

另外,请注意我可能没有在计算机A上运行的Web服务器,因此我不能只重定向该URL,我需要从缓存中提供它。

任何指针都将受到赞赏。 感谢

编辑:更多信息。我开始组合使用HTTP :: Daemon和LWP :: UserAgent而不是HTTP :: Proxy 到目前为止,我成功拦截了所有请求,然后在头部搜索url。如果不存在特定文件名,我只需使用LWP:UserAgent(simple_request)将请求传递给实际目的地,并使用send_response将响应返回给原始发件人。如果我找到文件名,我不会进一步转发请求,而是尝试使用“send_file_response”方法提供我的特定文件。问题是所有其他请求都正常工作,并且comp B能够上网,但当它尝试下载此文件时,它只是在等待响应。 关于使用鱿鱼,我不能在这些机器上安装鱿鱼。

2 个答案:

答案 0 :(得分:3)

仅仅使用Squid来做这样的事情会不会更好?

答案 1 :(得分:1)

我认为从远处看,我们只能猜测send_file_response不起作用。 我推荐

  • 阅读并理解您正在使用的模块和方法的文档

  • 以某种方式在代理服务器中记录操作(开始,结束)

  • 跟踪客户端B和代理服务器之间的通信。