首页 > 解决方案 > 亚马逊产品图片 URL 的 cURL 仅在 localhost 中有效

问题描述

我已经得到了一个 cURL 脚本来工作,以便它从亚马逊获取产品的图像,但它只适用于本地主机,在我的网站上它不起作用。

请问有人可以帮我让它工作吗?

function getHTML($url,$timeout)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    return @curl_exec($ch);
}

$html=getHTML("https://www.amazon.com/dp/B003B7Q5YY",10);

    preg_match_all('/,"large":"(.*?)",/', $html, $output);
        foreach ($output[1] as $key=>$value) {

        echo $value;

    }

标签: phpcurl

解决方案


首先,您需要确保已安装并启用 curl

if (function_exists('curl_version')) {
  // CURL is installed and enabled.
}

安装 curl 扩展可以这样完成:

sudo apt-get install php7.3-curl

您将需要更改包名称php7.3-curl以匹配您的 php 版本。

根据您运行 php 的方式,您可能需要重新启动 Web 服务器或 php fpm 服务:

sudo service apache2 restart
sudo service php7.3-fpm restart

当我在本地尝试此操作时,我注意到响应已压缩,因此我需要Accept-Encoding使用以下方法设置标头:

curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

推荐阅读