4

我认为PHP没用,因为执行php后插入了iframe,还是我错了?

所以,我知道的唯一解决方案是使用 Javascript/jQuery。

例如,如果 JS 与 iframe 在同一页面上,这将起作用:

<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">

  $(function() {
    var myContent = $("#iFrame").contents().find("#myContent")
  });

</script>
</head>
<body>
  <iframe src="mifile.html" id="iFrame" style="width:200px;height:70px;border:dotted 1px red" frameborder="0">
     <div id="myContent">
        iframe content blablabla
     </div>
  </iframe>
</body>
</html>

但是我正在使用简单的 HTML DOM 库来抓取遥远的网页,例如:

$url = 'http://page-with-some-iframe.com/';
            $html = file_get_html( $url );

            // Find iframes and put them in an array
            $iframes_arr = array();
            foreach($html->find('iframe') as $element) {
                $iframes_arr[] = $element->outertext;
            }
var_dump($iframes_arr);
die();

但显然,没有返回任何内容;(,因为 iframe 是在 php 运行后显示的 ;(

所以,我在想我可能需要注入这段代码:

<script type="text/javascript">

  $(function() {
    var myContent = $("#iFrame").contents().find("#myContent")
  });

</script>

在存储在 $html 中的抓取页面的标题中。

知道如何获得这样的 iframe 内容,还是这种方法过于复杂并且确实存在一些更简单的解决方案?

4

2 回答 2

6

由于相同的来源策略,您将无法使用 javascript 访问 iframe 内的远程页面的文档。

If you know the URL of the page you can use PHP CURL to retrieve it

<?php 
        // Initialise a cURL object
        $ch = curl_init(); 

        // Set url and other options
        curl_setopt($ch, CURLOPT_URL, "http://page-with-some-iframe.com");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

        // Get the page contents
        $output = curl_exec($ch); 

        // close curl resource to free up system resources 
        curl_close($ch);  
于 2013-05-21T10:48:25.380 回答
1

It is not possible because of security policy. If you are able to get contents of remote iframe - you can steal someone's facebook or banking data with ease. Thats why all web browsers blocks this.

于 2013-05-21T10:53:40.070 回答