所以有人在Instagram上发送照片链接:http://instagr.am/p/QSVkR8LS3H/
这会从http://t.co/bOJ4EX2j重定向到http://instagr.am/p/QSVkR8LS3H/到照片所在的实际Instagram页面http://instagram.com/p/QSVkR8LS3H/。
冷却。一切都很好,很好。现在我想要一个cURL按照推文链接下载最后一页,其中包含< img>这张照片。脚本看起来基本上是这样的:
$target = 'http://t.co/bOJ4EX2j';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt ($ch, CURLOPT_POST, FALSE);
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); // Defined Constant
curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT); // Defined Constant
curl_setopt ($ch, CURLOPT_USERAGENT, WEBBOT_NAME); // Defined Constant
curl_setopt ($ch, CURLOPT_URL, $target); // Target site
curl_setopt ($ch, CURLOPT_REFERER, ''); // Referer value
curl_setopt ($ch, CURLOPT_VERBOSE, FALSE); // Minimize logs
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // No certificate
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt ($ch, CURLOPT_MAXREDIRS, 4); // Limit redirections to four
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return in string
# Create return array
$return_array['FILE'] = curl_exec($ch);
$return_array['STATUS'] = curl_getinfo($ch);
$return_array['ERROR'] = curl_error($ch);
# Close PHP/CURL handle
curl_close($ch);
return $return_array;
现在这个脚本有更多的组件,但这只是cURL部分的一部分。现在,它确实设法吐回它落在图像所在的正确的最终页面http://instagram.com/p/QSVkR8LS3H/) - 但这就是$ return_array ['FILE']吐出的内容:
500 Server Error
An internal server error occurred.
即使你导航到浏览器中的页面,关闭了cookie,而没有登录Instagram(如果你的话),页面也会完全加载!
我到底错过了什么,不允许这个cURL脚本下载Instagram页面?!它适用于我尝试的几乎所有其他页面!只是没有Instagram.com?!
请有人帮助我解决这个问题的坚果 - 我非常感谢任何人可能提供的任何帮助或见解。
答案 0 :(得分:1)
如果您在服务器而不是本地计算机上运行此代码,则服务器和Instagram.com之间可能存在配置错误的代理。检查本地计算机上的代码,确保它也可以在同一台计算机上的浏览器中使用。
如果你得到这个工作,并发现,正如贾斯汀伍德所说,你有一个HTML页面,而不是你想要的图像,我可以帮助你使用一些PHP来获取图像URL(你可以拥有它)运行另一个cURL请求。)
答案 1 :(得分:0)
正如我们许多人所说,该代码似乎完全正常。我可以建议的是,确保错误报告已打开,然后检查基本目录中的PHP错误日志。
您可能还想检查是否在PHP.ini中启用了cURL模块。
不确定还有什么可能是错的。