如何为充当哑代理的Web框架编写路由/视图/控制器?

时间:2010-02-27 22:28:37

标签: django sinatra proxy-server

也就是说,让我说我正在写一些托管在foo.com上的东西。我希望转到foo.com/bar.com的用户可以bar.comfoo.com bar.com,并且能够与foo.com/bar.com/baz进行互动(例如通过点击导航到{{1}}。我知道这是代理应该做的事情。我需要对访问代理的请求进行一些预处理,这就是为什么我要转向Web框架。我喜欢django,rails或sinatra,或者其他python / ruby​​解决方案,但任何人都会这样做。

提前致谢;欢迎提出其他建议。

2 个答案:

答案 0 :(得分:0)

我只能谈论django,但是......

如果您只想在多个网站上使用相同的对象/数据,请查看django sites framework

对于重定向,我会建议redirects app

或者您只是在视图中使用redirect shortcut

答案 1 :(得分:0)

首先,您需要在foo.com上解析URL。在django你可以有这样的网址(未经测试):

url(r'(?P<url>.*)$', my_proxy_view, name = 'proxy')

所以http://foo.com/bar.com/baz/会为您提供一个“bar.com/baz/”的网址,您可以在视图中随意使用。

然后你必须使用像urllib2这样的库在bar.com上检索页面。

当您拥有远程页面的内容时,您需要更改指向bar.com的所有链接(锚元素)以指向代理的URL。如果您想代理图像,样式表和JavaScript,您还需要更改这些链接。

您可能希望尽可能多地缓存。并确保在urllib请求上设置一个用户代理,让其他站点知道这是某种机器人或代理。


话虽如此,这听起来像是一个非常愚蠢的想法。你的用例是什么?