获取instagram post的json

问题描述 投票:0回答:1

我正在尝试获取instagram帖子的json。提取数据的网址:

$url = "https://www.instagram.com/p/" . $_GET['media'] . "/?__a=1";

当我得到这个浏览器中的URL-一切正常时,返回json。顺便说一句浏览器未登录instagram。但是,当我使用curl或file_get_contents($url);时,它会将带有标头“位置”的http代码302返回到登录页面。

代码示例:

$url = "https://www.instagram.com/p/" . $_GET['media'] . "/?__a=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json') );
$data = curl_exec($ch);
curl_close($ch);

var_dump($data);

请帮助修复它,可能是卷曲选项应该修改为看起来像浏览器。

我将添加100赏金代表正确答案。

php curl instagram-api
1个回答
0
投票

原因很简单,您正在尝试访问受身份验证保护的Web资源(这很明显)。卷曲请求失败的原因是因为它缺少Cookie标头,该标头将您和您的会话标识为受服务器信任。在某个时候,您最有可能使用浏览器登录,这就是该请求在您的浏览器中起作用的原因-但不是curl / php逻辑。

要么从浏览器会话中借用cookie,然后将其临时实现到curl请求中,要么在发送curl请求之前实现登录逻辑。但是您应该做正确的事情,并开始使用Magnus Eriksson在评论中指出的Instagram API

推荐以后使用。

© www.soinside.com 2019 - 2024. All rights reserved.