在自己的域上显示远程网站内容的正确方法

Posted

技术标签:

【中文标题】在自己的域上显示远程网站内容的正确方法【英文标题】:Correct way showing remote website content on own domain 【发布时间】:2021-04-28 09:07:06 【问题描述】:

我很感兴趣像 adf.ly 这样的网站如何在他们的广告客户放置的用于促销的案例网站中显示远程网站内容,底部有自己的内容,比如“跳过广告”? 我需要显示附属页面,但从 Firefox/Chrome 警告我不能出于安全原因。 使用这样的代码:

<iframe src="https://cnn.com" width="100%" height="500" frameborder="0">

但是我看到使用在他们的网站上被混淆的 JS 代码,他们能够将其发布。我完全是 JS 的菜鸟,有没有办法在没有数百字节代码的情况下不破解浏览器,他们是否以某种方式解构整个网站,然后将其放回给使用 JS 或其他语言的用户;-)?任何方向都会很好,也许有一种更简单的方法可以通过 php 做到这一点,我不要求代码当然也许有人知道一个库。非常感谢。

【问题讨论】:

我认为 adf.ly 允许人们在自己的网页上放置广告,而不是在其他人的网页上。 好吧,我在 5 年前从他们那里购买了流量,他们为我提供了流量,因为我来自小国家,所以我自己看过我的网站 :) 我的网站也受到了攻击,当一些人在未知主机上镜像我的网站时,它看起来完全一样。 你能举一个例子,adf.ly 显示在一个网页上,但它本身没有集成到该页面中? 【参考方案1】:

由于您标记了有问题的 php,因此最简单的方法是 $copied = file_get_contents("https://link-to-site"); echo $copied;

【讨论】:

谢谢你仍然Konfuzed。我刚刚运行了代码,就我而言,我的输出还可以,不确定所有元素是否会对此进行更多研究,这已经解决了我的问题,再次感谢 ;-)【参考方案2】:

我检查了https://cnn.com 站点,它使用了一个名为content-security-policy 的标头。他们在其中指定了选项:

frame-ancestors 'self' https://*.cnn.com:* http://*.cnn.com:* https://*.cnn.io:* http://*.cnn.io:* *.turner.com:* courageousstudio.com;

这指定了可以使用<frame><iframe><object><embed><applet> 嵌入页面的有效父级。

您的浏览器显然符合此标头。

有一些方法可以避免这种情况,但这可能会变得复杂,我不确定我是否应该帮助您。

【讨论】:

非常感谢,我会同时检查的。

以上是关于在自己的域上显示远程网站内容的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

仅在特定域上加载 iframe

在他自己的域中的客户网站,如 tumblr

宽带连接时显示域上的用户名或密码无效而拒绝访问怎么回事

iframe 中的页面没有看到自己的 cookie

将静态内容与 Web 服务托管在不同的域上,如何避免跨域?

在TableView上的域上显示resultArray