【问题标题】:How to load other websites using server side php (Laravel) like Hypothes.is or ProjectHuddle?如何使用服务器端 php (Laravel) 加载其他网站,如 Hypothes.is 或 ProjectHuddle?
【发布时间】:2017-03-28 01:55:51
【问题描述】:

我想知道如何完成https://hypothes.is/https://projecthuddle.io/ 之类的事情 这样用户可以提供自己的 URL,服务器使用服务器端 PHP 加载外部网站,并在其上嵌入一些 iframe 层以添加注释。

当您加载外部 URL 时,它会转到像 https://via.hypothes.is/https://www.google.ca/?gws_rd=ssl 这样的 url,并加载实际站点而不是将其放入 iframe,并将 iframe 插入页面以对其进行注释。

起初我的方法是只使用 iframe,但问题是我无法将自己的注释等插入实际网站。

我正在使用 Laravel 5.4 和 PHP。任何帮助是极大的赞赏。谢谢。

【问题讨论】:

  • file_get_contents(),卷曲。如果需要,只需抓取整个页面重写 urls\images 和其他路径。
  • 是的,我也想过。感谢您的回复。我同意这是个好主意,只是不确定如何处理所有相关链接和非绝对 url,尤其是当用户可以浏览页面中的其他 url 时。
  • 因为你可以看到类似的页面:via.hypothes.is/https://accounts.google.com/… ive 将它们报告为欺骗性网站
  • 大声笑……什么……?好的,但是这个用于注释的 wordpress 插件做了类似的事情。 projecthuddle.io 我认为现在加载不同的网站而不是使用 iframe 并不罕见。我同意它不应该能够加载登录页面。
  • 他们甚至不遵循机器人文本文件,他们充其量是不道德的。

标签: javascript php laravel iframe


【解决方案1】:

回答你最初的问题:

$pageContent = file_get_contents($url);

效果很好。

关于更改链接,我将从 xpath 查询开始,并根据您自己的 URL 将 href 调整为绝对值。可能是这样的:

$doc = new DOMDocument();
$doc->loadHTML(file_get_contents($url));
$xpath = new DOMXPath($doc);
foreach ($xpath->query("a[starts-with(@href, '/')") as $a){

}

我会留给你修改和重新打印 DOM。

【讨论】:

  • 谢谢,我试试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 2016-12-04
  • 2017-11-03
  • 2016-03-23
  • 2011-05-31
相关资源
最近更新 更多