【问题标题】:How to screen scrape across origins in an IFRAME?如何在 IFRAME 中筛选跨来源的刮擦?
【发布时间】:2014-05-06 23:49:34
【问题描述】:

我有一个商业网络应用程序需要从其他各种网站中提取信息。对于大多数站点,用户只是指示服务器提取数据(使用 .NET 的 HttpRequest 或 Selenium)。

但是对于一些不友好、大量使用 Javascript 的网站,我们的用户必须手动访问该网站,导航到正确的位置,然后复制并粘贴到我们的应用程序中。

除了小书签之外,我们的页面是否有任何方式显示已加载源网站的 IFRAME,允许用户在框架内导航,然后捕获 IFRAME 的正文? p>

由于 IFRAME 中的站点不在同一个域中(甚至不接近),我似乎无法解决浏览器跨站点脚本限制。我尝试使用 HTML5 的“沙盒”功能,但它似乎只允许以 other 方式进行通信(通过“allow-same-origin”),从 IFRAME 到主机站点,这不是对我没用。此外,如果相关站点尝试将其框架加载到顶部上下文,它也不起作用。

理想情况下,我正在寻找一种解决方案,它允许将浏览器配置为隐式信任我的网站(它是一个 Intranet 应用程序)并允许它访问任何框架的内容。这至少会让我进入球场。如果我可以让 iframe 将“顶部”上下文重新定义为它自己的框架,那么奖励积分,因此托管站点在框架内正常运行。

【问题讨论】:

  • Google Analytics 为他们的 In Page Analytics 功能所做的是他们使用页面具有的 Google Analytics 脚本来与页面通信(我假设使用 postMessage)。
  • 它被称为在服务器上做。安全存在是有原因的。想象一下,如果我可以绕过它并阅读您的电子邮件/银行帐户。其他选择是使用 Yahoo Pipes 之类的服务。

标签: javascript iframe xss browser-security


【解决方案1】:

我通过许多屏幕抓取项目(抓取 JS 重页)找到的最佳方法是创建用户脚本或 Greasemonkey 脚本,在自己的 IP 空间中设置一些虚拟机(用于保护)并提供给它们从远程程序访问的站点列表:

  1. 按设定的时间间隔检查队列
  2. 带有 Greasemonkey 等的请求页面
  3. 捕获内容并发送到远程程序进行处理

你不能使用 iframe 方法,而且你会在试图走这条路线时撞到墙上,我描述的方法已经适用于许多大型抓取项目。

【讨论】:

  • 谢谢罗伯。我一直在使用小书签作为穷人的 Greasemonkey,小书签在目标页面内创建自己的表单并将 HTML 发布到我的网站。对于一些对脚本更友好的类似工作,我会记住 GM-in-VM。
  • 没问题,这类任务是我最喜欢的! :) 祝你的项目好运
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2016-06-02
  • 2022-01-02
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多