Как с помощью curl подгрузить все css/js/картинки страницы? Здравствуйте. У меня следующая проблема.
Требуется с помощью cURL получить страницу и отобразить её на своем домене. Проблема в том, что на странице также имеются различные файлы css, js и картинки. Честно признаться, я не до конца понимаю принципов работы cURL-а, но в консоли разработчика я вижу, что он пытается все эти дополнительные файлы подгрузить, но получает 404 ошибку, поскольку пути к этим файлам прописаны относительно и за основной домен cURL принимает мой домен, а не сайт донора.
Подскажите пожалуйста, есть ли решение этой проблемы и если есть, как её можно решить?
Текущий код скрипта:$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://site.com');
//curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath("cookie.txt"));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath("cookie.txt"));
curl_exec($ch);
curl_close($ch);
Заранее благодарен всем отозвавшимся.

21 Авг 2019 в 06:31
268 +1
0
Ответы
1

Для того чтобы с помощью cURL подгрузить все css/js/картинки страницы, вам нужно сначала получить содержимое HTML страницы и затем извлечь из него ссылки на все необходимые ресурсы (css/js/картинки). Далее вы можете загрузить каждый из ресурсов отдельно.

Для этого вам нужно модифицировать ваш код следующим образом:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://site.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // возвращает содержимое страницы
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath("cookie.txt"));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath("cookie.txt"));
$html = curl_exec(ch);curlclose(ch);
curl_close(
ch);curlc lose(
ch);
// Парсим HTML страницу и находим все ссылки на ресурсы
dom=newDOMDocument();@dom = new DOMDocument();
@
dom=newDOMDocument();@
dom->loadHTML(html);html);
html);
links = $dom->getElementsByTagName('link');
$scripts = $dom->getElementsByTagName('script');
$images = $dom->getElementsByTagName('img');
foreach ($links as $link) {
$url = $link->getAttribute('href');
// Загрузка css файлов
// Вы можете использовать curl для загрузки каждого ресурса отдельно аналогично загрузке страницы
}
foreach ($scripts as $script) {
$url = $script->getAttribute('src');
// Загрузка js файлов
}
foreach ($images as $image) {
$url = $image->getAttribute('src');
// Загрузка изображений
}
// Отобразите полученный HTML на вашем домене

В этом коде мы используем DOMDocument для парсинга HTML страницы и извлечения ссылок на все необходимые ресурсы. Затем мы можем использовать cURL для загрузки каждого ресурса отдельно.

Помните, что загрузка ресурсов с другого домена может вызвать проблемы безопасности, так как некоторые сервера могут блокировать запросы с других доменов. Поэтому убедитесь, что у вас есть разрешение на загрузку ресурсов с другого домена.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир