php - 亚马逊产品图片 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;
}
解决方案
首先,您需要确保已安装并启用 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');
推荐阅读
- sql-server - Flutter 通过身份验证上传和检索资产
- uwp - 无法测试 Windows.Services.Store 命名空间
- node.js - 将消息分成 2 个嵌入
- mysql - 如何根据另一列的值在 SQL 选择查询中创建/添加列作为返回输出?
- javascript - Vue 表单提交和异步 javascript 功能无法正常工作
- for-loop - 在 Windows 批处理脚本的 for 循环中未通过“查找”命令获得所需的输出
- r - 在ggplot中将POSIXct转换为朱利安日期
- javascript - 如何区分“child_changed”snapshot.key 和“child_removed”snapshot.key?
- ios - 长按图像时iOS14 WKWebView崩溃,createGraphicsContext()
- swift - 玩家通过平台