【问题标题】:loading an html page on a different domain into a javascript variable (without a proxy) [duplicate]将不同域上的 html 页面加载到 javascript 变量中(没有代理)[重复]
【发布时间】:2014-12-31 19:39:39
【问题描述】:

我正在制作一个用于在 php 中将两个软件(IBM 的 TNPM 和 Network Weathermap)拼接在一起的胶水脚本。要使天气图 OVERLIBGRAPH 功能正常工作,我需要 TNPM 生成的图表的 url(它们是 PNG)。

现在 TNPM 似乎没有 API 来执行此操作,这些图表的 url 也不是非常可预测的。我对TNPM了解不多,所以我在这里可能错了。因此,我将其视为 Web 应用程序,并尝试从包含此图形的页面中抓取图形 url。

但是,我的脚本位于防火墙服务器上,并且通常通过转储获取其输入。它不能真正访问 TNPM(我的意思是我不能使用代理解决方案)。我的老板告诉我,打开防火墙以便我的胶水脚本可以像普通用户一样访问 TNPM 服务器需要很长时间。

所以我希望使用 javascript 从用户浏览器中抓取页面(大概是登录到 TNPM)。但是我将以这种方式遇到相同的原产地政策。

它需要在 Internet Explorer 8 中工作。其他浏览器无法直接获取我想要的图形(可能是由于 TNPM 上的一些嗅探器禁止其他浏览器)。

我不知道解决方案,但也许有人知道在这种情况下可能有效的跨域策略的方法?

更新:问题将通过打开防火墙从服务器端解决。所以我不再需要答案了,尽管我仍然很感激。

【问题讨论】:

  • 我已经阅读了另一个问题的答案。他们没有解决我的问题,因为他们都使用服务器端适配或网络服务。通过让为 mashup 提供服务的服务器获取 html(充当代理)或被抓取的服务器应以特定格式提供数据。

标签: javascript php internet-explorer web-scraping cross-domain


【解决方案1】:

我会尝试以下看起来很有希望的文章,来自:Mads Kristensen

基本上,它利用漏洞通过 JavaScript 更改 document.domain,并允许 iframe 与其位于同一域中的父级之间进行通信,方法是使用指向您要访问的网站 IP 的代理服务器从中提取数据。

E.G:

网站域 - a.mysite.com

“其他”域 - www.articles.com

代理服务器域 - b.mysite.com(指向“www.articles.com”IP,作为 DNS 中的 A 记录)

用法:

  1. a.mysite.com 使用 src="b.mysite.com" 实现 iframe 并设置 document.domain = "mysite.com"
  2. b.mysite.com 设置document.domain = "mysite.com"

【讨论】:

  • 我无法使用代理解决方案,因为我无法更改防火墙设置,而且它似乎阻止了任何传出连接(curl whatever.com 不起作用)。我正在寻找一个严格的客户端解决方案。
猜你喜欢
  • 2019-04-08
  • 2014-10-24
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
相关资源
最近更新 更多