如何使用Ruby on Rails或其他任何东西在我自己的域上渲染网站?

时间:2010-04-26 20:03:33

标签: ruby-on-rails ruby proxy

这是我想要实现的目标:

  1. 用户输入网址(例如http://google.com
  2. 获取页面,并在我自己的域中呈现它
  3. 遍历DOM(使用JS)和所有jazz
  4. 问题是我不想使用iFrame,因为那时我无法遍历加载页面的DOM。

    我能想到的唯一解决方案是解析相对URL的页面,并将它们设置为绝对值。可能无处不在。另一种方法是运行wget并将所有内容(甚至图像)保存在临时文件夹中。缩小这个是不可能的。

    还有其他想法吗?

1 个答案:

答案 0 :(得分:3)

听起来像一个简单的反向代理。您的rails后端可以使用open-uri在操作中加载站点,并呈现相同的HTML。

class ProxyController < ActionController::Base

  def get
    require 'open-uri'
    file = open params[:url]
    render :inline => file.read
  end

end

使用以下内容访问它:(不要忘记根据需要进行URL编码)

http://mysite.com/proxy/get?url=http://www.proxiedsite.com

您可以在呈现HTML之前进行一些解析,向页面添加您想要的任何内容,包括javascript。

我假设您将参考您代理的任何内容的使用条款。