Как с помощью 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
237 +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);
curl_close($ch);
// Парсим HTML страницу и находим все ссылки на ресурсы
$dom = new DOMDocument();
@$dom->loadHTML($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 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир