以下代码同样为我捕获了一个网站。
<?php
$URL = "http://domain.com/embed.html";
$domain = file_get_contents($URL);
echo $domain;
?>
但是我应该添加哪些参数或过滤器才能仅获取站点的某个部分并能够删除或替换链接和内容,阻止scripts
*.
我还发现了一个用于通过不拒绝访问等jQuery
方式编辑外部页面的示例。iframe
但是,我不明白它具体是如何工作的,应该使用什么值来删除或替换链接和内容以阻止执行scripts
,你能解释一下吗?
$(document).ready(function(){
cleanit = setInterval ( "cleaning()", 500 );
});
function cleaning(){
if($('#frametest').contents().find('.selector').html() == "somthing"){
clearInterval(cleanit);
$('#selector').contents().find('.Link').html('ideate tech');
}
}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<iframe name="frametest" id="frametest" src="example.com" ></iframe>
我在这个问题中观察到 的新属性
HTML5
,可以直接以 aiframe
方式完成,但我不希望它在某些部分冻结,而不向我显示任何内容。
对于您正在尝试做的事情,我建议一些可以帮助您的正则表达式,但是,对于您需要的更具体的情况,您必须确定哪个正则表达式适合您的需求:
一旦通过以下方式获得 Web 内容:
为了删除某些标签,您可以应用(https://stackoverflow.com/questions/1886740/php-remove-javascript):
如果要替换某些特定文本,可以使用正则表达式或应用于 $domain 变量的 php str_replace 函数(http://php.net/manual/es/function.str-replace.php)
并且能够替换链接(https://stackoverflow.com/questions/14573553/php-file-get-contents-replace-all-urls-in-all-a-href-links)
我希望我能为你服务。
如果我理解正确,您尝试在您的另一个网页中显示(部分或修改)网页。
为此,您建议的替代方法之一是放置 iframe 并使用 javascript 修改内容。
如果您的页面和 iframe 页面不共享同一个域,这可能永远不会起作用。原因是这将是一个巨大的安全漏洞。
示例:我在 mydomain.com 上有一个网页,我添加了一个指向 gmail 的 iframe。如果不存在同源策略,我可以修改gmail网站,当用户使用我网站的iframe登录gmail时,他可以知道并保存使用的密码。甚至,即使他没有保存密码,他也可以在登录后阅读/访问电子邮件。
该限制也适用于相反的情况。如果它不在同一个域中,我无法从 iframe 访问来自父级的数据。
更多详情:
http://notasjs.blogspot.com/2013/09/politica-del-mismo-origen-same-origin.html
https://es.wikipedia.org/wiki/Pol%C3%ADtica_del_same_origin
您的问题的一个可能解决方案是使用您对 file_get_contents 的评论。但请记住:
因此,您不是在检索完整的网页,而只是在检索 html。因此,例如,如果您想检索图像,则必须检查检索到的 html 中的标签
<img>
(例如),并查找 susrc
以便发出新请求并检索图像。此外,您尝试检索的网页可能使用 ajax 来显示/修改某些内容。因此,使用 file_get_content 您只能获得网络的基本/初始状态。
如果您感兴趣的内容是通过 ajax 获得的,您应该检查页面发出的不同 http 请求,并为每个请求发出请求。
另请注意,从网站检索文本后,您可以使用preg_replace指令进行搜索和替换。preg_replace 可以使用正则表达式进行复杂的搜索和替换。
虽然也许更好的选择是使用html 解析器