You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP开发Instagram媒体下载器报错:Trying to get property 'graphql' of non-object

Instagram媒体下载器PHP报错排查

核心问题本质

两个错误根源都是数据解析失败:Instagram的页面结构或接口响应已变更,导致你拿到的内容并非预期的JSON对象/数组:

  1. Notice: Trying to get property 'graphql' of non-object:你试图访问->graphql的变量不是对象,可能是null、纯字符串或解析失败的无效JSON
  2. Warning: count(): Parameter must be an array or an object that implements Countable:改为数组访问后,传给count()的参数不具备可计数属性,证明你期望的数组根本不存在

分步排查修复

1. 先确认原始响应内容

在解析JSON前,先打印获取到的页面原始内容,判断是否遭遇反爬或页面结构更新:

$html = file_get_contents($url);
var_dump($html); // 先输出原始内容查看

如果看到验证码页面、跳转提示或非目标JSON内容,说明需要处理反爬:

  • 添加浏览器请求头(比如User-Agent),必要时带上登录后的有效Cookie
  • 优先考虑使用Instagram官方API(需申请权限,但稳定性远高于页面爬取)

2. 确保JSON解析完全有效

假设你是从页面中提取window._sharedData这类JSON数据,必须验证提取和解析过程:

// 示例:提取并解析_sharedData
preg_match('/window._sharedData = (.*?);<\/script>/', $html, $matches);
if (empty($matches[1])) {
    die("无法定位目标JSON数据");
}
// 用true强制转成数组,避免对象/数组混淆
$data = json_decode($matches[1], true);
// 检查解析是否成功
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析失败: " . json_last_error_msg());
}

很多时候是提取的JSON片段不完整,导致解析后得到null,进而引发后续错误。

3. 修复count()调用问题

必须先做存在性和类型检查,再调用count():

// 针对多图/视频的场景,先判断路径是否存在且可计数
if (isset($data['graphql']['shortcode_media']['edge_sidecar_to_children']['edges']) && is_countable($data['graphql']['shortcode_media']['edge_sidecar_to_children']['edges'])) {
    $mediaCount = count($data['graphql']['shortcode_media']['edge_sidecar_to_children']['edges']);
} else {
    $mediaCount = 1; // 单图/视频的默认情况
}

禁止直接对可能不存在的变量调用count(),必须先做校验。

4. 适配Instagram的结构更新与反爬

  • 打印解析后的$data数组,查看媒体数据的新路径(Instagram经常调整页面结构,旧的graphql路径可能已失效)
  • 替换file_get_contents为curl,设置完整请求头模拟真实浏览器:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
    'Cookie: 你的登录状态Cookie'
]);
$html = curl_exec($ch);
curl_close($ch);

内容的提问来源于stack exchange,提问作者Nitin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:50:39