我一直在使用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