1

所以有人在 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?!

请有人帮我解决这个问题 - 我非常感谢任何人可能拥有的任何帮助或见解。

4

2 回答 2

1

如果您在服务器而不是本地计算机上运行此代码,则服务器和 Instagram.com 之间可能存在配置错误的代理。检查本地机器上的代码,确保它也可以在同一台机器上的浏览器中运行。

如果你得到这个工作并发现,正如贾斯汀伍德所说,你有一个 HTML 页面而不是你想要的图像,我可以帮助你使用一些 PHP 来获取图像 URL(然后你必须运行另一个cURL 请求)。

于 2012-10-03T00:01:18.303 回答
0

正如我们许多人所说,该代码似乎工作得很好。我只能建议您确保打开错误报告,然后检查基本目录中的 PHP 错误日志。

您可能还想检查 PHP.ini 中是否启用了 cURL 模块。

不确定还有什么问题。

于 2012-10-02T23:52:16.540 回答