这是我对流行且技术上具有挑战性的HTML injection into someone else's website?问题的跟进。
回顾一下:我想向客户演示我的技术,而无需实际修改他们的实时网站(例如,在不修改实时网站的情况下演示Stackoverflow财务奖励的想法)。基本上,我正在尝试创建Greasemonkey的服务器端版本。
我按如下方式实现了镜像:
http://myserver.com/forward?uri=[remote]
[remote]
的连接,下拉数据并将其正文/标题返回到来自#1的请求。我选择了这种语法,因为我需要处理来自多个域的请求(意味着,如果stackoverflow.com
链接到meta.stackoverflow.com
我需要处理来自同一转发服务器的两个域。)
我设法重写了HTML和CSS文件中的链接,因此它们与我的服务器相关。最后一个障碍是重写Javascript文件引用的URL。
以编程方式重写其他人的Javascript代码引用的网址的最佳方式是什么?这在技术上是否可行?
我将举例说明我面临的技术障碍。以http://www.honda.com/为例。他们在页面上嵌入了Flash元素,但不是直接嵌入<object>
,而是使用Javascript来document.write()
包含该网址的<object>
标记。
理想情况下,我们希望在渲染之前拦截DOM更改,因此浏览器在我们有机会重写之前不会请求URL。
相关资源:
秒>服务器端解决方案无效。即使我可以重写所有DOM URL,我也看到了一个嵌入式Flash应用程序引用存储在Javascript变量中的URL的示例。没有编程方法可以检测到这些变量代表URL,因为Flash应用程序是不透明的。
接下来,我计划尝试客户端解决方案。我将在一个框架中加载原始网站,并在第二个(隐藏)框架中使用Javascript操纵其内容。我希望能够注入新的DOM元素(演示我的产品),而不必重写现有的元素。
答案 0 :(得分:1)
非常具有挑战性和有趣的任务。我会首先在我的服务器上保存javascript文件,然后从提供的HTML中引用它们。然后我会找到文件中的URL(使用正则表达式或其他东西)并将其替换为所需的值。我知道它不是很快,它不是很动态,但我相信它会更容易实现。
希望我帮忙!
答案 1 :(得分:-1)
回答我自己的问题。
经过大量研究,我发现这种技术效果最好:https://stackoverflow.com/a/23231268/14731
换句话说,似乎没有一种通用算法来重写链接。手工修补它们并不像你期望的那么多。