首页 > 解决方案 > php curl 下载远程图片

问题描述

我有权使用合作伙伴网站上的图像自行进行 qork。

所以我尝试src使用 curl 从他们那里下载图像:

ini_set('memory_limit', '-1');
error_reporting(E_ALL);
ini_set('display_errors', 1);
$ch = curl_init();
$url = 'https://imgs.kenlo.io/VWRCUkQ2Tnp3d1BJRDBJVe1szkhnWr9UfpZS9bJDwnbk9Kawbnev1nxMNm9yHFhIP-MQkSx9WYNv23hLzO9I+z0StvcEfe6ggnXCx6+I286Lt3WU3rLdkIrG9OL9c8jv4qJ6-arDAl+tq417XfgQOV8gR8xCbkPFTqGKY2BopgOv92LEFusYUk1n0h8jsUZu6AHoQYT1sl0yxA2UXuyB8nTQCaC5XwwWUawNEtEw7ldR7AL0SVpntREFocalqyCZPuL1JoCihipUBAow-56-X7-hkZaPK5RkVqk2dXwP61MDUbcUm+6GWehj7QEYoKGTVkPBwEKa07d3JM+tW4tMnqVWwgaVGrAa6B-pxYyVhaWpZk7UOk5Bqu-A7fCxS+CyRv7jOCq8j4pBrN-bbYYZKprkVzEVTw==.jpg';
    //curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE );
    curl_setopt($ch, CURLOPT_REFERER, "https://www.ricimoveis.com");
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_URL, $url );
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE );
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $resource_ext_img_destaque = curl_exec( $ch );
    curl_close($ch);
    file_put_contents('/var/www/html/magickscp/dev-misc/fdp12.jpg', $resource_ext_img_destaque);

合作伙伴使用在服务器上存储图像的区域平台imgs.kenlo.io,显然该服务器使用了一些安全技巧来阻止此操作。

我注意到以下内容:

urlto img 可能有一个重定向,因为当我看到请求时有时 ai 有“200”或“301” 。

所以问题是,我需要对响应标头进行哪些评估才能使其正常工作?

标签: phpcurl

解决方案


推荐阅读