0

我想开发一个平台,用户可以在其中输入 URL,然后我的网站将以iframe. 现在用户只需右键单击即可修改他的网站,我将为他提供“删除此元素”、“复制此元素”等选项。我快结束了。许多网站都可以完美打开,iframe但对于一些网站,出现了一些错误。我无法确定原因,因此寻求您的帮助。

我已经解决了其他问题,例如 XSS 问题。
这是我遵循的过程:-
使用 JavaScript 并将请求发送到我的 Java 服务器,该服务器连接到用户指定的 URL 并获取 HTML,然后使用 Jsoup HTML 解析器将相对 URL 转换为绝对 URL,然后保存HTML 到我的 Java 磁盘。然后我将保存的 HTML 渲染到我的iframe.

有什么地方不对吗?
一些网站运行良好,但有些则不然。

例如:-
当我试图打开http://www.snapdeal.com它给了我 Uncaught TypeError: Cannot read property 'paddingTop' of undefined 错误。我不明白为什么会这样。。

更新 我真的很想知道这是如何实现的?@ http://www.proxywebsites.in/browse.php?u=Oi8vd3d3LnNuYXBkZWFsLmNvbQ%3D%3D&b=13&f=norefer

4

3 回答 3

1

2期,随便挑一个:

  • 您的服务器端代理代码包含错误
  • 许多网站要么有明确的帧中断代码,要么至少期望是顶级帧。
于 2012-04-14T06:28:30.460 回答
0

我的代理服务器端代码:-

DateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss");
    String dirName = df.format(new Date());

    String dirPath = "C:/apache-tomcat-7.0.23/webapps/offlineWeb/" + dirName;
    String serverName = "http://localhost:8080/offlineWeb/" + dirName;

    boolean directoryCreated = new File(dirPath).mkdir();
    if (!directoryCreated) 
        log.error("Error in creating directory");

    String html = Jsoup.connect(url.toString()).get().html();
    doc = Jsoup.parse(html, url);

    links = doc.select("link");
    scripts = doc.select("script");    
    images = doc.select("img");

for (Element element : links) {
        String linkHref = element.attr("abs:href");
        if (linkHref != "") {
            element.attr("href", linkHref);
        }
}

for (Element element : scripts) {
    String scriptSrc = element.attr("abs:src");
    if (scriptSrc != "") {
        element.attr("src", scriptSrc);
    }
}

for (Element element : images) {
    String imgSrc = element.attr("abs:src");
        if (imgSrc != "") {
            element.attr("src", imgSrc);
            log.info(imgSrc);
        }
}

现在我只是返回我保存我的html文件的路径这就是我的服务器代码

于 2012-04-14T06:34:36.423 回答
0

你可以再尝试一件事。在您的代理脚本中,您将网页保存在磁盘上,然后加载到 iframe 中。我认为不要在 iframe 中加载您保存在磁盘上的页面,而是尝试在浏览器中打开该页面。所有那些限制其页面加载到 iframe 的站点现在都将被打开而不会出现任何错误。试试这个,我认为这是一项工作

于 2012-04-15T08:47:41.103 回答