Instagram粉丝统计剧本把我难倒了。(PHP)
我有一个脚本,可以显示客户Instagram关注者的股票代码(&Q;)。
几周(或几个月)前,它停止工作,并且刚刚显示了";0";。
我已经尝试了FILE_GET_CONTENTS和cURL,但似乎都不起作用。
或者更准确地说...它们工作大约5秒,然后再次停止。
奇怪的是,如果我转到图形URL(https://www.instagram.com/account_name_here/?__a=1),我可以看到它吐出的JSON,无论我重新加载页面多少次。
但是,正在运行以下代码:
$ch2 = curl_init();
$url = "https://www.instagram.com/account_name_here/?__a=1";
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL,$url);
$result=curl_exec($ch2);
curl_close($ch2);
$data = json_decode($result, true);
$followerCount = $data['graphql']['user']['edge_followed_by']['count'];
echo "Followers: ".$followerCount;
不吐任何东西。
对该代码的其他各个部分执行var_ump(),包括$Result和$data,强化了这样一种想法,即实际上没有什么东西被拉进来。
例如,如果我执行var_ump($RESULT),它会输出:
字符串(0)
尤其令人恼火的是,当我第一次改用curl来替代FILE_GET_CONTENTS时,它起作用了。然后,当我将其上传到网站后,它再次停止工作。知道我在这里错过了什么吗?为什么当我转到实际的Instagram URL时,我可以很好地看到数据,但只要我尝试通过PHP拉取它,它就不起作用了?
TIA!
解决方案
考虑使用以下代码‘调试’该问题:
$info = curl_getinfo($ch2);
echo "Followers: " . $followerCount . PHP_EOL;
echo "HTTP: " . $info['http_code'] . PHP_EOL;
echo "URL: " . $info['url'] . PHP_EOL;
记录此信息,但出现与您所述相同的问题(前3个请求工作正常,然后显示NULL
显示此信息;
NULL
Followers: ?
HTTP: 200
URL: https://www.instagram.com/accounts/login/?next=/account-name/%3F__a%3D1
该问题似乎是Instagram将请求重定向到登录页。
请查看有关API登录请求的this答案。
相关文章