是否可以使用PHP模拟iFrame,以便访问非托管页面的DOM?

是否可以使用PHP模拟iFrame,以便访问非托管页面的DOM?,php,dom,include,same-origin-policy,Php,Dom,Include,Same Origin Policy,我正在进行一个项目,我想将一个网页(我没有托管)的内容加载到一个我托管的网页中,并能够访问非托管页面的DOM 如果有人对是否有可能实现这一目标有任何建议,我很乐意听取一些反馈意见。也许PHP甚至不是答案。也许我完全错了。在这一点上,我绝对愿意接受任何建议 谢谢你的阅读, DJS您可以在PHP中使用curl将网页加载到变量而不是IFrame中,然后使用包装在布局中的PHP输出变量的内容。这样,所有内容的DOM都应该可以通过JavaScript访问。正如ronnied所回答的,您可以使用CURL加载

我正在进行一个项目,我想将一个网页(我没有托管)的内容加载到一个我托管的网页中,并能够访问非托管页面的DOM

如果有人对是否有可能实现这一目标有任何建议,我很乐意听取一些反馈意见。也许PHP甚至不是答案。也许我完全错了。在这一点上,我绝对愿意接受任何建议

谢谢你的阅读,
DJS

您可以在PHP中使用curl将网页加载到变量而不是IFrame中,然后使用包装在布局中的PHP输出变量的内容。这样,所有内容的DOM都应该可以通过JavaScript访问。

正如ronnied所回答的,您可以使用CURL加载页面。您可以在加载的页面上使用简单的正则表达式查询来更新所有链接。以下代码应该为您指明正确的方向,特别是查找preg_replace和preg_replace_回调:

//Regular expression to deal with links...
function replaceCallback($match){ 
    $url = $match[3];
    ...
    return $match[1].$match[2].$replacement.$match[4];
}

//$html is curl'd page contents
$pattern = "/(<a.*?href\s*=\s*)('|\")(.*?)('|\")/i";
$html = preg_replace_callback($pattern,'replaceCallback',$html);    
//处理链接的正则表达式。。。
函数replaceCallback($match){
$url=$match[3];
...
返回$match[1]。$match[2]。$replacement.$match[4];
}
//$html是卷曲的页面内容

$pattern=“/(将远程页面html加载为curl,然后直接将其内联转储到您的页面中,这样您就可以访问其dom@Dave-他这么做了,这是唯一的方法,但还有一个问题-包含页面上的链接会让人们远离所提到的“应用程序”“。这是一个不太容易解决的问题。正如afxdesign所说的简单解决方法,在输出到AppRonnied之前重写dom时,只需在嵌入链接上使用正则表达式即可。我可以将url卷曲到页面中,但是当我尝试卷曲IP地址时,我什么也得不到。下面是我使用的代码:
//如果(!function_exists('curl_init'))die('curl未安装');//创建一个curl资源处理程序(curl handler=ch)$c=curl_init();//设置选项$c=curl_init('http://192.168.1.xx/u/r/l“);curl_exec($c);$output=curl_exec($c);curl_close($c);echo$output;