@vladmany

Как создать обертку для стороннего сайта с применением куков?

Нужно на моей странице отобразить сторонний сайт, под моей учёткой(нужно подкинуть куки при открытии этого сайта).

Сперва нагуглил iframe, но как я понял он не поддерживает сайты с https протоколом и нужный мне сайт не загружался. Потом искал решение этой задачи на беке(тоесть на php). Пытался использовать curl:
@ini_set('error_reporting', E_ALL);

@header("Content-type: text/html; charset=UTF-8");
$ch = curl_init('https://example.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: sessionid=6njht6ypdg535s2kfu2b9tlz1z5hxrew", "Referer: https://example.net/", "Origin: https://example.net/"));
curl_setopt($ch, CURLOPT_REFERER, 'https://example.net/');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$page = curl_exec($ch);
curl_close($ch);

$site = 'https://example.net/';

$page = str_replace("<head>", "<head>\n<base href=\"" . $site . "\" />", $page);
$page = str_replace("<HEAD>", "<head>\n<base href=\"" . $site . "\" />", $page);
echo $page;


Страница отображается, стили подхватываются, куки тоже, но запросы летят от лица моей локалки а не целевого сайта, из-за чего возникают ошибки доступа CORS policy:
spoiler

Access to fetch at 'https://example.net' from origin 'localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

И ещё проблема с сылками, вместо перехода по ним, нужно их пропускать через curl и отображать резуальтат на моём сайте.

Есть ли другой способ отображения стороннего сайта на странице с возможностью применить к нему куки и перемещаться по сайту внутри этой обертки? Либо можно как-то починить запросы с curl?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
PHP ту не нужен. Используйте nginx proxy для проксирования запросов со своего server на другой + nginx sub module для замены в ответах оригинального имени сервера на свой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы