Это изображение не отображается правильно. Ссылка является действительным изображением, полученным через cURL-прокси. Когда вы наводите указатель мыши на ссылку в инструментах разработчика Chrome, она отображает изображение. Когда вы заменяете ссылку на изображение на обычном веб-сайте, это работает. Но по какой-то причине, когда оно отображается на веб-сайте «прокси», это не так.
справочная информация: в настоящее время я пытаюсь написать собственный прокси-подобный скрипт на PHP, используя cURL и заменяя все возвращаемые ссылки ссылками «прокси». Я столкнулся с проблемой на одном из тестируемых веб-сайтов (https://www.memrise.com/).
Вот код прокси:
<?php
$proxy_url = "http://localhost/tunnel/get.php?url=http://";
$proxy_url_https = "http://localhost/tunnel/get.php?url=https://";
// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1, // no idea
CURLOPT_URL => $_GET['url'], // url
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], // user agent
CURLOPT_FOLLOWLOCATION => true, // follows redirects
CURLOPT_CONNECTTIMEOUT => 20 // times out for 404 type things
));
// Send the request & save response to $resp
if (!curl_errno($curl)) {
$resp = curl_exec($curl);
$info = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
header('Content-Type: '.$info); // set correct content-type header
$resp = str_replace("http://", $proxy_url, $resp); // replace http urls
$resp = str_replace("https://", $proxy_url_https, $resp); // replace https urls
$base = 'http://localhost/tunnel/get.php?url='.$_GET['url'];
$resp = preg_replace('~(?:src|action|href)=[\'"]\K[^http]/?(?!/)[^\'"]*~',"$base$0",$resp); // replace relative paths with proxy ones. Example: <element src="stylesheet.css"> would change to <element src="https://proxy/website/stylesheet.css">
$resp = preg_replace('/integrity="(.*)" /', "", $resp); // had some issues with integrity since i'm modifying the returned resources, so i just removed it lol
echo $resp;
}
// Close request to clear up some resources
curl_close($curl);
прокси-сайт: https://puu.sh/DcwgF/9f7bbdade2.png
реальный сайт: https://puu.sh/Dcwi4/4cd3e28028.png
код прокси: https://puu.sh/DcwyO/93f0ea4b79.png
измененное изображение на реальном сайте: https://puu.sh/DcKgy/06dc36deaf.png
код прокси: https://puu.sh/DcKwU/6e3cebff77.php
сайт, на котором я тестировал: https://www.memrise.com/