我一直在使用php curl为我的学校的网络创建一个登录脚本,但我遇到了一个障碍。我有我的脚本登录,但主页是由框架组成的。内容不显示任何一个框架,说服务器上找不到网址。每个框架的url都是相对的,所以浏览器在我的服务器上查找文件而不是其他服务器(显然不会找到它们)。我用CURLOPT_REFERER设置了referer字段,但问题依然存在。有没有简单的方法来解决这个相对的URL问题?如何在框架中使用PHP CURL?
1
A
回答
1
首先,我想说我知道这是一个古老的问题,但我在搜索curl解决方案时碰到过几次,并认为这对其他人寻找这个答案会有所帮助。
问题澄清
据我了解,你能看到的框架,但你不能看到框的内容,因为框架的src属性是相对的。你也希望通过php curl来关注框架。
示例代码
<?php
// Simple curl function
function get_page($url){
$msg = "";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
if (!curl_errno($ch)) {
$msg = $html;
} else {
$msg = 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
return $msg;
}
// Desired domain
$domain = "http://www.w3schools.com";
$page_content = get_page("$domain/tags/tryit.asp?filename=tryhtml_iframe");
// Display fetched page
var_dump($page_content);
// Navigate dom to iframe in question
$xml = new DOMDocument();
@$xml->loadHTML($page_content);
$path = new DOMXPath($xml);
$forms = $path->query("//iframe[@id='iframeResult']");
$relative_uri = "";
foreach ($forms as $form) {
// Should be only 1 result
if (strtolower($form->getAttribute('id')) === strtolower("iframeResult")) {
$relative_uri = $form->getAttribute('src');
}
}
// Display fetched iframe
$page_content = get_page("$domain/tags/$relative_uri");
var_dump($page_content);
?>
注意事项例
我选择www.w3schools.com因为我猜测,他们的榜样将有一段时间没有改变,可能会得到更好的比一些随机选择的网站准时。
我还想指出,w3schools网站上的正确示例框架本身是一个相对框架,而不是它们显示的实际示例框架!通过在元素检查器中搜索iframeResult
来寻找自己。
运行实例
页被导航
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe
PHP卷曲的例子,为什么您使用的导航卷曲的页面
相关问题
- 1. 如何在PHP和cURL中使用OAuth?
- 2. 如何在php中使用curl?
- 3. 如何在php-curl中使用CURLOPT_LOGIN_OPTIONS?
- 4. 如何使用twitter框架在iOS 5.0中使用bitly框架?
- 5. 如何在没有使用框架的PHP中使用MVC
- 6. 如何让PHP使用curl?
- 7. 是否有(PHP)Web Scraping框架使用Curl而不是file_get_contents?
- 8. 如何开始使用PHP框架?
- 9. 实现URL在PHP中使用框架
- 10. 在php框架中使用节点js
- 11. 如何启用PHP curl在php中使用cli
- 12. 如何在cakephp中使用框架?
- 13. 如何在Spring框架中使用ORM ...?
- 14. 如何在windows phone中使用框架?
- 15. 如何在npm中使用css框架
- 16. 如何在框架中使用jquery
- 17. 如何在Unity中使用iOS框架?
- 18. 如何在Yii框架中使用jQuery?
- 19. 如何在zend框架中使用phpThumb()
- 20. 如何在Yesod中使用CSS框架?
- 21. 如何在yii2框架中使用joinwith
- 22. 如何在WinRT中使用框架?
- 23. 如何在框架中使用System.Guid.Parse 3.5
- 24. 如何在iOS中使用aubio框架?
- 25. 如何在EmberJS框架中使用RethinkDB?
- 26. 如何在Volt框架中使用Carrierwave?
- 27. 如何在Django中使用html框架
- 28. 如何在LWUIT框架中使用CSS?
- 29. 如何在Mercurial中使用Symfony框架?
- 30. 如何在Swift框架中使用Cocoapods?
?框架应该在html中定义,并且地址应该是绝对url,如果它是来自另一个服务器的页面。 – cambraca 2010-10-25 04:23:26
我不编码登录页面,我试图构建一个脚本,该脚本自动将我记录到学校的网络和收集页面日期。问题在于学校的登录主页由2个框架和相关的url组成。所以当我执行脚本时,浏览器正在搜索我的服务器(它只是托管脚本)而不是学校的服务器。有没有一种简单的方法可以让curl查找与脚本托管地址不同的地址处的所有相关url? – 2010-10-25 17:56:54