Я работал с php curl, чтобы создать сценарий входа в сеть моей школы, но я попал в ловушку. Я получил свой скрипт для входа в систему, но главная страница состоит из фреймов. Содержимое не отображается для любого фрейма, говоря, что URL-адрес не найден на сервере. URL-адреса для каждого из кадров относительны, поэтому браузер просматривает мой сервер для файлов вместо другого сервера (и, очевидно, их не найдет). Я установил поле referer с CURLOPT_REFERER, но проблема не устранена. Есть ли простой способ обойти эту проблему относительного URL-адреса?Как использовать PHP 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
- 2. Как использовать OAuth с PHP и cURL?
- 3. Как сохранить полную html-страницу с включенными фреймами/фреймами?
- 4. Как использовать базовое разрешение в PHP curl
- 5. PHP: Как использовать запрос DELETE в curl?
- 6. Разработка с устаревшими фреймами
- 7. Как использовать CURLOPT_LOGIN_OPTIONS в php-curl?
- 8. PHP - Как использовать Curl with Kerberos
- 9. Как использовать php cURL на локальном бродяге?
- 10. Как использовать cURL & PHP для подмены ссылки?
- 11. Как использовать php curl вместо командной строки
- 12. Использовать curl в php-скрипте
- 13. Использовать API с php и cURL
- 14. Как использовать MSBuild для нескольких приложений с различными целевыми фреймами
- 15. Как использовать Curl с HEADERS?
- 16. cURL Войти с PHP
- 17. как вставить с php curl?
- 18. FTPS с CURL PHP
- 19. php & CURL - как до
- 20. Использовать прокси с cURL?
- 21. PHP preg_match_all с Curl
- 22. pyramid AuthTktAuthenticationPolicy с другими фреймами
- 23. Как использовать IP-адрес другого сервера с PHP/cURL?
- 24. Как использовать IP-адрес пользователя с PHP/cURL?
- 25. Как использовать curl -T/- upload-file с POST в PHP?
- 26. GWT: Макет сайта с фреймами
- 27. Как использовать multi cURL с import.io
- 28. Выполнение Curl с PHP
- 29. cURL to PHP cURL
- 30. Fileupload с curl. Php
Почему вы используете локон? Фреймы должны быть определены в html, и адрес должен быть абсолютным URL-адресом, если это страница с другого сервера. – cambraca
Я не кодирую страницу входа, я пытаюсь создать скрипт, который автоматически регистрирует меня в сеть школы и собирает дату страницы. Проблема в том, что начальная страница школы состоит из 2 кадров с относительными URL-адресами. Поэтому, когда я запускаю скрипт, браузер ищет мой сервер (который просто содержит сценарий) вместо сервера школы. Есть ли простой способ сказать завиток, чтобы искать все относительные URL-адреса на другом адресе, чем адрес, на котором размещен скрипт? –