Как с помощью 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); Заранее благодарен всем отозвавшимся.
Для того чтобы с помощью 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 для загрузки каждого ресурса отдельно.
Помните, что загрузка ресурсов с другого домена может вызвать проблемы безопасности, так как некоторые сервера могут блокировать запросы с других доменов. Поэтому убедитесь, что у вас есть разрешение на загрузку ресурсов с другого домена.
Для того чтобы с помощью 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 для загрузки каждого ресурса отдельно.
Помните, что загрузка ресурсов с другого домена может вызвать проблемы безопасности, так как некоторые сервера могут блокировать запросы с других доменов. Поэтому убедитесь, что у вас есть разрешение на загрузку ресурсов с другого домена.