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

如何在PHP中模拟浏览器从Instagram URL获取HTML/JSON数据?

替代Instagram官方API获取页面帖子JSON数据的实现方案

既然Instagram官方API已经暂停服务,要获取Instagram页面的帖子JSON数据,我整理了一套可行的PHP实现代码,亲测能满足需求:

// 开启URL访问权限
ini_set("allow_url_fopen", 1); 

// 构造请求变量,可调整first的值控制每次获取的帖子数量
$urlvars = urlencode('{"id":"'.$user_id.'","first":12,"after":"'.$end_cursor.'"}'); 

// 拼接GraphQL请求URL,需替换$__query_hash为有效哈希值
$url = "https://www.instagram.com/graphql/query/?query_hash={$__query_hash}&variables={$urlvars}"; 

// 构造请求上下文,模拟浏览器User-Agent避免被拦截
$context = stream_context_create( 
    array( 
        "http" => array( 
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0" 
        )
    )
);

// 发起请求并解析JSON数据
$response = file_get_contents($url, false, $context);
$json_data = json_decode($response, true);

几个关键注意事项一定要记好:

  • $__query_hash:这个是Instagram GraphQL接口的专属哈希值,会不定期更新,你需要通过浏览器开发者工具抓取目标帖子列表请求的query_hash来替换
  • $user_id:目标Instagram页面的用户ID,同样可以通过开发者工具查看页面请求或者第三方工具获取
  • $end_cursor:用于分页加载更多内容,第一次请求时可以将这个值设为空字符串,后续每次请求都从返回的$json_data['data']['user']['edge_owner_to_timeline_media']['page_info']['end_cursor']中提取新的游标值
  • User-Agent必须设置:Instagram会拦截非浏览器标识的请求,所以一定要保留这个请求头设置

内容的提问来源于stack exchange,提问作者saleh mosleh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:54